Qwen3.5 2026: Полное руководство по локальному запуску малых версий (9B/27B) и облачному API флагманской модели 397B-A17B
1 Введение: Новая эра открытых моделей
Выпуск Qwen3.5 в феврале-марте 2026 года знаменует парадигмальный сдвиг в мире открытых языковых моделей. Алibaba представил линейку моделей под лицензией Apache 2.0, которая включает флагманскую 397B-A17B с контекстом до 1 миллиона токенов и компактные версии 9B, 2B и 0.8B с контекстом 262K токенов. Эта статья — практическое руководство для DevOps, backend-разработчиков и энтузиастов AI, желающих развернуть Qwen3.5 локально или использовать облачный API.
Ключевое преимущество Qwen3.5
Все модели поддерживают нативное мультимодальное обучение (early-fusion), что позволяет обрабатывать текст, изображения, видео и аудио в едином контексте без отдельного трансформера для каждого модальности.
2 Архитектура и линейка моделей
Флагманская версия: 397B-A17B
- Архитектура: Mixture of Experts (MoE) с 172 экспертами, активируется 17B параметров на токен
- Контекст: До 1,048,576 токенов (1M) — анализ полных репозиториев кода или длинных документов
- Инференс: Требует кластер из 8×A100/H100 (80GB) для FP16, или 4×H100 для квантованных версий
- Доступ: Через Bailian API, OpenRouter, Together AI
Компактные версии: 9B/2B/0.8B
- 9B: 16GB RAM/VRAM для INT4, 32GB для FP16. Запуск на RTX 3060 12GB с квантованием
- 2B/0.8B: Запуск на смартфонах (Apple Silicon M-series, Snapdragon 8 Gen 3) через Ollama
- Контекст: 262,144 токенов (262K) — хранение 500+ страниц текста
- Инференс: Поддержка vLLM, Ollama, HuggingFace Transformers
| Модель | Контекст | FP16 VRAM | INT4 VRAM | Оборудование |
|---|---|---|---|---|
| Qwen3.5-397B-A17B | 1M токенов | ~800 GB | ~200 GB | Кластер A100/H100 |
| Qwen3.5-27B | 262K токенов | ~54 GB | ~14 GB | RTX 3090/4090 |
| Qwen3.5-9B | 262K токенов | ~18 GB | ~5 GB | RTX 3060 12GB |
| Qwen3.5-2B | 262K токенов | ~4 GB | ~1.2 GB | Ноутбук 8GB RAM |
3 Локальный запуск малых версий (9B/27B/2B/0.8B)
3.1. Подготовка окружения
Для локального запуска потребуется Python 3.10+, CUDA 12.1+ (для NVIDIA) или Apple Silicon (для macOS). Установите зависимости:
# Обновление pip
pip install --upgrade pip
# Установка vLLM (рекомендуется для высокой пропускной способности)
pip install vllm
# Или Ollama (для простоты)
curl -fsSL https://ollama.com/install.sh | sh
# Или HuggingFace Transformers
pip install transformers accelerate
3.2. Запуск через vLLM с квантованием
vLLM поддерживает AWQ и GPTQ квантование. Для модели 9B с контекстом 262K:
# Запуск с FP16 (требует ~18GB VRAM)
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen3.5-9B \
--max-model-len 262144 \
--tensor-parallel-size 1
# Запуск с AWQ квантованием (INT4, ~5GB VRAM)
python -m vllm.entrypoints.openai.api_server \
--model TheBloke/Qwen3.5-9B-AWQ \
--max-model-len 262144 \
--quantization awq
# С GPU-блокировкой для стабильности
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen3.5-9B \
--max-model-len 262144 \
--gpu-memory-utilization 0.9 \
--enforce-eager
3.3. Запуск через Ollama
Ollama автоматически загружает квантованные модели. Поддерживаются форматы Q4_K_M, Q5_K_M:
# Создание модели из Modelfile
cat > Modelfile << EOF
FROM qwen3.5:9b
PARAMETER num_ctx 262144
EOF
# Сборка и запуск
ollama create qwen3.5-9b-262k -f Modelfile
ollama run qwen3.5-9b-262k "Объясни квантовую запутанность простыми словами"
3.4. HuggingFace Transformers (для разработки)
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "Qwen/Qwen3.5-9B"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True
)
# Включение длинного контекста
model.config.max_position_embeddings = 262144
inputs = tokenizer("Привет!", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0]))
4 Облачный API флагманской модели 397B-A17B
4.1. Провайдеры и ценообразование
Флагманская модель доступна через несколько облачных провайдеров. Ниже сравнение цен за 1M токенов (вход + выход) на март 2026:
| Провайдер | Цена за 1M токенов | Контекст | Особенности |
|---|---|---|---|
| Bailian API | $2.50 | 1M | Нативная интеграция с Alibaba Cloud |
| OpenRouter | $3.20 | 1M | Единый API для 100+ моделей |
| Together AI | $2.80 | 1M | Поддержка reasoning-parser |
4.2. Пример вызова API через Python
import openai
from openai import OpenAI
# Для Bailian API
client = OpenAI(
api_key="YOUR_BAILIAN_KEY",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
response = client.chat.completions.create(
model="qwen3.5-397b-a17b",
messages=[
{"role": "system", "content": "Ты эксперт по анализу данных."},
{"role": "user", "content": "Проанализируй этот 100-страничный отчет..."}
],
max_tokens=4000,
extra_body={
"reasoning_parser": "qwen3.5", # Включение режима "thinking"
"max_model_len": 1048576
}
)
print(response.choices[0].message.content)
5 Мультимодальность: Early-Fusion Architecture
Qwen3.5 использует гибридную архитектуру ViT-encoder + MoE, что позволяет обрабатывать несколько модальностей в едином потоке:
Изображения
Скриншоты кода, GUI-элементы, диаграммы. Разрешение до 4K.
Видео
Анализ кадров с камер наблюдения, lecture videos. Частота 1-5 FPS.
Аудио
Речь → текст + семантический анализ. Поддержка 100+ языков.
Пример: Анализ видео с камеры
import base64
import requests
from qwen_vl_utils import process_vision_info
# Загрузка видео (поддерживается MP4, MOV)
video_path = "surveillance_clip.mp4"
video_base64 = base64.b64encode(open(video_path, "rb").read()).decode("utf-8")
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "Опиши, что происходит в этом видео. Укажи количество людей, их действия, возможные инциденты."},
{"type": "video", "video": f"data:video/mp4;base64,{video_base64}"}
]
}
]
# Через локальный API vLLM
response = requests.post(
"http://localhost:8000/v1/chat/completions",
json={
"model": "qwen3.5-9b",
"messages": messages,
"max_model_len": 262144
}
)
print(response.json()["choices"][0]["message"]["content"])
6 Агенты и автономное планирование
Qwen3.5 включает встроенные возможности для агентных систем:
- Режим "thinking" — модель генерирует цепочку рассуждений перед ответом, что улучшает декомпозицию сложных задач.
- Инструменты (Tools) — автоматический вызов функций (API, калькулятор, поиск) через JSON-схему.
- Веб-интерфейсы — способность взаимодействовать с GUI через визуальный анализ скриншотов.
- Планирование — разбивка цели на подзадачи с проверкой промежуточных результатов.
Пример: Агент-автокодировщик
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="token")
# Определение инструментов
tools = [
{
"type": "function",
"function": {
"name": "write_file",
"description": "Запись файла на диск",
"parameters": {
"type": "object",
"properties": {
"path": {"type": "string"},
"content": {"type": "string"}
},
"required": ["path", "content"]
}
}
},
{
"type": "function",
"function": {
"name": "execute_shell",
"description": "Выполнение shell-команды",
"parameters": {
"type": "object",
"properties": {
"command": {"type": "string"}
},
"required": ["command"]
}
}
}
]
# Запрос на создание веб-сервера
response = client.chat.completions.create(
model="qwen3.5-9b",
messages=[
{"role": "system", "content": "Ты автономный агент. Создай простой HTTP-сервер на Python, который возвращает 'Hello World'."},
{"role": "user", "content": "Начни."}
],
tools=tools,
tool_choice="auto",
extra_body={"reasoning_parser": "qwen3.5"} # Включение reasoning
)
# Обработка вызовов инструментов
for choice in response.choices:
if choice.message.tool_calls:
for tool_call in choice.message.tool_calls:
if tool_call.function.name == "write_file":
args = json.loads(tool_call.function.arguments)
with open(args["path"], "w") as f:
f.write(args["content"])
print(f"Файл {args['path']} создан")
7 Сравнение производительности: Consumer Hardware vs Cloud
Ниже приведены тесты скорости генерации (токенов/сек) на разных конфигурациях. Модель: Qwen3.5-9B, контекст 8K, batch size 1.
| Оборудование | Квантование | Токенов/сек | Стоимость запуска* |
|---|---|---|---|
| RTX 3060 12GB | INT4 (AWQ) | 45 | $0.00012/1K токенов |
| RTX 4090 24GB | FP16 | 120 | $0.00018/1K токенов |
| Apple M2 Ultra | INT4 | 65 | $0.00015/1K токенов |
| Bailian API (397B) | FP16 | 250 | $2.50/1M токенов |
* Примерная стоимость при 10M токенов/месяц, включая оборудование/электричество для локального.
8 Примеры использования в агентах
8.1. Автокодирование: генерация тестов
import os
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="token")
# Анализ кода и генерация unit-тестов
code_file = "src/utils.py"
with open(code_file) as f:
code = f.read()
prompt = f"""
Проанализируй этот Python-код и создай unit-тесты с pytest.
Файл: {code_file}
Код:
{code}
Требования:
1. Покрой все функции.
2. Используй моки для внешних зависимостей.
3. Добавь тесты на граничные случаи.
"""
response = client.chat.completions.create(
model="qwen3.5-9b",
messages=[{"role": "user", "content": prompt}],
max_tokens=2000
)
# Сохранение тестов
test_file = "tests/test_utils.py"
with open(test_file, "w") as f:
f.write(response.choices[0].message.content)
print(f"Тесты сохранены в {test_file}")
8.2. Анализ видео с камер наблюдения
import cv2
import base64
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="token")
def analyze_video_frame(frame_path):
"""Анализ одного кадра"""
with open(frame_path, "rb") as image_file:
base64_image = base64.b64encode(image_file.read()).decode('utf-8')
response = client.chat.completions.create(
model="qwen3.5-9b",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Есть ли на изображении люди? Если да, сколько? Есть ли подозрительные объекты (оружие, маски)?"},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}
]
}
],
max_tokens=100
)
return response.choices[0].message.content
# Обработка видео (1 кадр в секунду)
cap = cv2.VideoCapture("camera_feed.mp4")
fps = int(cap.get(cv2.CAP_PROP_FPS))
frame_interval = fps # 1 кадр в секунду
frame_count = 0
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
if frame_count % frame_interval == 0:
frame_path = f"frame_{frame_count}.jpg"
cv2.imwrite(frame_path, frame)
analysis = analyze_video_frame(frame_path)
print(f"Кадр {frame_count}: {analysis}")
frame_count += 1
cap.release()
8.3. Перевод аудио + семантический анализ
import whisper
from openai import OpenAI
# Шаг 1: Распознавание речи (Whisper-large-v3)
whisper_model = whisper.load_model("large-v3")
result = whisper_model.transcribe("meeting_audio.mp3", language="ru")
transcript = result["text"]
# Шаг 2: Семантический анализ через Qwen3.5
client = OpenAI(base_url="http://localhost:8000/v1", api_key="token")
analysis_prompt = f"""
Транскрипция встречи:
{transcript}
Задача:
1. Извлеки ключевые решения (action items) с ответственными.
2. Определи эмоциональный тон обсуждения (позитивный/негативный/нейтральный).
3. Выдели технические термины и их контекст.
4. Суммаризируй в 3 предложения.
"""
response = client.chat.completions.create(
model="qwen3.5-9b",
messages=[{"role": "user", "content": analysis_prompt}],
max_tokens=1000
)
print("=== АНАЛИЗ ===")
print(response.choices[0].message.content)
9 Риски и ограничения
Качество "thinking trace"
В малых моделях (9B/2B) цепочки рассуждений могут быть поверхностными. Для критичных задач используйте флагманскую версию через API или ансамблирование нескольких генераций.
VRAM и длинный контекст
При контексте >100K токенов потребление VRAM растет нелинейно. На 9B модели с 262K контекстом может потребоваться до 10GB VRAM даже в INT4.
Чек-лист: для чего подходит какая версия
| Задача | Рекомендуемая версия | Метод |
|---|---|---|
| Чат-бот, простой Q&A | 2B или 0.8B | Ollama, смартфон |
| Код-ревью, генерация тестов | 9B | vLLM, RTX 3060 |
| Анализ длинных документов (100+ стр) | 27B или 397B | API (Bailian) или локальный кластер |
| Мультимодальность: видео/аудио | 9B+ | Локальный vLLM с поддержкой VL |
| Автономные агенты с планированием | 397B-A17B | Облачный API с reasoning_parser |
10 Заключение
Qwen3.5 2026 представляет собой универсальную экосистему моделей, от компактных 0.8B для мобильных устройств до 397B-параметрового флагмана. Ключевые инновации — длинный контекст (262K/1M), нативная мультимодальность и встроенная поддержка агентных систем.
Для большинства enterprise-задач рекомендуется использовать облачный API 397B-A17B, обеспечивающий максимальное качество. Для prototyping, автономных систем и edge-устройств оптимальны локальные версии 9B/2B с квантованием AWQ/INT4.
"Открытая лицензия Apache 2.0 и поддержка стандартных форматов (GGUF, AWQ) делают Qwen3.5 наиболее гибким решением для частных развертываний в 2026 году."
Следите за обновлениями: к Qwen4.0 ожидается увеличение контекста до 2M и улучшенная multimodal fusion.