Моделі з відкритими вагами стали достатньо добрими, щоб запуск LLM на власному залізі був реалістичним варіантом, а не дослідницьким проєктом. Родини Llama, Qwen, Mistral, Gemma і DeepSeek пропонують моделі від кількох мільярдів до сотень мільярдів параметрів, багато з них — за ліцензіями, що дозволяють комерційне використання. Для більшості компаній питання вже не «чи можемо?», а «чи варто і як?». У гайді — про рішення, інструменти, розрахунок заліза й операційну роботу, яку блоги вендорів зазвичай оминають.
Коли власний хостинг доречний
Self-hosting виправданий однією з чотирьох причин:
- Дані не можуть залишати вашу інфраструктуру. Регульовані дані, договори з клієнтами, що забороняють обробку третіми сторонами, секретна чи оборонна робота. Це найпоширеніша й найсильніша причина; див. приватність LLM-застосунків.
- Великий стабільний обсяг вузької задачі. Класифікація, видобування даних чи ембеддинг мільйонів елементів на день, коли мала донавчена модель на власних GPU вигідніша за потокенну оплату. Див. fine-tuning, RAG чи промпти.
- Вимоги до затримки чи роботи офлайн. Edge-розгортання, виробництва, on-premises продукти без надійного інтернету.
- Контроль. Фіксація точної версії моделі на роки, власні налаштування декодування, незалежність від змін політик вендора.
Зазвичай self-hosting не виправданий для універсальних асистентів, складних агентів і кодування, де фронтирні моделі через API залишаються суттєво сильнішими, а також для малих і нерівномірних обсягів, де GPU, що простоюють, коштують більше за виклики API. Багато команд приходять до гібриду: фронтирні API для складних задач, власні моделі — для чутливих чи масових.
Вибір сервера інференсу
| Інструмент | Найкраще для | Примітки |
|---|---|---|
| vLLM | Продакшен-обслуговування на GPU | PagedAttention, continuous batching, OpenAI-сумісний API, тензорний паралелізм, структурований вивід |
| SGLang | Високопродуктивне обслуговування, складні програми промптів | Кешування префіксів RadixAttention (Zheng et al., 2023) |
| Hugging Face TGI | Продакшен в екосистемі HF | Зрілий, добра інтеграція з HF Hub |
| Ollama | Машини розробників, невеликі внутрішні інструменти | Встановлення однією командою, бібліотека моделей, побудований на llama.cpp |
| llama.cpp | CPU, Apple Silicon, edge-пристрої | Квантизовані моделі GGUF, мінімум залежностей |
Ключова інновація vLLM — PagedAttention, що керує кешем ключів і значень уваги сторінками, як віртуальною пам'яттю, зменшуючи фрагментацію й дозволяючи значно більші батчі; стаття повідомляє про у 2–4 рази вищу пропускну здатність порівняно з попередніми системами за тієї самої затримки (Kwon et al., 2023). Разом із continuous batching — додаванням нових запитів у батч, що вже виконується, замість очікування — саме тому спеціалізований сервер обслуговує значно більше користувачів на GPU, ніж наївний скрипт.
Наш стандарт: Ollama для локальної розробки, vLLM для продакшену. Обидва надають OpenAI-сумісні ендпоінти, тож код застосунку лишається тим самим.
# vLLM-сервер у продакшен-стилі з OpenAI-сумісним API
vllm serve Qwen/Qwen2.5-14B-Instruct \
--max-model-len 16384 \
--gpu-memory-utilization 0.90 \
--enable-prefix-caching \
--api-key "$VLLM_API_KEY"
Розрахунок пам'яті GPU
Пам'ять GPU — головне обмеження. Домінують дві складові:
Ваги моделі: параметри × байти на параметр.
| Розмір моделі | FP16/BF16 | INT8 | 4 біти |
|---|---|---|---|
| 8B | ~16 ГБ | ~8 ГБ | ~5 ГБ |
| 14B | ~28 ГБ | ~14 ГБ | ~9 ГБ |
| 32B | ~64 ГБ | ~32 ГБ | ~18 ГБ |
| 70B | ~140 ГБ | ~70 ГБ | ~40 ГБ |
KV-кеш: росте пропорційно довжині контексту × кількості одночасних послідовностей. Для довгих контекстів і багатьох користувачів KV-кеш може перевищити ваги. Grouped-query attention у сучасних моделях його зменшує; кешування префіксів ділить його між запитами з однаковим системним промптом.
Емпіричні правила: залишайте 20–30% пам'яті GPU понад ваги для KV-кешу й активацій; один GPU на 24 ГБ комфортно обслуговує квантизовану модель на 8–14 млрд параметрів для невеликої команди; моделі на 32 млрд вміщуються на один GPU на 80 ГБ у FP16 або на 48 ГБ у квантизованому вигляді; моделі класу 70 млрд потребують кількох GPU або агресивної квантизації.
Квантизація
Квантизація зберігає ваги меншою кількістю бітів, зменшуючи пам'ять і часто пришвидшуючи роботу:
- GPTQ і AWQ — методи після навчання для 4-бітного інференсу на GPU з невеликими втратами якості (Frantar et al., 2022; Lin et al., 2023).
- FP8 добре підтримується на сучасних датацентрових GPU і для багатьох моделей майже не втрачає якості.
- GGUF-рівні квантизації (Q4_K_M, Q5_K_M, Q8_0…) — формат llama.cpp/Ollama для CPU й Apple Silicon.
Втрата якості залежить від моделі й задачі: міркування й неанглійський текст можуть страждати більше, ніж англомовний чат. Завжди оцінюйте квантизовану модель на власному наборі evals, зокрема українською, якщо це релевантно; див. evals для LLM.
Розгортання в Kubernetes
У продакшені запускайте сервери інференсу як навантаження Kubernetes на GPU-вузлах:
- Пул GPU-вузлів із NVIDIA device plugin або GPU operator; taints, щоб туди потрапляли лише поди інференсу.
- Сховище моделей: завчасно завантажуйте ваги на persistent volume або локальний кеш вузла; завантаження 30+ ГБ під час старту пода робить масштабування болісно повільним.
- Readiness-проби на ендпоінт моделі — завантаження великої моделі триває хвилини.
- Автомасштабування за довжиною черги чи завантаженням GPU, а не CPU; масштабування до нуля — лише якщо холодний старт прийнятний.
- Шлюз попереду (OpenAI-сумісний маршрутизатор або проксі на кшталт LiteLLM) для автентифікації, лімітів, маршрутизації між моделями й фолбеку на зовнішні API; див. надійність LLM API.
GPU-сервери європейських провайдерів для стабільних навантажень можуть бути значно дешевшими за гіперскейлерів; наш досвід економних кластерів описаний у статті Kubernetes на Hetzner.
Безпека й відповідність вимогам
Self-hosting перекладає відповідальність на вас:
- Автентифікуйте кожен ендпоінт. Відкриті порти інференсу регулярно знаходять і зловживають ними.
- Мережева ізоляція. Серверам інференсу в продакшені не має бути потрібен вихід в інтернет.
- Ланцюг постачання. Завантажуйте ваги з офіційних джерел, перевіряйте контрольні суми, віддавайте перевагу
safetensorsнад форматами на основі pickle і скануйте контейнери; див. безпека ланцюга постачання контейнерів. - Ліцензії. Ліцензії відкритих моделей різняться: деякі обмежують комерційне використання понад певну кількість користувачів чи для певних цілей. Фіксуйте ліцензію кожної моделі, яку розгортаєте.
- Логування. Промпти можуть містити персональні дані; застосовуйте ті самі строки зберігання й контроль доступу, що й для будь-якої іншої системи з такими даними; див. спостережуваність LLM.
- EU AI Act. Розгортання відкритої моделі у вашому продукті може тягнути зобов'язання залежно від способу використання; див. гайд з EU AI Act.
Повна вартість: чесне порівняння
Порівнюйте повну вартість володіння, а не погодинну ціну GPU з ціною токена:
| Стаття витрат | API | Власний хостинг |
|---|---|---|
| Інференс | За токен | GPU-сервери 24/7 (або зарезервовані), незалежно від використання |
| Інженерія | Лише інтеграція | Налаштування, оновлення, моніторинг, чергування |
| Якість | Фронтирні моделі | Відкриті моделі; може знадобитися більше роботи з промптами чи fine-tuning |
| Масштабування | Миттєве | Планування ємності, закупівлі |
| Відповідність вимогам | DPA вендора, оцінка передачі даних | Власні контролі, часто юридично простіше |
Груба оцінка точки беззбитковості: оцініть токени на місяць, помножте на ціни API для моделі порівнянної якості й порівняйте з вартістю GPU плюс 0,25–0,5 ставки інженера. Для багатьох навантажень малого й середнього бізнесу API вигідніші; self-hosting виграє на контролі даних і дуже великих обсягах. Перераховуйте кожні пів року — і ціни API, і якість відкритих моделей змінюються швидко.
Шлях впровадження
- Прототип на API, щоб довести сценарій і побудувати evals.
- Короткий список відкритих моделей, що вписуються у ваше залізо й ліцензійні обмеження; див. як обрати LLM.
- Запустіть їх локально в Ollama на наборі evals.
- Розгорніть vLLM на одному GPU-вузлі для пілотної групи; виміряйте затримку, пропускну здатність і якість.
- Посиліть: шлюз, автентифікація, моніторинг, автомасштабування, бекапи конфігурацій.
- Оптимізуйте: квантизація, кешування префіксів, спекулятивне декодування — мала чорнова модель пропонує токени, які велика перевіряє паралельно, скорочуючи затримку без зміни результатів (Leviathan et al., 2022), — і fine-tuning меншої моделі, якщо обсяг це виправдовує.
FAQ
Чи можна запустити корисну модель без GPU? Малі квантизовані моделі (до ~8 млрд параметрів) працюють на сучасних CPU й Apple Silicon через llama.cpp чи Ollama — підходить для внутрішніх інструментів з малим навантаженням, але повільно для багатьох одночасних користувачів.
Чи достатньо добрі відкриті моделі для української? Більші багатомовні відкриті моделі пристойно працюють з українською; малі помітно слабші. Тестуйте на власних задачах.
Чи self-hosting автоматично відповідає GDPR? Ні. Він прибирає передачу третім сторонам, але вам усе одно потрібні правова підстава, обмеження строку зберігання, контроль доступу й безпека даних, які ви обробляєте.
Як встигати за новими моделями? Тримайте застосунок за OpenAI-сумісним інтерфейсом, підтримуйте набір evals актуальним і оцінюйте нові релізи щокварталу.
Джерела
- Kwon et al. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention; документація vLLM.
- Zheng et al. (2023). SGLang: Efficient Execution of Structured Language Model Programs.
- Ollama і llama.cpp на GitHub.
- Frantar et al. (2022). GPTQ; Lin et al. (2023). AWQ.
- Leviathan et al. (2022). Fast Inference from Transformers via Speculative Decoding.
- Hugging Face. safetensors.