Локальна мовна модель для закритого контуру: як вибрати і перевірити
Універсально найкращої локальної моделі немає. Для контуру без інтернету обирають не «Llama чи Qwen» загалом, а конкретні ваги конкретної версії з конкретною ліцензією. Потім перевіряють дві речі: як модель справляється з вашими документами і чи справді вся система працює без зовнішніх звернень. Ні назва сімейства, ні слово «локальна» в описі цього не доводять.
У статті ми розбираємо три моделі з дослідження як приклади класів за розміром: Qwen3-8B, Mistral Small 3.1 24B і Llama 3.3 70B Instruct. Це не рейтинг ринку і не перелік найновіших моделей станом на жовтень 2026 року. Ці версії вийшли у 2024 і 2025 роках, і на момент читання можуть існувати новіші. Ми не проводили порівняльного запуску цих моделей, тому не публікуємо швидкостей чи результатів якості.
Після статті ви зможете скласти коротку матрицю вимог, відсіяти моделі за ліцензією й пам'яттю та спланувати пілот, результат якого стосуватиметься саме вашої задачі. Факти з карток моделей наведено за дослідженням від 11.10.2026.
Що означає повністю закритий контур
«Закритий контур» часто розуміють як «сервер без інтернету». Для мовної моделі цього мало. Систему, яка відповідає на запити, складає кілька частин, і кожна з них може тягнути зовнішню залежність.
Ваги моделі. Файли з параметрами, які завантажують з репозиторію автора. У закритому контурі їх переносять заздалегідь і перевіряють контрольні суми. Важливо зафіксувати, яку саме версію і в якому форматі (повна точність чи квантована копія) ви перенесли: від цього залежать і якість, і потреба в пам'яті.
Токенізатор і конфігурація. Окремі файли, які перетворюють текст на токени і задають шаблон діалогу. Якщо вони не лежать поруч з вагами, бібліотека може спробувати завантажити їх з інтернету під час першого запуску. У середовищі без мережі це закінчиться помилкою, а в середовищі з частковим доступом може тихо спрацювати і залишитися непоміченим.
Програмні залежності. Сервер інференсу, бібліотеки Python, драйвери GPU, контейнери. Їх збирають з офлайн-дзеркала пакетів або переносять готовими образами. Картка Qwen3-8B, наприклад, називає кілька інструментів локального запуску: Ollama, LM Studio, MLX-LM, llama.cpp, KTransformers, а для обслуговування запитів також vLLM і SGLang. Кожен з них має власні залежності, налаштування і ліцензію, яку перевіряють окремо від ліцензії ваг.
Оновлення. У закритому контурі нічого не оновлюється саме. Це плюс для контролю і мінус для безпеки: виправлення вразливостей у бібліотеках теж треба доставляти вручну за процедурою.
Логи. Сервер інференсу, проксі, система моніторингу і застосунок поверх моделі можуть записувати тексти запитів і відповідей. Закритий контур не скасовує правил доступу до цих журналів: у них можуть опинитися ті самі конфіденційні документи, заради яких контур будували.
Мережеві звернення. Перевірка закритості потребує налаштованих мережевих заборон і спостереження за мережею під час реальної роботи: під час старту, першого запиту, завантаження документа, перезапуску. Переконайтеся, що журналювання охоплює потрібні мережеві шляхи: відсутність записів у неповних журналах не доводить відсутності звернень.
Три кандидати як приклади класів
Модель на 8 мільярдів параметрів і модель на 70 мільярдів розв'язують різні задачі за різну ціну. Порівнювати їх за принципом «більше параметрів, отже краще» некоректно: більша модель вимагає більше пам'яті, зазвичай потребує більше обчислень за порівнюваної архітектури й точності і не гарантує кращого результату на конкретному типі документів. Нижче дані з карток моделей, без оцінок якості.
| Параметр | Qwen3-8B | Mistral Small 3.1 24B Instruct | Llama 3.3 70B Instruct |
|---|---|---|---|
| Клас за розміром | Близько 8 млрд (8,2 млрд параметрів) | 24 млрд | 70 млрд |
| Ліцензія ваг | Apache 2.0 | Apache 2.0 | Llama 3.3 Community License, окрема комерційна ліцензія |
| Контекст за карткою | 32 768 токенів нативно, 131 072 з YaRN | До 128 тис. токенів | 128 тис. токенів |
| Мови за карткою | Понад 100 мов і діалектів | Список мов у картці містить українську | 8 мов; української серед них немає |
| Інше з картки | Режими з міркуванням і без нього | Аналіз зображень; рекомендований сервер vLLM | Мови поза списком віднесені до непередбаченого використання без донавчання |
Окремо про мови, бо для української компанії це часто вирішальне. Картка Llama 3.3 перелічує вісім підтримуваних мов: англійську, німецьку, французьку, італійську, португальську, гінді, іспанську і тайську. Використання інших мов картка відносить до непередбаченого. Розробникам дозволено донавчати модель для інших мов за умови дотримання ліцензії й політики допустимого використання, і відповідальність за безпечне використання в такому разі лежить на них. Тому штатної підтримки української для цієї моделі обіцяти не можна. Якщо вона потрібна, закладайте в план перевірку умов ліцензії, адаптацію і окреме тестування.
Згадка мови в картці теж не є доказом якості. Те, що Mistral Small 3.1 перелічує українську, а Qwen3-8B заявляє понад сто мов, означає лише, що автори її не виключили. Як модель відповідає на ваших договорах, накладних чи листах клієнтів, покаже лише тест.
Три сценарії і що в них важливо
Пошук відповіді за документами. Співробітник ставить питання, система знаходить фрагменти документів і просить модель сформулювати відповідь з посиланням на джерело. Тут критичні дві якості: відповідати лише за наданим текстом і коректно казати «у документах цього немає». Довгий контекст корисний, але збільшує потребу в пам'яті.
Вилучення даних. Модель читає документ і заповнює поля: номер договору, дату, суму, контрагента. Тут важливі точність і стабільний формат відповіді. Невелика модель на такій вузькій задачі може бути достатньою, але це перевіряється тестом, а не припущенням.
Внутрішній помічник. Відкритий діалог на різні теми: чернетки листів, пояснення регламентів, допомога з текстами. Тут важливіші якість мови, вміння тримати інструкції і робота з кількома користувачами одночасно. Саме цей сценарій найчастіше штовхає до більшої моделі, і саме тут треба чесно порахувати навантаження.
Ліцензії і право використання
У локальному розгортанні є щонайменше два рівні ліцензій: ліцензія ваг моделі і ліцензія програм, які її запускають. Їх не можна змішувати. Відкритий сервер інференсу не робить відкритими ваги, і навпаки.
Для трьох прикладів картки вказують таке:
- Qwen3-8B поширюється за ліцензією Apache 2.0.
- Mistral Small 3.1 24B теж за Apache 2.0. Картка описує її як відкриту ліцензію для комерційного й некомерційного використання та модифікації.
- Llama 3.3 70B використовує окрему комерційну ліцензію Llama 3.3 Community License Agreement. Вона включає політику допустимого використання. Додаткові комерційні умови стосуються ліцензіата або його афілійованих осіб, чиї продукти чи сервіси на дату випуску Llama 3.3 мали понад 700 мільйонів активних користувачів за попередній календарний місяць. У цьому випадку потрібен окремий дозвіл Meta; це не універсальний поріг, який автоматично вимірюють щомісяця після встановлення.
Під час перевірки ліцензії шукайте відповіді на чотири питання:
- Комерційне використання. Чи дозволене воно без додаткових умов для вашого типу компанії і масштабу?
- Поширення. Чи можна передавати ваги або продукт на їхній основі клієнтам, наприклад як коробкове рішення на сервері клієнта? Які вимоги до позначень і текстів ліцензії діють у такому разі?
- Донавчання. Чи дозволена модифікація, і чи поширюються умови оригінальної ліцензії на донавчену модель?
- Обмеження використання. Чи є політика допустимого використання, і чи не потрапляє ваш сценарій у заборонені?
Квантовані копії моделей часто публікують треті особи. Перевіряйте, чи збережено в такій копії оригінальну ліцензію і чи відповідає вона версії, яку ви оцінювали. Остаточне рішення про ліцензійну відповідність ухвалює ваш юрист: ця стаття пояснює, на що дивитися, але не замінює юридичного висновку.
Обладнання і реальне навантаження
Пам'ять GPU витрачається щонайменше на дві речі: ваги моделі і KV cache. KV cache (кеш ключів і значень) зберігає проміжні результати обробки вже прочитаного тексту, щоб модель не перераховувала їх для кожного нового токена. Його розмір зростає з довжиною контексту і з кількістю запитів, які обробляються одночасно.
Ваги. Грубу оцінку пам'яті тільки під ваги можна порахувати самостійно: кількість параметрів помножити на кількість байтів на параметр. Для формату 16 біт це 2 байти на параметр. Для 4-бітного квантування близько 0,5 байта, але реальні формати додають службові дані.
| Модель | Параметри | Ваги у 16 біт (×2 байти) | Ваги в 4 біти (×0,5 байта, без службових даних) |
|---|---|---|---|
| Qwen3-8B | 8,2 млрд | ≈ 16,4 ГБ | ≈ 4,1 ГБ |
| Mistral Small 3.1 | 24 млрд | ≈ 48 ГБ | ≈ 12 ГБ |
| Llama 3.3 70B | 70 млрд | ≈ 140 ГБ | ≈ 35 ГБ |
Це арифметика лише для ваг, а не вимога до сервера. До неї додаються KV cache, активації, службова пам'ять сервера інференсу і запас. Для порівняння: картка Mistral Small 3.1 вказує, що для запуску на GPU у bf16 або fp16 потрібно близько 55 ГБ пам'яті GPU, тобто помітно більше за 48 ГБ самих ваг. Та сама картка стверджує, що квантована модель вміщується в одну RTX 4090 або MacBook з 32 ГБ пам'яті. Це заява автора для певних умов, а не гарантія для вашої довжини контексту і кількості користувачів.
Контекст. Велике вікно контексту в картці показує максимум, а не робочий режим. Якщо ви плануєте подавати в модель довгі документи, закладайте пам'ять під KV cache для такої довжини, помножену на очікувану кількість одночасних запитів.
Паралельність. Один користувач і двадцять користувачів о дев'ятій ранку створюють різне навантаження. Оцінюйте сценарій пікової години, а не середнього дня.
Квантування. Зменшує пам'ять і може прискорити роботу, але може і знизити якість на ваших задачах. Тому порівнюють не «модель», а пару «модель + квантування», і саме ця пара записується в результати пілоту.
Перевірка на даних компанії
Порівняння моделей має сенс лише тоді, коли всі кандидати отримують однакові завдання за однакових умов. Нижче запропонований, ще не проведений тест. Числа в ньому задають структуру, а не результати.
Запропонований пілот: 60 завдань
Підготуйте 60 знеособлених завдань на одній зафіксованій версії документів:
- 20 на пошук відповіді за документами, включно з питаннями, відповіді на які в документах немає;
- 20 на вилучення полів у заданому форматі;
- 20 на стислий виклад документа.
Для кожного завдання заздалегідь запишіть еталонну відповідь або критерії правильності. Включіть завдання тими мовами, якими реально працює компанія, зокрема українською, якщо вона робоча. Оцінювання проводять люди, які знають предмет, за однаковою інструкцією.
Таблиця результатів має такий вигляд. Клітинки порожні навмисно: їх заповнюють вимірювання.
| Модель і квантування | Пам'ять під навантаженням | Правильні відповіді | Коректні відмови | p95 затримки | Зовнішні мережеві звернення |
|---|---|---|---|---|---|
| Кандидат А, формат X | заміряти | з 60 | з питань без відповіді | заміряти | спостереження мережі |
| Кандидат Б, формат Y | заміряти | з 60 | з питань без відповіді | заміряти | спостереження мережі |
| Кандидат В, формат Z | заміряти | з 60 | з питань без відповіді | заміряти | спостереження мережі |
Що означають колонки. «Коректні відмови» показують, як часто модель чесно каже, що відповіді в документах немає, замість того щоб її вигадати. p95 затримки означає час, за який отримують відповідь 95% запитів; він краще описує досвід користувача, ніж середнє значення. Колонка мережевих звернень може дорівнювати нулю лише тоді, коли це підтверджено журналами мережі під час тесту, а не описом продукту.
Як міряти швидкість
Для навантажувального тесту сервера інференсу можна використати інструмент vLLM. Його документація пояснює метрики затримки: час до першого токена (TTFT), час між послідовними частинами потокової відповіді (ITL) і середній час на вихідний токен (TPOT). Вона також описує параметри навантаження: цільову частоту запитів, нерівномірність їхнього надходження і обмеження одночасних запитів. Приклад виводу в документації показує середнє, медіану і P99. Якщо вам потрібен саме p95, налаштуйте звіт відповідно або порахуйте його з сирих результатів.
Документація окремо попереджає: повторний прогін того самого тесту на тому самому сервері може повторно використати запити, що залишилися в кеші префіксів, і завищити пропускну здатність. Для чесного порівняння змінюйте набір запитів, перезапускайте сервер між прогонами або використовуйте режим, який скидає кеш.
Ще одна умова чесного порівняння: узгоджений протокол для всіх кандидатів. Та сама машина, та сама версія сервера, однакові налаштування генерації, однакова довжина вхідних і вихідних текстів. Інакше ви порівнюєте не моделі, а конфігурації.
Експлуатація без інтернету
Пілот закінчився, модель обрано. Далі починається частина, яку найчастіше недооцінюють: систему треба підтримувати роками без доступу до зовнішніх репозиторіїв.
Резервування. Зберігайте копії ваг, токенізатора, конфігурації, образів контейнерів і пакетів залежностей разом з контрольними сумами. Перевірте, що з цих копій можна відновити робочий сервер на чистій машині. Перевірка відновлення важливіша за сам факт резервної копії.
Доставка оновлень. Визначте процедуру: хто завантажує нову версію бібліотеки чи моделі за межами контуру, хто перевіряє контрольні суми і ліцензію, як файли потрапляють усередину і як відбувається відкат. Нова версія моделі означає повторний прогін вашого тесту з 60 завдань, а не лише заміну файлів.
Аудит мережевих звернень. Налаштуйте фаєрвол на заборону вихідних з'єднань за замовчуванням і журналювання спроб. Перевіряйте журнали після кожного оновлення: нова версія бібліотеки може додати звернення, якого не було раніше.
Журнали і доступ. Визначте, які тексти запитів і відповідей записуються, де і скільки зберігаються, хто має до них доступ.
Відповідальний інженер. Призначте людину, яка відповідає за конфігурацію, оновлення і повторні перевірки. Без власника закритий контур поступово перетворюється на сервер, про налаштування якого ніхто не пам'ятає.
Що зробити найближчим часом:
- Опишіть один сценарій (пошук, вилучення чи помічник) і мови, якими він працює.
- Відберіть два-три кандидати, перевірте їхні ліцензії і мовні обмеження за картками.
- Порахуйте пам'ять під ваги для потрібного формату і оцініть запас під контекст та паралельні запити.
- Підготуйте 60 знеособлених завдань з еталонними відповідями і проведіть пілот на однаковій конфігурації.
- Зафіксуйте заборону вихідних з'єднань і перевірте журнали мережі під час пілоту.
- Призначте відповідального інженера і опишіть процедуру резервування та оновлень до запуску, а не після.
Часті питання
Іноді, для певної моделі, квантування і навантаження. Картка Mistral Small 3.1, наприклад, стверджує, що квантована модель вміщується в одну RTX 4090. Але для вашої довжини контексту і кількості користувачів це треба виміряти: заміряйте пам'ять і p95 затримки під реалістичним навантаженням.
Ні. Залишаються права доступу до сервера, журнали з текстами запитів, резервні копії, процес оновлень і можливі зовнішні звернення окремих компонентів. Локальний запуск прибирає один ризик, передачу даних зовнішньому постачальнику моделі, але не решту.
Так. Якість на робочих мовах перевіряють на характерних документах компанії, а не виводять із загального рейтингу чи списку мов у картці. Для Llama 3.3 це особливо важливо: української немає серед восьми мов, заявлених у картці.
Консультація щодо локальної мовної моделі
За 15 хвилин із фахівцем з AI-інтеграцій обговоримо одну задачу, мови документів і пікове навантаження. Визначимо, з якого тесту почати вибір моделі для вашого закритого контуру.
Робоча задача
Пілот моделі
15 хвилин із фахівцем: визначимо перший тест моделі на ваших задачах і робочих мовах.


