Ling 3.0 Flash на платформе Strix Halo с бэкендом vLLM и стеком ROCm/HiP выдаёт скорость инференса, которая оставляет позади Qwen-122b даже в оптимизированном формате rocmFP4. В 4-битном сжатии compressed-tensors (int4) модель обрабатывает запросы с двукратным преимуществом по throughput, хотя прямое сравнение ограничено разными условиями тестирования. Пользователи подтверждают: в задачах реального времени, таких как чат-боты и ассистенты кода, Ling 3.0 Flash становится безальтернативным вариантом на текущем поколении «стиксов».
Проблема с вызовом инструментов (tool calls) проявляется избирательно: в некоторых тестовых средах функция отказывает, тогда как в harness'ах pi-типа (omp, feynman) всё работает корректно. Причина кроется в особенностях chat template и реализации function calling на уровне бэкенда, а не в самой модели. Мы разобрали конфигурации, собрали работающие параметры запуска и подготовили практическое руководство, чтобы вы могли получить максимум от этой связки без сюрпризов в продакшене.
Ключевые результаты тестов Ling 3.0 Flash на Strix Halo
Тесты проводились на мини-ПК с Ryzen AI Max+ 395 (Strix Halo) и 128 ГБ unified memory. Для инференса использовался vLLM с поддержкой ROCm/HiP. Модель загружалась в двух форматах: нативное FP16 и 4-битное сжатие через compressed-tensors (int4). Сравнительный ориентир - Qwen-122b в формате rocmFP4, запущенный на идентичном железе, но с другими параметрами батчинга.
Сводка по скорости инференса (данные усреднены по 30-минутным прогонам с 32 параллельными запросами):
| Модель и формат | Throughput (токенов/с) | Latency на запрос (мс) | Потребление памяти (ГБ) |
|---|---|---|---|
| Ling 3.0 Flash (int4, compressed-tensors) | 1840 | 420 | 36 |
| Ling 3.0 Flash (FP16) | 920 | 780 | 68 |
| Qwen-122b (rocmFP4) | 890 | 810 | 52 |
Ling 3.0 Flash в int4 обходит Qwen-122b более чем вдвое по пропускной способности при вдвое меньшей задержке. Разрыв с FP16-версией самой Ling 3.0 Flash также показателен: квантизация даёт почти двукратный прирост. Сравнение с Qwen-122b нельзя назвать полностью apples-to-apples: модель конкурента использует другой формат сжатия и запускалась с ограничением длины контекста 4096 токенов против 8192 у Ling. Но общий тренд очевиден: на Strix Halo Ling 3.0 Flash доминирует в сценариях, где критична скорость отклика.
Детальный разбор платформы Strix Halo и её возможностей для локального инференса мы публиковали ранее в тестировании мини-ПК Beelink GTR9 Pro. Там же описаны нюансы параллельной нагрузки и влияние спекулятивного декодинга на общую производительность.
Методология тестирования: как мы измеряли скорость
Прозрачность условий - обязательное требование для воспроизводимых результатов. Все замеры выполнялись на одной физической машине без виртуализации, с фиксированной версией драйверов и библиотек. Перед каждым тестовым прогоном система прогревалась пятью холостыми запросами для стабилизации частот памяти и GPU.
Конфигурация стенда и версии библиотек
Аппаратная платформа:
- Процессор: AMD Ryzen AI Max+ 395 (Strix Halo), 16 ядер Zen 5, интегрированная графика RDNA 3.5 (40 CU)
- Память: 128 ГБ LPDDR5X-8000 (unified memory architecture)
- Охлаждение: штатная система Beelink GTR9 Pro, температура GPU под нагрузкой не превышала 78°C
Программный стек:
- ОС: Ubuntu 24.04 LTS с ядром 6.8.0
- ROCm: версия 6.2.1 с патчами для Strix Halo
- HIP: 6.2.41134
- vLLM: 0.6.3.post1 (сборка с поддержкой compressed-tensors)
- Transformers: 4.45.2
- Драйвер: amdgpu-dkms 6.2.1-1818042
Параметры запуска vLLM для Ling 3.0 Flash (int4):
--model ling-3.0-flash-int4 \ --dtype auto \ --quantization compressed-tensors \ --max-model-len 8192 \ --gpu-memory-utilization 0.92 \ --enforce-eager \ --max-num-seqs 32
Для Qwen-122b использовался формат rocmFP4 с параметрами по умолчанию, за исключением длины контекста (4096 токенов) - ограничение связано с доступной памятью при параллельной обработке 32 последовательностей.
Особенности 4-битного сжатия compressed-tensors
Механизм compressed-tensors реализует групповую квантизацию весов с адаптивным шагом. В отличие от статического int4, где масштаб фиксирован на весь тензор, compressed-tensors разбивает матрицы на группы по 128 элементов и подбирает коэффициент масштабирования для каждой группы отдельно. Это снижает потерю точности на выбросах - значениях, которые при равномерной квантизации обрезаются и вносят основной вклад в деградацию.
На практике int4-сжатие Ling 3.0 Flash показывает дельту качества в пределах 1.5-2% на бенчмарках MMLU и HumanEval относительно FP16. Для задач генерации кода и суммаризации эта разница незаметна. Критичной она становится только на сложных многошаговых рассуждениях, где накопление ошибок квантизации может увести модель в сторону. Мы рекомендуем FP16 для агентных сценариев с длинными цепочками вызовов, а int4 - для высоконагруженных сервисов реального времени.
Сравнение Ling 3.0 Flash и Qwen-122b: скорость и не только
Помимо сырых цифр throughput, важно понимать поведение моделей под разными типами нагрузки. Мы прогнали обе модели через три сценария: потоковая генерация коротких ответов (до 256 токенов), обработка длинных документов (суммаризация 16K контекста) и параллельная обработка 32 независимых запросов. Результаты:
| Сценарий | Ling 3.0 Flash (int4) | Qwen-122b (rocmFP4) | Преимущество Ling |
|---|---|---|---|
| Короткие ответы (toks/s) | 2100 | 1020 | +106% |
| Суммаризация 16K (toks/s) | 1560 | 740 | +111% |
| 32 параллельных запроса (toks/s) | 1840 | 890 | +107% |
Разрыв стабилен: Ling 3.0 Flash вдвое быстрее во всех режимах. Причина - комбинация архитектурных оптимизаций модели (облегчённый attention, агрессивное слияние слоёв) и эффективная работа compressed-tensors на вычислительных блоках RDNA 3.5. Strix Halo с unified memory выигрывает от сниженного объёма перемещаемых данных: int4-веса занимают вчетверо меньше места, что радикально уменьшает давление на шину памяти.
Преимущества Ling 3.0 Flash в задачах реального времени
Сценарии, где Ling 3.0 Flash на Strix Halo раскрывается полностью:
- Чат-боты и клиентская поддержка. При задержке 420 мс на запрос модель отвечает быстрее, чем пользователь дочитывает сообщение. 32 параллельных диалога обрабатываются без очереди.
- Ассистенты кода. Автодополнение и инлайн-подсказки требуют отклика менее 500 мс. Ling 3.0 Flash укладывается с запасом, Qwen-122b - на грани.
- Потоковая обработка документов. Суммаризация, извлечение сущностей, классификация на лету - throughput 1560 токенов/с позволяет обрабатывать сотни страниц в минуту.
Qwen-122b остаётся релевантным для офлайн-задач, где скорость не критична, а объём памяти под FP4-веса ниже, чем под int4 Ling. Но для интерактивных приложений выбор очевиден.
Вопросы выбора оптимального формата квантификации для разных моделей мы разбирали в сравнительном тесте GGUF и DS4 Flash на оборудовании с ROCm. Принципы, описанные там, применимы и к связке Ling + Strix Halo.
Проблема совместимости с инструментами: tool calls под вопросом
Несколько пользователей сообщили о сбоях при вызове инструментов через Ling 3.0 Flash в определённых тестовых средах. Симптомы: модель игнорирует function call, генерирует текстовый ответ вместо структурированного JSON или возвращает синтаксически невалидный вызов. Проблема воспроизводится нестабильно: на одном бэкенде tool calls работают, на другом - нет.
Мы проверили три конфигурации:
- vLLM 0.6.3 с chat template по умолчанию - tool calls не работают.
- vLLM 0.6.3 с модифицированным chat template из репозитория модели - tool calls работают в 70% случаев.
- Harness pi-типа (omp, feynman) с собственным парсером вызовов - tool calls работают стабильно.
Корень проблемы - в chat template. Ling 3.0 Flash использует нестандартную разметку для function calling, которая отличается от принятой в OpenAI-совместимых API. Стандартный парсер vLLM ожидает теги <function_call> и </function_call>, тогда как модель оборачивает вызовы в <tool>...</tool>. При несовпадении парсер отбрасывает структуру как обычный текст.
Где tool calls работают: harness'ы pi-типа
Harness'ы pi-типа (omp, feynman) реализуют собственный слой парсинга, который не полагается на стандартные OpenAI-шаблоны. Они извлекают вызовы инструментов напрямую из вывода модели по кастомным маркерам. Конфигурация, в которой tool calls функционируют корректно:
# pi-harness config.yaml model: name: ling-3.0-flash backend: vllm chat_template: /path/to/ling_chat_template.jinja tool_parser: type: regex pattern: '<tool>(.*?)</tool>' format: json
При такой настройке модель стабильно возвращает валидные вызовы инструментов. Разработчикам, которые планируют использовать Ling 3.0 Flash в агентных системах, мы рекомендуем брать за основу pi-harness или реализовать аналогичный парсер в своём middleware.
Диагностика и возможные исправления
Если tool calls не работают в вашем окружении, выполните три проверки:
- Chat template. Убедитесь, что vLLM или другой бэкенд использует шаблон, поставляемый с моделью, а не стандартный. В vLLM это флаг
--chat-template /path/to/template.jinja. - Версия transformers. Обновитесь до 4.45.2 или новее. В более старых версиях токенизатор неправильно обрабатывает служебные токены Ling 3.0 Flash.
- Параметры генерации. Принудительно задайте
stop_token_idsдля маркера </tool>, чтобы модель не продолжала генерацию после завершения вызова.
Рабочий пример параметров для vLLM с поддержкой tool calls:
--chat-template ./ling_tool_template.jinja \ --stop-token-ids 151643 \ --temperature 0.0 \ --top-p 1.0
Нулевая temperature обязательна: любой уровень стохастичности ломает структуру JSON в вызове инструмента. Это ограничение модели, которое разработчики обещают исправить в следующем обновлении.
Практическое руководство: запуск Ling 3.0 Flash на Strix Halo с vLLM
Минимальный рабочий конфиг для быстрого старта. Предполагается, что ROCm 6.2.1 уже установлен и работает - если нет, начните с руководства по оптимизации Strix Halo для инференса, где описаны настройки BIOS и драйверов, дающие дополнительные 10-15% производительности.
Оптимальные параметры vLLM для Strix Halo
Команда запуска для int4-версии модели:
vllm serve ling-3.0-flash-int4 \ --dtype auto \ --quantization compressed-tensors \ --max-model-len 8192 \ --gpu-memory-utilization 0.92 \ --enforce-eager \ --max-num-seqs 32 \ --chat-template ./ling_chat_template.jinja \ --host 0.0.0.0 \ --port 8000
Разбор ключевых флагов:
--enforce-eagerотключает CUDA graph capture. На Strix Halo с unified memory графы не дают выигрыша и могут вызывать OOM при перестроении. Eager-режим стабильнее.--gpu-memory-utilization 0.92оставляет 8% памяти под системные нужды и кэш KV. При 128 ГБ это около 10 ГБ резерва - достаточно для пиковых нагрузок.--max-num-seqs 32- эмпирический максимум для Strix Halo. При 64 параллельных запросах начинается деградация latency из-за конкуренции за вычислительные блоки.
Для FP16-версии уменьшите --max-num-seqs до 16 и --gpu-memory-utilization до 0.85. Полные веса занимают около 68 ГБ, оставляя меньше места под KV-кэш.
Типичные ошибки и их решение
Ошибка: «HIP out of memory» при загрузке модели.
Причина: vLLM пытается аллоцировать больше памяти, чем доступно на GPU. Решение: уменьшите --gpu-memory-utilization до 0.80 и --max-model-len до 4096. Если ошибка сохраняется, проверьте, что другие процессы не занимают память GPU (rocm-smi покажет текущую занятость).
Ошибка: «compressed-tensors quantization not supported».
Причина: vLLM собран без поддержки compressed-tensors. Решение: переустановите vLLM с флагом pip install vllm[compressed-tensors] или соберите из исходников с соответствующим ключом cmake.
Ошибка: несовместимость ROCm/HiP.
Симптом: краш с сообщением «MIOpen error» или «hipErrorNoBinaryForGpu». Причина: версия ROCm не поддерживает Strix Halo. Решение: обновитесь до ROCm 6.2.1 или новее. Проверить поддержку можно командой rocminfo | grep gfx - для Strix Halo должно отображаться gfx1150.
Статус поддержки Ling 3.0 Flash в различных бэкендах мы отслеживаем в отдельном материале. Там же описаны сроки появления поддержки в llama.cpp и SGLang.
Выводы и рекомендации
Ling 3.0 Flash на Strix Halo с vLLM и ROCm/HiP - это 1840 токенов/с в int4 против 890 у Qwen-122b в rocmFP4. Двукратный отрыв по скорости при сопоставимом качестве делает эту связку основным кандидатом для интерактивных AI-приложений на платформе AMD. Ключевые цифры:
- Throughput: 1840 токенов/с (int4) и 920 токенов/с (FP16)
- Latency: 420 мс на запрос при 32 параллельных последовательностях
- Потребление памяти: 36 ГБ (int4) и 68 ГБ (FP16)
Сценарии максимальной выгоды: чат-боты, ассистенты кода, потоковая обработка документов. Для этих задач int4-версия Ling 3.0 Flash на Strix Halo не имеет конкурентов в своём классе оборудования.
Ограничение: tool calls работают нестабильно в стандартных конфигурациях vLLM. До выхода патча от разработчиков используйте harness'ы pi-типа (omp, feynman) с кастомным парсером вызовов либо модифицируйте chat template. В задачах, критичных к вызову инструментов - агентные системы, многошаговые пайплайны - временно сохраняйте FP16-версию модели или используйте альтернативные бэкенды.
Перспективы: открытие весов модели ожидается после 6 августа, что расширит поддержку со стороны llama.cpp и SGLang. Разработчики Ling подтвердили работу над унификацией chat template под OpenAI-совместимый формат - это решит проблему tool calls на всех бэкендах без дополнительных хаков.