Дописи
avatar

#Claude #Codex # Спробував запустити локальний LLM на GPU Ryzen Zen3 (Порівняння та аналіз продуктивності Qwen3-8B Heretic CPU та GPU) Тримайся, AMD, тримайся Vulkan Думав, що це просто ігрова GPU — і не варто очікувати багато, і виявилось, що так і є Головний обмежувач — пропускна здатність пам’яті (маленький об’єм VRAM, тому використовується основна пам’ять; чекаємо на Mac M5 Studio) Найновіша архітектура AMD — Zen6, а тут — CPU трьох поколінь минулого (з вбудованим GPU) ---- # Порівняння та аналіз продуктивності Qwen3-8B Heretic CPU та GPU Дата вимірювання: 2026-11-02 / Система: Ubuntu ## Висновки - **GPU (вбудований Radeon) швидше завантажує промпти — приблизно в 2,5 рази швидше, ніж CPU.** - **Генерація тексту прискорюється лише на 1,1–1,2 рази.** Швидкість генерації обмежена швидкістю передачі даних пам’яті, оскільки вбудований GPU використовує ту саму пам’ять, що й CPU. - При використанні, як у OpenClaw, де кожного разу надсилаються довгі інструкції, **кешування промптів** має набагато більший ефект, ніж GPU: з другого разу час зменшився з ~7 хвилин до ~1 хвилини. ## Середовище вимірювання | Параметр | Значення | |---|---| | CPU | AMD Ryzen 7 7730U (8 ядер, 16 потоків, Zen 3) | | GPU | Вбудований AMD Radeon Graphics (Barcelo, еквівалент Vega 8) | | Пам’ять | 30 ГБ (за специфікацією — DDR4-3200 dual-channel; на реальному пристрої не перевірено) | | Пам’ять для GPU | 512 МБ власної VRAM + спільна пам’ять (GTT) ~15,4 ГБ. LM Studio може використовувати 10,59 ГiБ | | ОС / драйвери | Ubuntu 24.04.5 LTS, Mesa 25.2.8 (RADV) | | LM Studio | Безголовна версія (llmster), llama.cpp 2.66.0 | | Рантайм для CPU | `llama.cpp-linux-x86_64-avx2` | | Рантайм для GPU | `llama.cpp-linux-x86_64-vulkan-avx2` (усі шари розміщені на GPU, `--gpu max`) | | Модель | DreamFast/qwen3-8b-heretic Q4_K_M (5,03 ГБ) | | Налаштування завантаження | Довжина контексту 32768, кількість одночасних запитів 1 | ## Методика вимірювання - Надсилав однаковий промпт через API LM Studio (`/api/v0/chat/completions`) і порівнював результати для CPU та GPU. - Кожна умова виконувалася двічі. Другий раз промпт використовувався з кешу — тому **швидкість завантаження бралася з першого запуску**. - Швидкість генерації — це значення `tokens_per_second`, що повертає LM Studio. - Мислення перед відповіддю вимкнено за допомогою `/no_think`, `temperature` встановлено на 0. - Після вимірювання GPU пристрій охолоджувався 2 хвилини, потім проводилося вимірювання CPU. - Скрипти та записи знаходяться у файлових системах Ubuntu: `~/bench/bench.py`, `~/bench/run.sh`, `~/bench/result.log`. ## Результати ### Загальне порівняння | Параметр | Категорія | CPU | GPU | Розбіжність | |---|---|---|---|---| | Коротке запитання (24 токени), генерація 256 токенів | Швидкість генерації | 7,3 токени/с | 8,2 токени/с | 1,13x | | | Загальний час | 35,7 с | 31,4 с | | | Промпт 921 токен | Швидкість завантаження | 30,5 токенів/с | 76,3 токени/с | **2,5x** | | | Час до першого символу | 30,2 с | 12,1 с | | | | Швидкість генерації | 7,0 токенів/с | 8,0 токени/с | 1,13x | | Промпт 3 621 токен | Швидкість завантаження | 35,4 токени/с | 87,5 токенів/с | **2,5x** | | | Час до першого символу | 102,3 с | 41,4 с | | | | Швидкість генерації | 5,9 токенів/с | 7,2 токени/с | 1,2x | ### Детальні результати вимірювань | Метод | Параметр | Повтор | Промпт | Генерація | Загальний час | Час до першого символу | Швидкість генерації | |---|---|---|---|---|---|---|---| | GPU | Коротке запитання | 1 | 24 | 256 | 31,4 с | 0,50 с | 8,26 | | GPU | Коротке запитання | 2 | 24 | 256 | 31,2 с | 0,12 с | 8,23 | | GPU | Промпт ~1000 токенів | 1 | 921 | 32 | 16,0 с | 12,07 с | 7,97 | | GPU | Промпт ~1000 токенів (кеш) | 2 | 921 | 32 | 4,0 с | 0,14 с | 7,98 | | GPU | Промпт ~4000 токенів | 1 | 3621 | 32 | 45,7 с | 41,38 с | 7,18 || GPU | Приблизно 4 000 токенів запиту | 2 (кеш) | 3 621 | 32 | 4,5 секунди | 0,14 секунди | 7,22 | | CPU | Коротке запитання | 1 | 24 | 256 | 35,7 секунди | 0,73 секунди | 7,29 | | CPU | Коротке запитання | 2 | 24 | 241 | 32,8 секунди | 0,14 секунди | 7,36 | | CPU | Приблизно 1 000 токенів запиту | 1 | 921 | 32 | 34,7 секунди | 30,21 секунди | 7,03 | | CPU | Приблизно 1 000 токенів запиту | 2 (кеш) | 921 | 32 | 4,6 секунди | 0,15 секунди | 6,96 | | CPU | Приблизно 4 000 токенів запиту | 1 | 3 621 | 32 | 107,5 секунди | 102,30 секунди | 5,94 | | CPU | Приблизно 4 000 токенів запиту | 2 (кеш) | 3 621 | 32 | 5,4 секунди | 0,17 секунди | 5,96 | Одиниці запиту та генерації — токени; одиниця швидкості генерації — токени/сек. ### Виправлення Під час першого спрощеного вимірювання ми повідомили, що швидкість генерації на GPU зросла приблизно в 2,2 рази, але це було помилково. Значення в 3,86 токенів/сек для CPU було отримане під час обробки запиту довжиною близько 14 000 токенів на bot2. Оскільки з довгими запитами генерація стає повільнішою, порівнювати її зі значенням для коротких запитань було помилкою. При порівнянні за однакових умов різниця в швидкості генерації становить лише 1,1–1,2 рази. ## Чому використання GPU не призводить до значного прискорення ### 1. Генерація обмежена швидкістю передачі пам’яті Кожного разу, коли LLM генерує один токен, він завантажує всі ваги моделі з пам’яті. Верхня межа швидкості генерації визначається приблизно як: «швидкість передачі пам’яті ÷ розмір моделі». | Показник | Значення | |---|---| | Теоретична швидкість передачі пам’яті | Приблизно 51 ГБ/с при подвійному каналі DDR4-3200 | | Обсяг даних, що завантажуються на один токен | Приблизно 5 ГБ (вся модель) | | Теоретична верхня межа швидкості генерації | 51 ÷ 5,03 ≒ **приблизно 10 токенів/сек** | | Практичне значення (GPU) | 8,2 токени/сек (~80% від верхньої межі) | | Практичне значення (CPU) | 7,3 токени/сек (~70% від верхньої межі) | Вбудований GPU використовує ту саму основну пам’ять, що й CPU, тому верхня межа практично ідентична. Навіть з GPU залишається лише 10–20% простору для зростання швидкості до межі. Зовнішні GPU мають власну швидку пам’ять, тому їхня верхня межа значно вища. | GPU | Швидкість передачі пам’яті | Співвідношення з цим пристроєм Ubuntu | |---|---|---| | Вбудований GPU цього пристрою Ubuntu | Приблизно 51 ГБ/с (спільна з CPU) | 1x | | RTX 4060 | Приблизно 272 ГБ/с | Приблизно 5x | | RTX 4090 | Приблизно 1 008 ГБ/с | Приблизно 20x | ### 2. Завантаження залежить від обчислювальної потужності, але вбудований GPU має слабку обчислювальну потужність При завантаженні запиту багато токенів обробляються разом, тому швидкість визначається обчислювальною потужністю, а не швидкістю пам’яті. Саме тут проявляється перевага GPU — у практиці швидкість зросла в 2,5 рази. Проте цей GPU має такі обмеження, через які досягнуто лише подвоєння: | Обмеження | Опис | |---|---| | Мало обчислювальних блоків | Лише 8. Оцінка потужності: близько 2 TFLOPS у одинарній точності — у десятки разів менше, ніж у ігрових GPU | | Відсутність спеціалізованих схем для матричних операцій | Немає спеціалізованих схем на кшталт Tensor Core в NVIDIA | | Неможливість використання ROCm | Платформа ROCm для GPU AMD офіційно не підтримує цей вбудований GPU; працює через універсальний Vulkan | Для моделей розміром 8B потрібно приблизно 16 GFLOP на один токен. При потужності близько 2 TFLOPS теоретична верхня межа становить близько 120 токенів/сек. Практичні значення в діапазоні 76–88 токенів/сек — це приблизно 6–7% від теоретичної межі. ### 3. Чим довший запит — тим повільніша робота З ростом довжини контексту кожен токен посилається на багато попередніх токенів, що сповільнює як завантаження, так і генерацію. | Умова | Швидкість завантаження | Швидкість генерації | |---|---|---| | GPU, запит приблизно 1 000 токенів | 76 токенів/сек | 8,0 токени/сек | | GPU, запит приблизно 3 600 токенів | 88 токенів/сек | 7,2 токени/сек | | GPU, OpenClaw (15 686 токенів), першi 2 048 токенiв | 78,7 токенiв/сек | — | | GPU, OpenClaw (15 686 токенiв), середнє значення за всiм запитом | 44,1 токенiв/сек | 5,1 токени/сек | | CPU, OpenClaw (14 021 токенiв) | Приблизно 19,5 токенiв/сек | 3,86 токени/сек |До 3 600 токенів час завантаження навіть зменшився, оскільки обсяг обробки одночасно збільшився. Після 15 000 токенів швидкість завантаження впала до 46 токенів/с. ## Перевірка кешу в OpenClaw (bot2 mei) У тестовому сеансі я надіслав два повідомлення послідовно, використовуючи Qwen3, запущений на GPU. | Показник | Перше повідомлення | Друге повідомлення | |---|---|---| | Промпт, відправлений OpenClaw | 15 686 токенів | 15 744 токени | | Фактично завантажені токени | 15 686 (усі) | **135 (лише нові)** | | Час завантаження | 356,1 секунди | **6,1 секунди** | | Генерація | 247 токенів, 48,1 секунди (5,11 токенів/с) | 249 токенів, 48,5 секунди (5,11 токенів/с) | | Загалом | **410 секунд** | **58 секунд** | - OpenClaw завжди надсилає однаковий початок інструкції, тому друге повідомлення повторно використало вже оброблену частину (98%). - Більшість часу очікування у другому повідомленні — це приблизно 240 токенів міркувань. Навіть з `--thinking off` міркування не зупинилися. Якби їх можна було вимкнути, час очікування скоротився б до ~10 секунд. - Кеш не зникає з часом. Він зникає лише тоді, коли модель видаляється, коли інший процес перериває обробку (через обмеження в 1 одночасний процес) або коли діалог стискається. ## Варіанти прискорення Оскільки швидкість передачі пам’яті змінити неможливо, ефективніше зменшити обсяг завантаження на кожен токен. | Метод | Передбачуваний ефект | Примітки | |---|---|---| | Використання кешу промпту | Завантаження на другому і наступних повідомленнях — кілька секунд (підтверджено) | Може зникнути через переривання або стиснення | | Вимкнення міркувань Qwen3 | Зменшення часу на ~48 секунд на повідомлення | Якість відповідей може трохи знизитися | | Заміна на MoE-модель Qwen3-30B-A3B | Використовується ~3B ваг на токен; генерація може прискоритися в 2–3 рази, зростає розумність | Розмір ~18 ГБ, не вміщується в 10,6 ГБ GPU — частина оброблятиметься на CPU. Наявність версії без цензури невідома | | Перехід на меншу модель (Qwen3-4B) | Генерація приблизно в 2 рази швидша | Зниження розумності | | Використання спекулятивного декодування | Використання Qwen3-0.6B як чернетки; генерація прискорюється в 1,3–2 рази | Ефект залежить від контенту | | Додаткове квантування (Q3 тощо) | Покращення на 10–20% | Зниження точності | | Скорочення інструкції | Зменшення часу завантаження для першого повідомлення та після втрати кешу | Призведе до втрати функціональності | Ефекти у цій таблиці, крім кешу промпту, є оцінками — не перевірялися експериментально. ## Поточний стан (на 2026-11-03) | Показник | Стан | |---|---| | LM Studio | Зупинено. Автоматичний запуск вимкнено | | Обрана середовище виконання | Vulkan (GPU) | | bot2 (mei) | gpt-5.4-mini | | Порт для bot2 | Зупинено. Автоматичний запуск вимкнено | | Налаштування bot2 для Qwen3 | `~/.openclaw-bot2/openclaw.json.bak-qwen3-active-*` |

Цей контент призначений виключно для інформаційних та освітніх цілей. Він може містити думки третіх осіб, спонсорований контент або рекламні матеріали, за які автор може отримувати оплату. Жодна інформація в цій стрічці не є інвестиційною порадою чи гарантією прибутковості. Ви несете повну відповідальність за власні інвестиційні рішення. Перед початком торгівлі завжди проводьте власне дослідження та дотримуйтесь обережності. Ми не гарантуємо точність інформації від третіх осіб і не несемо відповідальності за будь-які збитки. Минулі результати не є показником майбутніх. Дивіться наші Умови спільноти та Заяву про ризики для отримання детальної інформації.

avatarОпублікуйте відповідь

Коментувати