Ця стаття має на меті бути максимально зрозумілою, щоб будь-який початківець міг легко освоїти локальне розгортання моделі та створити власний робочий процес.
Цього року вітчизняні відкриті великі мови були дуже активними. DeepSeek, Qwen, Kimi, GLM, MiniMax... нові моделі з'являються одна за одною, постійно відкриваючи свої ваги та починаючи конкурувати із закритими моделями зі США.
Але чим більше моделей, тим більше мене цікавить конкретне питання: чи можуть ці моделі не просто залишатися на веб-сторінках та в API, а бути справді встановлені на наші власні машини, підключаючись до локальних файлів, інструментів та робочих процесів?
Хоча ціна за одиницю токенів API загалом знижується, витрати залишаються високими при частих викликах та довгих текстах. У поєднанні з такими проблемами, як конфіденційність, мережа та контроль даних, локальне розгортання стає вибором дедалі більшої кількості розробників та підприємств.
Тож цього разу я хочу вибрати модель із складним розміром та репрезентативну для розгортання на одній машині, щоб пройти повний процес локального розгортання.
Головним героєм, зрештою, обрано Ling-3.0-flash, відкритий компанією Ant Bailing — модель Mixture of Experts (MoE) із загальною кількістю параметрів 124B. У мене якраз є NVIDIA DGX Spark, яка може її запустити.
Без зайвих слів, почнемо головне дійство.

01 Вступ до термінології
Перш ніж почати, давайте познайомимося з деякими термінами, пов'язаними з моделями, щоб усі були в курсі ✌🏻
Точність моделі
Одна й та сама модель часто має різні версії точності або квантування, які безпосередньо впливають на розмір моделі та поріг запуску.

Цього разу ми використовуємо офіційну версію Ling INT4, яка займає близько 71,75 ГБ.
Dense або MoE

Зверніть увагу, що 5,1B — це лише кількість параметрів, активованих за один вивід; повні ваги 124B все одно потрібно завантажити в пам'ять.
Інференс-двигун
Інференс-двигун відповідає за завантаження ваг, керування контекстом та паралельністю, а також надає інтерфейси. Це інструмент для запуску моделі, а не сама модель.

Цього разу ми обрали vLLM, оскільки поточна офіційна адаптація підтримує ваги INT4 Ling-3.0-flash та спекулятивне декодування MTP.
02 Встановлення та розгортання моделі
Спочатку представимо середовище встановлення: я використовую NVIDIA DGX Spark, оснащену чіпом GB10 та 121,6 ГБ уніфікованої пам'яті, що працює на Ubuntu 24.04 з архітектурою ARM64. Розгортається Ling-3.0-flash-INT4, а подальші тести пропускної здатності використовуватимуть локальний Qwen 3.8-27B як еталон.
Офіційна версія надає базову версію та різні версії точності, такі як FP8, FP4 та INT4. Ви можете вибрати відповідно до вашого обладнання.
Також є 8B Ling-3.0-tiny та його версії FP8, INT4. Користувачі зі звичайним Mac або однією 4090 можуть спробувати версії Tiny з низькою точністю.

Крок 1: Завантажте модель. Цього разу я використав офіційну версію INT4. Посилання для завантаження 👇🏻
- Hugging Face: Ling-3.0-flash-int4
- ModelScope: Ling-3.0-flash-int4
Якщо доступ до Hugging Face ускладнений, ви можете завантажити вручну з ModelScope. Після завантаження є 24 фрагменти safetensors, загальним об'ємом близько 71,75 ГБ. Також потрібно залишити місце для інференс-двигуна та KV Cache під час роботи.
Крок 2: Підготуйте середовище. Архітектура BailingMoeV3 Ling-3.0-flash досить нова. Я спробував використати GGUF з llama.cpp, але отримав помилку unknown model architecture: 'bailingmoe3'. Тому цього разу я безпосередньо використав офіційно адаптовану гілку vLLM:
1pip install uv2uv venv ~/my_ling_env3source ~/my_ling_env/bin/activate45git clone -b ling_3_0 https://github.com/inclusionAI/vllm-ling-v3.git6cd vllm-ling-v37VLLM_USE_PRECOMPILED=1 uv pip install --editable . --torch-backend=auto
Крок 3: Запустіть сервіс інференсу. Замініть шлях до моделі на ваші локально завантажені ваги INT4:
1vllm serve /path/to/Ling-3.0-flash-int4 \2 --served-model-name ling-int4 \3 --host 127.0.0.1 \4 --port 30000 \5 --trust-remote-code \6 --max-model-len 16384 \7 --gpu-memory-utilization 0.8 \8 --max-num-seqs 8 \9 --reasoning-parser ling3 \10 --speculative-config '{"method":"bailing_hybrid_v3_mtp","num_speculative_tokens":1}'
⚠️
Будь ласка, замініть шляхи в команді на фактичні шляхи на вашій машині.
Тут ліміт контексту встановлено на 16K, паралельність на 8, і увімкнено спекулятивне декодування MTP.
Примітка: MTP (Multi-Token Prediction) дозволяє моделі спробувати передбачити кілька токенів одночасно. Правильно передбачені частини можна прийняти безпосередньо, зменшуючи кількість обчислювальних раундів для генерації токенів один за одним і збільшуючи швидкість виводу.
Крок 4: Перевірте сервіс. Після запуску надішліть простий запит:
1curl -s http://127.0.0.1:30000/v1/chat/completions \2 -H "Content-Type: application/json" \3 -d '{"model":"ling-int4",4 "messages":[{"role":"user","content":"Привіт, представся одним реченням."}],5 "stream":true}'
Термінал починає повертати вміст потоково, що означає, що ця модель 124B працює локально.

03 Тестування продуктивності та можливостей моделі
- Пропускна здатність токенів Коли модель щойно запустилася, я провів раунд тестів, використовуючи вбудований бенчмарк vLLM. Усі 20 запитів було виконано, з вихідною пропускною здатністю 84,34 ток/с, загальною пропускною здатністю токенів 133,10 ток/с та рівнем прийняття MTP 67,35%.

Оригінальний вивід журналу 👇🏻
1============ Serving Benchmark Result ============2Successful requests: 203Failed requests: 04Request rate configured (RPS): 2.005Benchmark duration (s): 60.716Total input tokens: 29607Total generated tokens: 51208Request throughput (req/s): 0.339Output token throughput (tok/s): 84.3410Peak output token throughput (tok/s): 61.0011Peak concurrent requests: 20.0012Total token throughput (tok/s): 133.1013---------------Time to First Token----------------14Mean TTFT (ms): 19692.9815Median TTFT (ms): 18877.9916P99 TTFT (ms): 40039.0217-----Time per Output Token (excl. 1st token)------18Mean TPOT (ms): 44.6119Median TPOT (ms): 44.0920P99 TPOT (ms): 49.6821---------------Inter-token Latency----------------22Mean ITL (ms): 74.0923Median ITL (ms): 72.3924P99 ITL (ms): 280.7125---------------Speculative Decoding---------------26Acceptance rate (%): 67.3527Acceptance length: 1.6728Drafts: 305129Draft tokens: 305130Accepted tokens: 205531Per-position acceptance (%):32 Position 0: 67.3533==================================================
Згодом я провів тести паралельності на Ling та локальному Qwen 3.8-27B. При паралельності 8 сукупна пропускна здатність Ling становила 141,38 ток/с, тоді як Qwen 3.8 — 32,61 ток/с, різниця приблизно в 4,34 рази в цьому раунді.
🔥🔥🔥Порівняння стрес-тесту Ling-3.0-Flash та Qwen3.8-27B

Ling-3.0-flash

Qwen 3.8 -27B


Дехто може запитати: чому паралельність Ling лише 34,77 ток/с, але при паралельності 8 стає 141,38 ток/с? Технічні друзі також можуть запитати, чи цей показник паралельності повільний порівняно з офіційними даними.
Тут нам потрібно пояснити конкретний метод тестування та відмінності в швидкості, спричинені різними методами оцінки:
- Метод тестування та реальний наскрізний зв'язок: Цей тест використовує локальний сумісний з OpenAI інтерфейс, навантажувальне тестування через HTTP потокові запити, а не офлайн-тест інференсу, відокремлений від сервісної структури. Кожен запит Ling використовує довгий текстовий запит приблизно на 150 токенів, генеруючи до 512 токенів. Час вимірюється від HTTP-запиту клієнта до завершення потокової відповіді, таким чином включаючи локальні HTTP-виклики, планування сервісу, обробку токенізатора, Prefill, покадрове декодування та потокове повернення.
- Швидкість виводу одного потоку проти сукупної пропускної здатності машини: Швидкість одного потоку (реальний досвід користувача): При $c=1$, наскрізна швидкість виводу становить близько 35,34 ток/с (реальні тести однієї розмови показують 38+ ток/с), що еквівалентно понад 35 китайським символам на секунду, що візуально дуже швидко; Сукупна пропускна здатність (загальний вивід при паралельності): Зі збільшенням паралельності vLLM використовує Continuous Batching для об'єднання кількох запитів в обчислення GPU, повністю використовуючи пропускну здатність уніфікованої пам'яті Blackwell. При паралельності 8 сукупна пропускна здатність машини зросла до 141,38 ток/с.
Щодо того, чому це відрізняється від деяких офіційних бенчмарків, ключовим є критерії тестування. Точність моделі, інференс-двигун, довжина контексту, кількість вхідних/вихідних токенів, масштаб паралельності та те, чи використовується офлайн-інференс або HTTP-сервіси, — все це впливає на кінцевий результат. Лише коли ці умови в основному узгоджені, числа придатні для прямого порівняння.
Простіше кажучи: Швидкість змінюється залежно від методів оцінки — якщо тестувати при надзвичайно високій паралельності (наприклад, 32/64) або в чистому обчислювальному середовищі без мережевих протоколів, загальні показники пропускної здатності будуть вищими; у наших щоденних одноосібних розмовах або виробничих викликах коду, швидкість одного потоку Ling 35+ ток/с та затримка першого токена менше 220 мс вже відчуваються надзвичайно плавними та без затримок.
При паралельності 1 середня швидкість одного потоку Ling становить близько 35,34 ток/с; при паралельності 8 сукупна пропускна здатність досягає 141,38 ток/с. Сукупна пропускна здатність Qwen3.8 при паралельності 8 становить 32,61 ток/с. У цьому раунді перевага Ling в основному проявляється у швидкості виводу та пропускній здатності при паралельності, з помітно швидшими відповідями в реальному використанні.
2. Реальні можливості
Бенчмарки відображають лише частину продуктивності; фактична корисність залежить від продуктивності моделі на конкретних проблемах. Я вибрав три напрямки для простого тестування.
(1) Логічне міркування
Я підготував варіацію задачі про курей та кроликів, класичну задачу про миття автомобілів та задачу про машину для миття автомобілів, головним чином, щоб побачити, чи може вона точно зрозуміти умови, а не застосовувати знайому на вигляд відповідь. Серед них задача про курей та кроликів включала 4 механічних птахів з трьома ногами, щоб порушити звичайні шаблони.

(2) Межі безпеки: Далі я перевірив її реакцію на високоризикові операції: чи виконує вона безпосередньо, чи визначає ризики, підтверджує з користувачем та надає безпечніші альтернативи.

(3) Довгий текст
Нарешті, раунд тестування довгого тексту. Я приховав ключову інформацію в довгому контексті, щоб побачити, чи зможе вона точно знайти та відповісти, одночасно спостерігаючи за швидкістю виводу та стабільністю при довгому тексті.

04 Від API до TUI, а потім до виклику інструментів
Ми завершили розгортання моделі та тестування можливостей, але для звичайних користувачів curl більше підходить для перевірки інтерфейсів, ніж для щоденного використання. Щоб довго розмовляти з локальною моделлю, потрібен більш зручний інтерфейс взаємодії.
Тому я спочатку зробив простий TUI, чат-інтерфейс, що працює в терміналі. Це не складне програмне забезпечення; я попросив AI написати Python-скрипт, який інкапсулює локальні виклики інтерфейсу, потоковий вивід та історію розмов, а потім запустив його однією командою:
1python3 ling-3.0-chat.py
Таким чином, мені не потрібно щоразу писати curl. Відкриваю термінал і спілкуюся безпосередньо; відповіді надходять потоково, і я можу бачити TPS, TTFT та кількість токенів. У цьому інтерфейсі я виконав попередні тести можливостей.
Однак на цьому етапі TUI — це просто текстовий чат-інструмент без можливості викликати інструменти. Велика мова схожа на «мозок», відповідальний за мислення, але в неї немає «рук і ніг», щоб читати файли, виконувати команди або знати поточний стан системи.
Щоб дозволити їй викликати системні можливості, нам потрібно додати виклик інструментів. Простіше кажучи, такі операції, як виконання команд, читання файлів та запис, інкапсулюються як інструменти. Модель спочатку визначає, яка інформація їй потрібна, потім ініціює використання інструменту; Python-скрипт виконує його та передає результат назад моделі для подальшої обробки.
Наприклад, спочатку, коли я попросив її перевірити інформацію про GPU системи, вона не знала реального використання і могла лише сказати мені, як перевірити. Після додавання виклику інструментів вона змогла сама виконувати системні команди та безпосередньо організовувати результати запиту в TUI.
На основі того ж принципу ви можете продовжувати підключати веб-пошук, внутрішні корпоративні інтерфейси, бази даних тощо. Конкретні інструменти можна розширювати відповідно до бізнес-потреб.

05 Підключення до візуального інтерфейсу
Для особистого використання TUI з викликом інструментів насправді цілком достатньо. Щоб піти далі та помістити модель у більш повне робоче середовище агента, ви можете підключитися до агентної структури, наприклад Harness.
Цього разу я вибрав DeepSeek Harness від Liang Sheng, який не просто додає сторінку чату, але також надає керування контекстом, робочі простори, виклик інструментів, контроль дозволів та планування завдань, з вбудованим веб-інтерфейсом. Він використовує архітектуру «все є плагіном», що дозволяє майбутнє розширення функціональності.
Зверніть увагу, що DeepSeek Harness все ще на стадії попередньої версії для розробників і швидко оновлюється, що може призвести до несумісних змін. Існує багато інших відкритих агентних структур; ви можете вибрати відповідно до своїх потреб.
Процес підключення не складний: основне — це додати спеціальний сервіс моделі та вказати адресу на локальний інтерфейс, наданий vLLM. Окрім налаштування у веб-інтерфейсі, ви також можете змінити файл конфігурації, як показано:
1llm-pi-ai:2 providers:3 ling:4 displayName: "Ling-3.0-flash (124B)"5 api: openai-completions6 baseURL: http://127.0.0.1:30000/v17 apiKeyEnv: OPENAI_API_KEY8 models:9 - id: ling-int410 name: Ling-3.0-flash (124B MoE)
Після запуску веб-інтерфейсу відкрийте адресу за замовчуванням у вашому браузері:
1http://localhost:3080
Таким чином, щоденне спілкування, історія та перемикання моделей можна виконувати в DeepSeek Harness. Harness сам надає файлові операції, виконання команд та планування завдань, які можна додатково розширити за допомогою плагінів. Щодо конкретного використання та сторонніх плагінів, зацікавлені друзі можуть пошукати.
Зверніть увагу, що інструменти, які я написав у Python TUI, не перенесуться автоматично. Щоб використовувати їх у Harness, їх потрібно повторно інтегрувати відповідно до його механізму плагінів. Нижче наведено фактичний ефект інтеграції, який я зробив для Ling; ви можете переглянути запис.

06 Створення AI робочого процесу
На цьому етапі ланцюжок від розгортання до інтерфейсу та виклику інструментів для однієї моделі Ling-3.0-flash повністю встановлено.
Однак у реальних проектах ми зазвичай не використовуємо лише одну модель. Різні моделі добре справляються з різними завданнями; їх комбінування часто краще, ніж виконання всього однією моделлю.
Перевага Ling-3.0-flash — це швидкість обробки тексту та генерації, але вона не підтримує рідне мультимодальне введення. Якщо завдання вимагає розуміння зображень або відео, ви можете підключити мультимодальну модель, наприклад Qwen3.8-27B; якщо потрібно генерувати відео, ви можете підключити нещодавно відкритий MiniMax H3. Кожна модель обробляє те, що вона робить найкраще, передаючи результати наступній.
Наприклад, щоб створити робочий процес генерації відео, Ling може спочатку зрозуміти вимоги, написати сценарій та розділити розкадровку, потім мультимодальна модель перевіряє довідкові матеріали та візуальну узгодженість, і, нарешті, відеомодель генерує його. Після генерації можна провести ще один раунд візуальної перевірки, щоб змінити підказки та перегенерувати на основі результатів:
1Вимоги та матеріали2→ Ling генерує сценарій та розкадровку3→ Мультимодальна модель перевіряє матеріали та візуальні вимоги4→ MiniMax H3 генерує відео5→ Мультимодальна модель перевіряє візуальну частину та безперервність6→ Ling коригує підказки на основі зворотного зв'язку7→ Людина виконує остаточну перевірку
Відео нижче показує фактичний ефект підказок, згенерованих Ling-3.0-flash, а потім переданих MiniMax H3 для генерації.

Після того, як цей процес зафіксовано, вам потрібно лише змінювати вимоги та матеріали для багаторазового використання. Однак одночасний запуск кількох великих мов локально має дуже високі вимоги до VRAM та пам'яті. Ling INT4 займає близько 72 ГБ, Qwen3.8-27B BF16 — близько 51,77 ГБ, плюс KV Cache та відеомоделі; важко тримати їх усі в пам'яті на цьому Spark.
Перед фактичним розгортанням обов'язково розрахуйте, скільки VRAM або уніфікованої пам'яті потребує кожна модель. Коли ресурсів недостатньо, ви можете перемикати моделі поетапно, вибирати квантовані версії або розподіляти моделі на кілька пристроїв. Кілька моделей більше не працюють незалежно, а співпрацюють над одним завданням — це справді корисний багатомодельний AI робочий процес.
07 Остаточні думки
Від розгортання моделі, TUI та виклику інструментів до багатомодельних робочих процесів — весь ланцюжок завершено. Ця стаття має на меті поділитися повторюваним методом, а не фіксованою конфігурацією.
Відкриті моделі продовжуватимуть оновлюватися. У майбутньому, незалежно від того, чи будете ви змінювати моделі, версії квантування або інференс-двигуни, шлях від завантаження ваг і запуску сервісу до підключення інструментів та робочих процесів суттєво не зміниться.
Якщо дозволяють умови, я все ж рекомендую всім особисто розгортати локальні моделі:
- Контроль даних: Файли, розмови та бізнес-дані залишаються на вашій машині або в інтранеті, а дозволи на каталоги та команди обмежуються вами.
- Підходить для частого використання: Не потрібно щоразу розраховувати вартість токенів, зменшуючи залежність від мережі та сторонніх сервісів.
- Легка налаштовуваність: Моделі, точність квантування, інференс-двигуни та інструменти можна налаштовувати, а також підключати внутрішні інтерфейси та бази даних.
Оскільки відкриті моделі стають потужнішими, локальне розгортання стане вибором для більшої кількості людей. Ви можете створювати інструменти та робочі процеси на основі ваших завдань, обладнання та бюджету. Я сподіваюся, що кожен зможе мати власного локального агента в майбутньому, не дивлячись щоразу на споживання токенів, справді досягнувши власної «Свободи токенів»!
Пов'язані ресурси
- Hugging Face: Ваги Ling-3.0-flash INT4
- ModelScope: Ваги Ling-3.0-flash INT4
- Офіційний репозиторій адаптації vLLM
📚 Підсумок попередніх статей
- Практичний посібник Hermes Agent: Від тривоги X до автоматичного накопичення
- Посібник програміста проти випадіння волосся
- Підключення Hermes до iMessage
- Підключення Hermes до X Premium
- Повний посібник Hermes Agent
- Вступний посібник Hermes Agent: Допоміжні моделі
- Вступний посібник Hermes Agent
- Розширений посібник Hermes Agent
- Неповний посібник Hermes Agent
- Повний посібник з підписки Claude Pro в Нігерії
- Підручник з реєстрації Apple ID в Нігерії
- Підписка ChatGPT Plus за півціни в Туреччині
- Реєстрація Apple ID США
- Підписка Claude/ChatGPT/Gemini через Alipay
- Повний посібник з локального розгортання LLM на Mac
- Перевірка якості IP
- Чому Doubao не рекомендує ваш бренд
- Як пояснити бабусі, що те, що сказав Doubao, не є правдою
Якщо це було корисно, будь ласка, підпишіться + додайте в закладки + поширте 👏🏻
Слідкуйте за @Lonely__MH, щоб отримувати постійні оновлення зі зрозумілими посібниками для початківців та інсайтами про AI інструменти.





