VPS з GPU: коли він справді потрібен
Дізнайтеся, коли CPU VPS достатньо для моделей 7B–27B, embeddings і Whisper small, а коли GPU дає вищу швидкість та місткість для великих моделей.
Чи потрібен VPS з GPU, чи достатньо CPU?
VPS з GPU змінює 2 параметри під час самостійного запуску моделі: швидкість генерації токенів і максимальний розмір моделі, яка взагалі може поміститися в пам’яті. На інші параметри це не впливає. Якщо ваше навантаження — це квантизована чат-модель від 7B до 27B, яка відповідає одній особі за раз, створення embedding із низькою інтенсивністю або транскрибування мовлення за допомогою Whisper small, звичайний CPU VPS із достатнім обсягом RAM уже впорається із завданням. Почніть із CPU, виміряйте показник, який вас не влаштовує, а потім переходьте на потужнішу конфігурацію.
Причина — пропускна здатність пам’яті. Коли мовна модель генерує один токен, вона зчитує з пам’яті всі потрібні їй ваги. Модель 8B, квантизована до 4 бітів, займає на диску приблизно 4.7 GB і приблизно стільки ж у пам’яті, тому для створення одного токена потрібно передати близько 4.7 GB. Поділіть пропускну здатність пам’яті машини на це число — і отримаєте граничну кількість токенів за секунду. Цей простий розрахунок пояснює майже кожен benchmark, який ви прочитаєте.
Що насправді дає GPU
Пропускна здатність. Оперативна пам’ять DDR5 на сучасному хості передає десятки гігабайтів за секунду. Пам’ять GPU (VRAM, відеопам’ять) передає від сотень до понад тисячі гігабайтів за секунду. Співвідношення цих показників визначає приріст швидкодії, і він значний.
Швидкість за достатньої місткості. Сервер із CPU і 64 GB оперативної пам’яті може завантажити модель 70B у 4 біти. Вона працюватиме зі швидкістю, ближчою до читання, ніж до діалогу. GPU допомагає лише тоді, коли модель повністю вміщується у VRAM, оскільки після перенесення частини шарів до системної RAM знову починає діяти повільний шлях обробки.
Пропускна здатність пакетної обробки. Цей аспект часто недооцінюють. GPU, який генерує відповідь для одного користувача, більшу частину обчислювальних ресурсів не використовує, оскільки очікує на доступ до пам’яті. Якщо одночасно обслуговувати 20 запитів, те саме зчитування ваг використовується для всіх 20. Сумарна швидкість генерації в токенах за секунду зростає в кілька разів, а швидкість для одного користувача майже не зменшується. CPU не працює так само. Два одночасні користувачі на сервері з CPU приблизно вдвічі зменшують швидкість один одного. Якщо ви створюєте API, до якого звертається багато клієнтів, пакетна обробка є основним аргументом на користь GPU, важливішим за максимальну швидкість обробки одного потоку.
Обробка промптів. Зчитування довгого промпту обмежене швидкістю обчислень, а не пам’яті. Саме тут GPU забезпечує найбільшу перевагу. Контекст на 30,000 токенів, обробка якого CPU займає хвилину, на GPU обробляється за кілька секунд. Це постійно помітно в системах пошуку, які додають документи до кожного запиту.
Орієнтовні значення та їх інтерпретація
Нижче наведено типові опубліковані показники для одного потоку для моделі 8B із 4-бітним квантуванням станом на July 2026. Це орієнтири порядку величини, а не гарантія. Ваші параметри квантування, довжина контексту та рушій інференсу можуть змінити ці значення.
The data behind this chart
[
{
"label": "8 vCPU, DDR4",
"mem_bandwidth_gbs": 40,
"tokens_per_sec": 6
},
{
"label": "16 vCPU, DDR5",
"mem_bandwidth_gbs": 75,
"tokens_per_sec": 11
},
{
"label": "24GB GPU",
"mem_bandwidth_gbs": 300,
"tokens_per_sec": 50
},
{
"label": "40GB data-centre GPU",
"mem_bandwidth_gbs": 1555,
"tokens_per_sec": 130
}
]У рядку для GPU на 24 GB наведено 50 токенів за секунду проти 11 для CPU-системи з DDR5. Це приблизно у п’ять разів більше, що відповідає співвідношенню пропускної здатності, а не різниці у необробленій обчислювальній потужності. Фактична пропускна здатність також нижча за результат ділення пропускної здатності на розмір моделі, оскільки опрацювання уваги для контексту, що зростає, додає навантаження, яке не враховує цей простий розрахунок.
Для порівняння, людина читає приблизно 5–10 слів за секунду. Показник від 15 токенів за секунду і вище для одного читача вже сприймається як нормальний темп введення тексту. Тому багато конфігурацій, що працюють лише на CPU, цілком придатні.
Оцінювання обсягу VRAM перед придбанням
Розмір файлу моделі — це мінімальна потреба, а не фактична вимога. Передбачте пам’ять для ваг, KV cache (кеш key-value, тобто пам’ять для кожного токена, яку зберігає механізм attention), а також приблизно 1 GB накладних витрат.
Практичне правило станом на July 2026: візьміть розмір файлу моделі в гігабайтах і додайте 20 відсотків для звичайного контексту від 8k до 16k. Моделі 8B розміром 4.7 GB потрібно приблизно 6 GB VRAM. Модель 27B у 4 біти займає близько 16 GB і потребує приблизно 20 GB. Модель 70B у 4 біти займає близько 40 GB і потребує відеокарти на 48 GB або двох менших відеокарт.
Для довгих контекстів це правило не працює. KV cache зростає лінійно зі збільшенням довжини контексту, а для 128k токенів його обсяг може перевищити обсяг самих ваг. Якщо ви плануєте використовувати довгі контексти, спочатку визначте обсяг пам’яті для кешу та перевірте, які можливості квантування кешу підтримує ваш рушій.
Перевірте, що фактично встановлено на машині
На GPU-інстансі спочатку переконайтеся, що драйвер бачить відеокарту.
nvidia-smiУ таблиці мають бути назва GPU, версія драйвера та обсяг використаної пам’яті із загального обсягу. NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver означає, що драйвер відсутній або модуль ядра не було перебудовано після оновлення ядра. У стандартному образі Ubuntu зазвичай потрібно виконати sudo apt install -y ubuntu-drivers-common && sudo ubuntu-drivers install, а потім перезавантажити систему, щоб завантажився новий модуль.
Для контейнерів самого драйвера недостатньо. Docker потребує NVIDIA Container Toolkit, щоб передати пристрій контейнеру.
sudo apt-get update && sudo apt-get install -y --no-install-recommends ca-certificates curl gnupg2
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockerПотім перевірте роботу передачі пристрою зсередини контейнера:
sudo docker run --rm --gpus all ubuntu:24.04 nvidia-smiМає відобразитися та сама таблиця. Рядок docker: Error response from daemon: could not select device driver із назвою можливості GPU, яку не можна задовольнити, означає, що toolkit встановлено, але Docker не було переналаштовано або перезапущено. Тому повторно виконайте рядок nvidia-ctk і перезапустіть Docker. У Compose еквівалентом є запис deploy.resources.reservations.devices, у якому driver має значення nvidia, а список можливостей містить gpu. Цей запис додається до звичайних визначень сервісів, описаних у розділі Docker Compose на VPS.
Виміряйте показники перед оновленням
Запустіть модель, яку плануєте використовувати, на наявному CPU-сервері та зафіксуйте результати. Для самостійного розгортання LLM за допомогою Ollama на VPS достатньо одного прапорця:
ollama run llama3.1:8b --verbose "Summarise the causes of the 1929 crash in 200 words."Вивід завершується часовими показниками. eval rate — це швидкість генерації в токенах за секунду. prompt eval rate — швидкість читання машиною ваших вхідних даних. Ці два показники підказують, яке оновлення допоможе: низьке значення eval rate вказує на проблему з пропускною здатністю пам’яті, а низьке значення prompt eval rate для довгих вхідних даних — на проблему з обчислювальною потужністю.
На машині з GPU перевірте, що модель справді завантажена на нього:
ollama psУ стовпці PROCESSOR відображається 100% GPU, якщо модель повністю вміщується, або значення на кшталт 43%/57% CPU/GPU, якщо це не так. Частковий розподіл зазвичай дає гірший результат, ніж очікується, оскільки кожен токен усе одно очікує на повільнішу частину.
Питання вартості
GPU-інстанси коштують у кілька разів дорожче за порівнянні CPU-інстанси. Оплата стягується за кожну годину їх роботи, а не за кількість згенерованих токенів. Постійно увімкнений GPU, який обробляє кілька запитів на день, — найдорожчий спосіб виконувати інференс. Ключовим фактором є завантаження: завантажений GPU має низьку вартість одного токена, а незавантажений — це чисті втрати.
Є три практичні підходи. Постійні робочі навантаження з низьким обсягом обробляйте на CPU VPS. Поодинокі складні запити надсилайте до hosted API та сплачуйте за токени. Орендуйте GPU погодинно для пакетних завдань, fine-tuning або масового створення embeddings, а після завершення знищуйте інстанс. Поєднувати ці підходи нормально. Описані в контролі витрат AI agent на постійно увімкненому VPS правила бюджетування також застосовні, але тут втрати виникають через простоювання, а не через кількість токенів.
Що й далі нормально працює без GPU
Векторизація в невеликих обсягах. Невелика модель embeddings обробляє сотні коротких документів за хвилину на кількох ядрах CPU, а індекс, який створюють один раз, не повинен працювати швидко.
Whisper small і base для транскрибування. Faster-whisper на CPU транскрибує майже в реальному часі для моделі small. Цього достатньо для конвеєра, який працює вночі.
Квантизовані чат-моделі обсягом приблизно до 27B для одного або двох користувачів. Повільно, але розбірливо й придатно для роботи.
Усе, що можна назвати пакетним завданням. Якщо ніхто не стежить за екраном, тривалість виконання є питанням планування, а не обов’язковою вимогою.
Що справді потребує GPU: навчання або донавчання, що виходить за межі невеликого адаптера, обслуговування багатьох одночасних користувачів, генерування зображень і відео, а також мовлення в реальному часі, де затримка є ключовою характеристикою.
FAQ
Скільки VRAM потрібно для моделі 7B або 8B?
Близько 6 GB для 8B-моделі з 4-бітним квантуванням і стандартним контекстом від 8k до 16k. Ваги займають приблизно 4.7 GB, а решта припадає на KV-кеш і близько 1 GB накладних витрат. Відеокарта на 12 GB залишає достатньо місця для довших контекстів. Якщо ви плануєте використовувати контекст 128k, розраховуйте обсяг кешу окремо, оскільки він може стати більшим за ваги.
Чи можна запускати Ollama без GPU?
Так. Ollama автоматично переходить на CPU і потребує лише достатнього обсягу RAM для розміщення моделі. Для 8B-моделі з 4-бітним квантуванням очікуйте приблизно від 5 до 12 токенів за секунду залежно від швидкості пам’яті. Для одного користувача це близько до швидкості читання. Довгі запити є основною проблемою на CPU, оскільки обробка контексту з 30,000 токенів обмежена обчислювальною потужністю і займає значно більше часу, ніж генерування відповіді.
Чому моя GPU лише трохи швидша за CPU?
Зазвичай причина полягає в тому, що модель не помістилася повністю у VRAM. Тому частина шарів працює на CPU, і кожен токен очікує на повільнішу частину системи. Виконайте ollama ps і перевірте, чи містить стовпчик PROCESSOR значення 100% GPU. Якщо відображається розподіл, використайте менше квантування або меншу модель. Інша поширена причина — короткий тест продуктивності, у якому час завантаження моделі переважає результати вимірювання.
Чи варто використовувати GPU VPS для одного користувача?
Зазвичай ні. Одна людина читає зі швидкістю від 5 до 10 слів за секунду, а CPU-сервер уже генерує токени швидше за цю швидкість для моделей обсягом приблизно до 13B. Для одного користувача витрати виправдані довгими запитами, генеруванням зображень і донавчанням. Найвагомішим аргументом є одночасне обслуговування багатьох користувачів, оскільки пакетна обробка дає змогу одній GPU відповідати на двадцять запитів майже за ті самі кошти, що й на один запит.
Орендувати GPU погодинно чи залишати її постійно увімкненою?
Орендуйте GPU погодинно, якщо навантаження виникає періодично: для донавчання, масового створення embedding або пакетного транскрибування. Залишайте її постійно увімкненою лише тоді, коли відеокарта постійно зайнята, оскільки оплата GPU-інстансу нараховується за час існування, а не за кількість згенерованих токенів. Для асистента з низьким трафіком CPU VPS або hosted API з оплатою за токени дешевший, ніж GPU, що простоює.