Дата публикации
ai_products

Qwen3.5-35B-A3B: открытый «мыслительный» ИИ для кода, агентов и мультимодальных задач

Что нового

Alibaba представила Qwen3.5-35B-A3B — открытый мультимодальный ИИ с сильным упором на код и агентные сценарии. Модель доступна на Hugging Face и совместима с популярными движками инференса.

Ключевые факты:

  • Тип модели: языковая модель с визуальным энкодером (текст + изображения + видео).
  • Размер: 35 млрд параметров, при этом одновременно активируется только 3 млрд — это снижает стоимость инференса.
  • Контекст:
    • нативно — 262 144 токена;
    • с RoPE-скейлингом (YaRN) — до 1 010 000 токенов.
  • Режим работы по умолчанию: «thinking mode» — модель сначала генерирует скрытый блок <think>…</think>, потом финальный ответ.
  • Официальный управляемый сервис: через Alibaba Cloud Model Studio (Qwen3.5-Flash — хостинговая версия Qwen3.5-35B-A3B с контекстом 1M токенов по умолчанию и встроенными инструментами).

Основные улучшения Qwen3.5

  1. Единая мультимодальная основа (Vision + Language)

    • Раннее объединение токенов текста и изображений.
    • По заявлению разработчиков, Qwen3.5 не уступает Qwen3 по мультимодальным задачам и обгоняет Qwen3-VL на бенчмарках по рассуждению, коду, агентам и визуальному пониманию.
  2. Гибридная архитектура для скорости

    • Сочетание Gated Delta Networks и разрежной Mixture-of-Experts (MoE).
    • Цель — высокий throughput и низкая задержка при умеренных затратах.
  3. Масштабный reinforcement learning на агентах

    • RL обучали в средах с миллионами агентов и усложняющимися задачами.
    • Фокус — устойчивость к реальным сценариям и сложным пайплайнам.
  4. Мультиязычность

    • Поддержка 201 языка и диалекта, включая редкие и региональные варианты.
  5. Новая инфраструктура обучения

    • Заявленная эффективность мультимодального обучения — почти как у текстового (почти 100% от текст-only).
    • Асинхронные RL-фреймворки для масштабных агентных сценариев.

Бенчмарки: язык, код, агенты

Ниже — только часть цифр для Qwen3.5-35B-A3B.

Языковые и знаниевые тесты:

  • MMLU-Pro: 85,3
  • MMLU-Redux: 93,3
  • C-Eval: 90,2
  • SuperGPQA: 63,4

Следование инструкциям:

  • IFEval: 91,9
  • IFBench: 70,2
  • MultiChallenge: 60,0

Длинный контекст:

  • AA-LCR: 58,5
  • LongBench v2: 59,0

STEM и рассуждение:

  • HLE w/ CoT: 22,4
  • GPQA Diamond: 84,2
  • HMMT Feb 25: 89,0
  • HMMT Nov 25: 89,2

Код и разработка:

  • SWE-bench Verified: 69,2
  • Terminal Bench 2: 40,5
  • LiveCodeBench v6: 74,6
  • CodeForces: 2028 (собственный набор запросов)
  • OJBench: 36,0
  • FullStackBench en: 58,1
  • FullStackBench zh: 55,0

Агентные задачи:

  • BFCL-V4 (general agent): 67,3
  • TAU2-Bench: 81,2 (с учётом фиксированной airline-домен части, как в system card Claude Opus 4.5)
  • VITA-Bench: 31,9
  • DeepPlanning: 22,8

Поиск и web-агенты:

  • HLE w/ tool: 47,4
  • Browsecomp: 61,0
  • Browsecomp-zh: 69,5
  • WideSearch: 57,1 (без контекст-менеджмента, окно 256k)
  • Seal-0: 41,4

Мультиязычные тесты:

  • MMMLU: 85,2
  • MMLU-ProX (29 языков): 81,0
  • NOVA-63: 57,1
  • INCLUDE: 79,7
  • Global PIQA: 86,6
  • PolyMATH: 64,4
  • WMT24++ (55 языков, XCOMET-XXL): 76,3
  • MAXIFE (23 настроек, EN + мультиязычные промпты): 86,6

Мультимодальные бенчмарки (Vision+Language)

STEM и головоломки:

  • MMMU: 81,4
  • MMMU-Pro: 75,1
  • MathVision: 83,9 (с фиксированным промптом с \boxed{})
  • MathVista (mini): 86,2
  • DynaMath: 85,0
  • ZEROBench: 8
  • ZEROBench_sub: 34,1
  • VlmsAreBlind: 97,0
  • BabyVision: 38,4 / 29,6 (с доверительными интервалами / без)

Общий VQA:

  • RealWorldQA: 84,1
  • MMStar: 81,9
  • MMBench EN-DEV-v1.1: 91,5
  • SimpleVQA: 58,3
  • HallusionBench: 67,9

OCR и документы:

  • OmniDocBench1.5: 89,3
  • CharXiv (RQ): 77,5
  • MMLongBench-Doc: 59,5
  • CC-OCR: 80,7
  • AI2D_TEST: 92,6
  • OCRBench: 91,0

Пространственный интеллект:

  • ERQA: 64,8
  • CountBench: 97,8
  • RefCOCO (avg): 89,2
  • ODInW13: 42,6
  • EmbSpatialBench: 83,1
  • RefSpatialBench: 63,5
  • LingoQA: 79,2
  • Hypersim: 13,1
  • SUNRGBD: 33,4
  • Nuscene: 14,6

Видео:

  • VideoMME (c субтитрами): 86,6
  • VideoMME (без субтитров): 82,5
  • VideoMMMU: 80,4
  • MLVU: 85,6
  • MVBench: 74,8
  • LVBench: 71,4
  • MMVU: 72,3

Визуальные агенты:

  • ScreenSpot Pro: 68,6
  • OSWorld-Verified: 54,5
  • AndroidWorld: 71,1

Tool calling (мультимодальный):

  • TIR-Bench: 55,5 / 38,0 (c CI / без CI)
  • V*: 92,7 / 89,5 (c CI / без CI)

Медицинские VQA:

  • SLAKE: 78,7
  • PMC-VQA: 62,0
  • MedXpertQA-MM: 61,4

Как это работает

Архитектура модели

Qwen3.5-35B-A3B — это causal language model с визуальным энкодером и MoE.

Основные параметры:

  • Общее число параметров: 35 млрд.
  • Активные параметры при инференсе: 3 млрд.
  • Размер скрытого слоя: 2048.
  • Словарь токенов: 248 320 (padded).
  • Число слоёв: 40.
  • Контекст: 262 144 токена нативно, расширяемо до 1 010 000 токенов с YaRN.
  • Выход LM: 248 320 (padded).
  • Обучение MTP: модель обучена с multi-step multi-token prediction.

Внутреннее устройство слоёв

Layout слоёв:

  • 10 повторов блока:
    • 3 × (Gated DeltaNet → MoE)
    • 1 × (Gated Attention → MoE)

Gated DeltaNet:

  • Линейное внимание с разделением голов:
    • 32 головы для V;
    • 16 голов для QK.
  • Размер головы: 128.

Gated Attention:

  • 16 голов для Q;
  • 2 головы для KV;
  • Размер головы: 256.

Rotary Position Embedding:

  • Размер RoPE: 64.

Mixture-of-Experts:

  • Число экспертов: 256.
  • Активных экспертов на токен: 8 маршрутизируемых + 1 shared expert.
  • Intermediate dimension: 512.

MoE даёт возможность держать общий размер модели большим, но активировать лишь часть параметров. Отсюда — 35B total / 3B activated.

Мультимодальность

Модель содержит vision encoder, который преобразует изображения и видео в токены, совместимые с языковым декодером.

  • Текст и визуальные токены проходят через общую архитектуру.
  • Мультимодальное обучение шло с почти такой же эффективностью, как текст-only, за счёт оптимизированного пайплайна и асинхронного RL.

Thinking mode

По умолчанию Qwen3.5:

  1. Генерирует внутренний блок рассуждений в теге <think>…</think>.
  2. Затем выдаёт финальный ответ.

Этот блок можно отключить через параметры API (см. ниже). Мягкий переключатель /think и /nothink из Qwen3 не поддерживается.

Инфраструктура и поддерживаемые фреймворки

Модель распространяется в формате Hugging Face Transformers и совместима с:

  • Hugging Face Transformers (включая встроенный сервер);
  • vLLM;
  • SGLang;
  • KTransformers;
  • а также с OpenAI-совместимыми API.

Для продакшена разработчики рекомендуют SGLang, KTransformers или vLLM благодаря высокой пропускной способности и эффективной работе с длинным контекстом.

Что это значит для вас

Когда Qwen3.5-35B-A3B действительно полезен

  1. Генерация и правка кода, особенно в агентных сценариях

    • Высокие результаты на SWE-bench Verified (69,2), LiveCodeBench (74,6), FullStackBench (58,1 / 55,0).
    • Хорошо подходит для:
      • автогенерации патчей;
      • пошагового решения задач в терминале;
      • анализа больших репозиториев с помощью агентов.
    • В связке с Qwen Code можно строить терминального ассистента для разработчиков.
  2. Агентные сценарии и tool calling

    • Высокие результаты на TAU2-Bench (81,2), BFCL-V4 (67,3), TIR-Bench и V*.
    • Модель умеет:
      • вызывать внешние инструменты;
      • работать с MCP-серверами (через Qwen-Agent);
      • поддерживать сложные цепочки действий.
    • Подходит для:
      • ассистентов, которые управляют файловой системой;
      • web-агентов с поиском и навигацией по сайтам;
      • внутренних инструментов разработчика.
  3. Длинные документы и сложные пайплайны

    • Нативный контекст 262k токенов, расширяемый до 1M.
    • Подходит для:
      • анализа больших кодовых баз;
      • обработки длинных юридических или технических документов;
      • многопроходных задач, где важна история взаимодействия.
  4. Мультимодальные задачи

    • Сильные показатели на MMMU, MathVision, OmniDocBench, VideoMME и других.
    • Применения:
      • разбор сканов, презентаций, PDF с картинками;
      • решение визуальных задач по математике;
      • понимание видео с вопросами к содержанию.
  5. Мультиязычные сценарии

    • Поддержка 201 языка и диалекта.
    • Бенчмарки (MMMLU, WMT24++, MAXIFE) показывают уверенный уровень на множестве языков.
    • Полезно, если нужно покрывать международную аудиторию и локальные диалекты.

Когда Qwen3.5 может быть не лучшим выбором

  1. Ограниченные ресурсы (GPU/память)

    • 35B MoE с длинным контекстом — тяжёлая конфигурация.
    • Для запуска команд из инструкции часто требуется 8 GPU с достаточным объёмом памяти.
    • Если у вас одна потребительская видеокарта, стоит смотреть на более компактные модели Qwen или других семейств.
  2. Сверхстрогие требования к задержке

    • Thinking mode добавляет вычислительные шаги и увеличивает время ответа.
    • Можно отключить рассуждения, но тогда вы теряете часть сильных сторон модели в сложных задачах.
  3. Простые чат-боты без кода и инструментов

    • Для FAQ-бота или простого ассистента Qwen3.5-35B-A3B может быть избыточен по ресурсам.
    • Логичнее использовать меньшие модели или облачные решения с более мягкими требованиями.

Доступность из России

  • Хостинговая версия (Qwen3.5-Flash) доступна через Alibaba Cloud Model Studio.
  • Для доступа к облаку может потребоваться регистрация и возможное использование VPN в зависимости от сетевых ограничений и политики провайдера.
  • Локальный запуск через Hugging Face/vLLM/SGLang не требует доступа к зарубежным API после того, как вы скачаете веса.

Место на рынке

Разработчики приводят таблицы с результатами не только Qwen3.5, но и других моделей, включая условный GPT-5-mini 2025-08-07, GPT-OSS-120B, а также более крупные версии Qwen3 и Qwen3.5.

По самим цифрам:

  • На MMLU-Pro Qwen3.5-35B-A3B набирает 85,3, что близко к более крупным моделям Qwen3.5-27B (86,1) и Qwen3.5-122B-A10B (86,7).
  • На SWE-bench Verified69,2, почти на уровне Qwen3.5-27B (72,4) и Qwen3.5-122B-A10B (72,0).
  • На TAU2-Bench модель показывает 81,2 — даже выше, чем Qwen3.5-27B (79,0) и Qwen3.5-122B-A10B (79,5).

Цифры по GPT-5-mini и Claude-Sonnet-4.5 в таблицах есть, но разработчики не дают прямых выводов о скорости или стоимости. Из данных видно, что Qwen3.5-35B-A3B на многих бенчмарках находится в одном диапазоне с более крупными моделями, но при меньшем числе активных параметров.

Если вы сравниваете модели для кода и агентов, Qwen3.5-35B-A3B выглядит как компромисс между качеством и ресурсами: близко к топовым open-source моделям по качеству, но легче полноценных 70B+.

Установка

Hugging Face Transformers

Для быстрого запуска можно использовать встроенный сервер Transformers. Нужна последняя версия из ветки main:

pip install "transformers[serving] @ git+https://github.com/huggingface/transformers.git@main"

Также убедитесь, что установлены torchvision и pillow.

Запуск сервера с API на http://localhost:8000/v1:

transformers serve --force-model Qwen/Qwen3.5-35B-A3B --port 8000 --continuous-batching

Модель автоматически разместится на доступных ускорителях.

Как запустить

SGLang

SGLang — быстрый сервер для LLM и VLM. Для Qwen3.5 нужна версия из main репозитория:

uv pip install 'git+https://github.com/sgl-project/sglang.git#subdirectory=python&egg=sglang[all]'

API будет доступен по адресу http://localhost:8000/v1.

Стандартный запуск (262 144 токена, 8 GPU):

python -m sglang.launch_server \
  --model-path Qwen/Qwen3.5-35B-A3B \
  --port 8000 \
  --tp-size 8 \
  --mem-fraction-static 0.8 \
  --context-length 262144 \
  --reasoning-parser qwen3

С поддержкой инструментов (tool use):

python -m sglang.launch_server \
  --model-path Qwen/Qwen3.5-35B-A3B \
  --port 8000 \
  --tp-size 8 \
  --mem-fraction-static 0.8 \
  --context-length 262144 \
  --reasoning-parser qwen3 \
  --tool-call-parser qwen3_coder

Multi-Token Prediction (MTP):

python -m sglang.launch_server \
  --model-path Qwen/Qwen3.5-35B-A3B \
  --port 8000 \
  --tp-size 8 \
  --mem-fraction-static 0.8 \
  --context-length 262144 \
  --reasoning-parser qwen3 \
  --speculative-algo NEXTN \
  --speculative-num-steps 3 \
  --speculative-eagle-topk 1 \
  --speculative-num-draft-tokens 4

vLLM

vLLM — движок инференса с высокой пропускной способностью. Для Qwen3.5 нужна nightly-версия:

uv pip install vllm --torch-backend=auto --extra-index-url https://wheels.vllm.ai/nightly

Стандартный запуск (262 144 токена, 8 GPU):

vllm serve Qwen/Qwen3.5-35B-A3B \
  --port 8000 \
  --tensor-parallel-size 8 \
  --max-model-len 262144 \
  --reasoning-parser qwen3

С поддержкой tool calling:

vllm serve Qwen/Qwen3.5-35B-A3B \
  --port 8000 \
  --tensor-parallel-size 8 \
  --max-model-len 262144 \
  --reasoning-parser qwen3 \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_coder

Multi-Token Prediction (MTP):

vllm serve Qwen/Qwen3.5-35B-A3B \
  --port 8000 \
  --tensor-parallel-size 8 \
  --max-model-len 262144 \
  --reasoning-parser qwen3 \
  --speculative-config '{"method":"qwen3_next_mtp","num_speculative_tokens":2}'

Только текст (без vision encoder):

vllm serve Qwen/Qwen3.5-35B-A3B \
  --port 8000 \
  --tensor-parallel-size 8 \
  --max-model-len 262144 \
  --reasoning-parser qwen3 \
  --language-model-only

KTransformers

KTransformers — фреймворк для оптимизации инференса с гетерогенными CPU/GPU. Для Qwen3.5 есть отдельное руководство по деплою:

  • См. KTransformers Deployment Guide для конкретных команд.

Использование через Chat Completions API

Qwen3.5 можно дергать через OpenAI-совместимый API.

Подготовка

pip install -U openai

# Настройки окружения
export OPENAI_BASE_URL="http://localhost:8000/v1"
export OPENAI_API_KEY="EMPTY"

Рекомендуемые параметры сэмплинга

  • Thinking mode, общие задачи:

    • temperature=1.0, top_p=0.95, top_k=20, min_p=0.0,
    • presence_penalty=1.5, repetition_penalty=1.0.
  • Thinking mode, точные задачи по коду (например, WebDev):

    • temperature=0.6, top_p=0.95, top_k=20, min_p=0.0,
    • presence_penalty=0.0, repetition_penalty=1.0.
  • Instruct (без thinking), общие задачи:

    • temperature=0.7, top_p=0.8, top_k=20, min_p=0.0,
    • presence_penalty=1.5, repetition_penalty=1.0.
  • Instruct (без thinking), рассуждения:

    • temperature=1.0, top_p=0.95, top_k=20, min_p=0.0,
    • presence_penalty=1.5, repetition_penalty=1.0.

Поддержка конкретных параметров зависит от выбранного движка инференса.

Пример: текстовый запрос

from openai import OpenAI

client = OpenAI()

messages = [
    {
        "role": "user",
        "content": "Type \"I love Qwen3.5\" backwards",
    },
]

chat_response = client.chat.completions.create(
    model="Qwen/Qwen3.5-35B-A3B",
    messages=messages,
    max_tokens=81920,
    temperature=1.0,
    top_p=0.95,
    presence_penalty=1.5,
    extra_body={
        "top_k": 20,
    },
)

print("Chat response:", chat_response)

Пример: изображение + текст

from openai import OpenAI

client = OpenAI()

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "https://qianwen-res.oss-accelerate.aliyuncs.com/Qwen3.5/demo/CI_Demo/mathv-1327.jpg"
                },
            },
            {
                "type": "text",
                "text": (
                    "The centres of the four illustrated circles are in the corners of the square. "
                    "The two big circles touch each other and also the two little circles. "
                    "With which factor do you have to multiply the radii of the little circles "
                    "to obtain the radius of the big circles?\n\nChoices:\n\n"
                    "(A) $\\frac{2}{9}$\n\n(B) $\\sqrt{5}$\n\n(C) $0.8 \\cdot \\pi$\n\n"
                    "(D) 2.5\n\n(E) $1+\\sqrt{2}$"
                ),
            },
        ],
    }
]

response = client.chat.completions.create(
    model="Qwen/Qwen3.5-35B-A3B",
    messages=messages,
    max_tokens=81920,
    temperature=1.0,
    top_p=0.95,
    presence_penalty=1.5,
    extra_body={
        "top_k": 20,
    },
)

print("Chat response:", chat_response)

Пример: видео + текст

from openai import OpenAI

client = OpenAI()

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "video_url",
                "video_url": {
                    "url": "https://qianwen-res.oss-accelerate.aliyuncs.com/Qwen3.5/demo/video/N1cdUjctpG8.mp4"
                },
            },
            {
                "type": "text",
                "text": (
                    "How many porcelain jars were discovered in the niches located in the "
                    "primary chamber of the tomb?"
                ),
            },
        ],
    }
]

response = client.chat.completions.create(
    model="Qwen/Qwen3.5-35B-A3B",
    messages=messages,
    max_tokens=81920,
    temperature=1.0,
    top_p=0.95,
    presence_penalty=1.5,
    extra_body={
        "top_k": 20,
        "mm_processor_kwargs": {
            "fps": 2,
            "do_sample_frames": True,
        },
    },
)

print("Chat response:", chat_response)

Thinking vs Instruct: как отключить рассуждения

Qwen3.5 всегда думает по умолчанию, /think и /nothink не работают.

Чтобы получить ответ без блока <think>…</think>, нужно указать параметр в API.

Пример для OpenAI-совместимого API:

from openai import OpenAI

client = OpenAI()

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "https://qianwen-res.oss-accelerate.aliyuncs.com/Qwen3.5/demo/RealWorld/RealWorld-04.png"
                },
            },
            {
                "type": "text",
                "text": "Where is this?",
            },
        ],
    }
]

chat_response = client.chat.completions.create(
    model="Qwen/Qwen3.5-35B-A3B",
    messages=messages,
    max_tokens=32768,
    temperature=0.7,
    top_p=0.8,
    presence_penalty=1.5,
    extra_body={
        "top_k": 20,
        "chat_template_kwargs": {
            "enable_thinking": False,
        },
    },
)

print("Chat response:", chat_response)

Если вы используете API Alibaba Cloud Model Studio, вместо "chat_template_kwargs": {"enable_thinking": False} нужно передать просто:

"enable_thinking": false

Агентные сценарии и Qwen-Agent

Qwen3.5 хорошо умеет работать с инструментами. Для быстрого старта с агентами есть библиотека Qwen-Agent.

Пример: агент, который управляет файловой системой через MCP-сервер и может организовать ваш рабочий стол.

import os
from qwen_agent.agents import Assistant

llm_cfg = {
    'model': 'Qwen3.5-35B-A3B',
    'model_type': 'qwenvl_oai',
    'model_server': 'https://dashscope.aliyuncs.com/compatible-mode/v1',
    'api_key': os.getenv('DASHSCOPE_API_KEY'),
    'generate_cfg': {
        'use_raw_api': True,
        'extra_body': {
            'enable_thinking': True,
        },
    },
}

tools = [
    {
        'mcpServers': {
            "filesystem": {
                "command": "npx",
                "args": [
                    "-y",
                    "@modelcontextprotocol/server-filesystem",
                    "/Users/xxxx/Desktop",
                ],
            }
        }
    }
]

bot = Assistant(llm=llm_cfg, function_list=tools)

messages = [{'role': 'user', 'content': 'Help me organize my desktop.'}]
for responses in bot.run(messages=messages):
    pass
print(responses)

messages = [{'role': 'user', 'content': 'Develop a dog website and save it on the desktop'}]
for responses in bot.run(messages=messages):
    pass
print(responses)

Qwen Code

Qwen Code — открытый агент для терминала, оптимизированный под Qwen.

Он помогает:

  • разбираться в больших кодовых базах;
  • автоматизировать рутинные задачи;
  • ускорять разработку.

Подробности — в документации Qwen Code.

Работа с ультрадлинными текстами

Qwen3.5 нативно поддерживает до 262 144 токенов. Для задач, где суммарная длина входа и выхода выше, нужны техники RoPE-скейлинга, например YaRN.

YaRN поддерживается:

  • transformers;
  • vllm;
  • ktransformers;
  • sglang.

Есть два основных способа включить YaRN.

1. Правка config.json

В config.json измените rope_parameters в text_config на:

{
  "mrope_interleaved": true,
  "mrope_section": [11, 11, 10],
  "rope_type": "yarn",
  "rope_theta": 10000000,
  "partial_rotary_factor": 0.25,
  "factor": 4.0,
  "original_max_position_embeddings": 262144
}

2. Параметры командной строки (пример для vLLM)

VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 \
vllm serve ... \
  --hf-overrides '{"text_config": {"rope_parameters": {"mrope_interleaved": true, "mrope_section": [11, 11, 10], "rope_type": "yarn", "rope_theta": 10000000, "partial_rotary_factor": 0.25, "factor": 4.0, "original_max_position_embeddings": 262144}}}' \
  --max-model-len 1010000

Для SGLang и KTransformers используются переменные окружения (в исходнике обрезан фрагмент, но идея та же: передать параметры RoPE/YaRN через конфиг или CLI).


Qwen3.5-35B-A3B — мощный открытый вариант для тех, кто строит свои ИИ-продукты вокруг кода, агентов и мультимодальных задач, и готов инвестировать в инфраструктуру под 35B MoE с длинным контекстом.


Читайте также