Qwen3.5 2026: Полное руководство по локальному запуску малых версий (9B/27B) и облачному API флагманской модели 397B-A17B

Март 2026 Экспертный обзор Версия: Qwen3.5 (Apache 2.0)

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.

Ресурсы