GigaChat3-10B-A1.8B

Представляем GigaChat3-10B-A1.8B — диалоговую модель семейства GigaChat. Модель основана на архитектуре Mixture-of-Experts (MoE) с 10B общих и 1.8B активных параметров. Архитектура включает Multi-head Latent Attention (MLA) и Multi-Token Prediction (MTP), за счет чего модель оптимизирована для высокой пропускной способности (throughput) при инференсе. Модель обучена поверх нашей базовой версии (GigaChat3-10B-A1.8B-base) с помощью высококачественных SFT-данных. Данная версия предназначена для высокопроизводительного инференса в fp8, модель в bf16 — GigaChat3-10B-A1.8B. Больше подробностей в хабр статье.

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

GigaChat3-10B-A1.8B использует кастомную MoE-архитектуру:

Multi-head Latent Attention (MLA)

Вместо стандартного Multi-head Attention модель использует MLA. MLA обеспечивает эффективный инференс за счет сжатия Key-Value (KV) кэша в латентный вектор, что значительно снижает требования к памяти и ускоряет обработку.

Multi-Token Prediction (MTP)

Модель обучена с использованием задачи Multi-Token Prediction (MTP). Это позволяет модели предсказывать несколько токенов за один проход, что ускоряет генерацию до 40% с помощью техник спекулятивной/параллельной генерации.

Данные для обучения

Модель обучена на 20Т токенов. Мы добавили 10 языков — от китайского и арабского до узбекского и казахского, а также расширили набор источников: книги, академические данные, датасеты по коду и математике. Все данные проходят дедупликацию, языковую фильтрацию и автоматические проверки качества при помощи эвристик и классификаторов. Ключевой вклад в качество внесла синтетика: мы сгенерировали около 5,5 триллионов токенов синтетических данных. В корпус входят вопросы-ответы к текстам, цепочки reverse-prompt для структурирования данных, LLM-заметки с комментариями от модели внутри текстов, миллионы синтетических задач с решениями по математике и олимпиадному программированию (с синтетическими тестами) на основе PromptCot.

Инференс

Одно из ключевых преимуществ GigaChat3-10B-A1.8B — скорость инференса. Модель (особенно в режиме MTP) демонстрирует пропускную способность, сопоставимую с пропускной способностью значительно меньших dense‑моделей. Мы измеряли с помощью vLLM v0.11.0, на типе bfloat16 c batch_size=1. Ссылка на код.

Модель request_throughput output_throughput total_token_throughput mean_ttft_ms
Qwen3-1.7B 1.689 357.308 726.093 11.824
mtp-GigaChat3-10B-A1.8B-base 1.533 333.620 678.894 26.345
GigaChat3-10B-A1.8B-base 1.077 234.363 476.912 31.053
Qwen3-4B 0.978 206.849 420.341 14.947
Qwen3-8B 0.664 140.432 285.375 16.663
YandexGPT-5-Lite-8B-pretrain 0.641 147.305 300.269 16.711

Бенчмарки

Хотя модель имеет 10 миллиардов параметров, её прямые аналоги — модели размером 3–4 миллиарда параметров. Однако благодаря высокой скорости генерации мы также сравниваем её с ещё более компактными моделями.

Метрика GigaChat 3 Lightning Qwen3-1.7B-Instruct Qwen3-4B-Instruct-2507 SmolLM3
MMLU_RU_FIVE_SHOT 0.6833 0.4876 0.5972 0.4998
RUBQ_ZERO_SHOT 0.6516 0.2557 0.3170 0.6363
MMLU_PRO_EN_FIVE_SHOT 0.6061 0.410 0.6849 0.5013
MMLU_EN_FIVE_SHOT 0.7403 0.60 0.7080 0.5992
BBH_THREE_SHOT 0.4525 0.3317 0.7165 0.4161
SuperGPQA 0.2731 0.2092 0.3745 0.2459
MATH_500_FOUR_SHOT 0.7000 0.7520 0.8880 0.8020
GPQA_COT_ZERO_SHOT 0.3502 0.2651 0.5370 0.3704
LiveCodeBench_ZERO_SHOT 0.2031 0.0794 0.3046 0.1656
HUMAN_EVAL_PLUS_ZERO_SHOT 0.6951 0.6280 0.8780 0.7012

Как проверить метрики модели

# lm-eval[api]==0.4.9.1
# sglang[all]==0.5.5
# или 
# vllm==0.11.2

export HF_ALLOW_CODE_EVAL=1

# sglang server up

# 10B
python -m sglang.launch_server --model-path <path_to_model> --host 127.0.0.1 --port 30000 --dtype auto --mem-fraction-static 0.88 --trust-remote-code --allow-auto-truncate --speculative-algorithm EAGLE --speculative-num-steps 1 --speculative-eagle-topk 1 --speculative-num-draft-tokens 2

# mmlu pro check
python -m lm_eval --model sglang-generate --output_path <path_to_model> --batch_size 16 --model_args base_url=http://127.0.0.1:30000/generate,num_concurrent=16,tokenized_requests=True,max_length=131072,tokenizer=<path_to_model> --trust_remote_code --confirm_run_unsafe_code --num_fewshot 5 --tasks mmlu_pro

Пример использования (Quickstart)

1. transformers

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig

model_name = "ai-sage/GigaChat3-10B-A1.8B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto")
model.generation_config = GenerationConfig.from_pretrained(model_name)

messages = [
    {"role": "user", "content": "Докажи теорему о неподвижной точке"}
]
input_tensor = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt")
outputs = model.generate(input_tensor.to(model.device), max_new_tokens=1000)

result = tokenizer.decode(outputs[0][input_tensor.shape[1]:], skip_special_tokens=False)
print(result)

2. vLLM

Запуск сервера

# VLLM DeepGemm conflicts with our hidden dim size.
# Fix: Disable it via env var (VLLM_USE_DEEP_GEMM=0).
VLLM_USE_DEEP_GEMM=0 vllm serve ai-sage/GigaChat3-10B-A1.8B \
  --dtype "auto" \
  --speculative-config '{"method": "mtp", "num_speculative_tokens": 1, "disable_padded_drafter_batch": false}'

Пример запроса

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ai-sage/GigaChat3-10B-A1.8B",
    "messages": [
      {
        "role": "user",
        "content": "Докажи теорему о неподвижной точке"
      }
    ],
    "max_tokens": 400,
    "temperature": 0
  }'

3. SGLang

Запуск сервера

python -m sglang.launch_server \
  --model-path ai-sage/GigaChat3-10B-A1.8B \
  --host 0.0.0.0 \
  --port 30000 \
  --dtype auto \
  --mem-fraction-static 0.88 \
  --speculative-algorithm EAGLE \
  --speculative-num-steps 1 \
  --speculative-eagle-topk 1 \
  --speculative-num-draft-tokens 2

Пример запроса

curl http://localhost:30000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ai-sage/GigaChat3-10B-A1.8B",
    "messages": [
      {
        "role": "user",
        "content": "Докажи теорему о неподвижной точке"
      }
    ],
    "max_tokens": 1000,
    "temperature": 0
  }'

Function call

1. transformers

Click for a dropdown
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
import json
import re
REGEX_FUNCTION_CALL_V3 = re.compile(r"function call<\|role_sep\|>\n(.*)$", re.DOTALL)
REGEX_CONTENT_PATTERN = re.compile(r"^(.*?)<\|message_sep\|>", re.DOTALL)
def parse_function_and_content(completion_str: str):
    """
    Using the regexes the user provided, attempt to extract function call and content.
    Returns (function_call_str_or_None, content_str_or_None)
    """

    function_call = None
    content = None

    m_func = REGEX_FUNCTION_CALL_V3.search(completion_str)
    if m_func:
        try:
            function_call = json.loads(m_func.group(1))
            if isinstance(function_call, dict) and "name" in function_call and "arguments" in function_call:
                if not isinstance(function_call["arguments"], dict):
                    function_call = None
            else:
                function_call = None
        except json.JSONDecodeError:
            function_call = None

            # will return raw string in failed attempt of function calling
            return function_call, completion_str

    m_content = REGEX_CONTENT_PATTERN.search(completion_str)
    if m_content:
        content = m_content.group(1)
    else:
        # as a fallback, everything before the first message_sep marker if present
        if "<|message_sep|>" in completion_str:
            content = completion_str.split("<|message_sep|>")[0]
        else:
            content = completion_str

    return function_call, content

model_name = "ai-sage/GigaChat3-10B-A1.8B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto")
model.generation_config = GenerationConfig.from_pretrained(model_name)
tools = [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Получить информацию о текущей погоде в указанном городе.",
        "parameters": {
          "type": "object",
          "properties": {
            "city": {
              "type": "string",
              "description": "Название города (например, Москва, Казань)."
            }
          },
          "required": ["city"]
        }
      }
    }
]
messages = [
    {"role": "user", "content": "Какая сейчас погода в Москве?"}
]
input_tensor = tokenizer.apply_chat_template(messages, tools=tools, add_generation_prompt=True, return_tensors="pt")
outputs = model.generate(input_tensor.to(model.device), max_new_tokens=1000)

result = parse_function_and_content(tokenizer.decode(outputs[0][input_tensor.shape[1]:], skip_special_tokens=False))[0]
print(result)

2. vLLM

Соберите dev версию, коммит>=21bb323)

Запуск сервера

# VLLM DeepGemm conflicts with our hidden dim size.
# Fix: Disable it via env var (VLLM_USE_DEEP_GEMM=0).
VLLM_USE_DEEP_GEMM=0 vllm serve ai-sage/GigaChat3-10B-A1.8B \
  --dtype "auto" \
  --speculative-config '{"method": "mtp", "num_speculative_tokens": 1, "disable_padded_drafter_batch": false}' \
  --enable-auto-tool-choice \
  --tool-call-parser gigachat3

Пример запроса

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
  "model": "ai-sage/GigaChat3-10B-A1.8B",
  "temperature": 0,
  "messages": [
    {
      "role": "user",
      "content": "Какая сейчас погода в Москве?"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Получить информацию о текущей погоде в указанном городе.",
        "parameters": {
          "type": "object",
          "properties": {
            "city": {
              "type": "string",
              "description": "Название города (например, Москва, Казань)."
            }
          },
          "required": ["city"]
        }
      }
    }
  ]
}'

3. SGLang

Соберите dev версию на данной ветке - https://github.com/sgl-project/sglang/pull/14765.

Запуск сервера

python -m sglang.launch_server \
  --model-path ai-sage/GigaChat3-10B-A1.8B \
  --host 0.0.0.0 \
  --port 30000 \
  --dtype auto \
  --mem-fraction-static 0.88 \
  --speculative-algorithm EAGLE \
  --speculative-num-steps 1 \
  --speculative-eagle-topk 1 \
  --speculative-num-draft-tokens 2
  --tool-call-parser gigachat3

Пример запроса

curl http://localhost:30000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
  "model": "ai-sage/GigaChat3-10B-A1.8B",
  "temperature": 0,
  "messages": [
    {
      "role": "user",
      "content": "Какая сейчас погода в Москве?"
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Получить информацию о текущей погоде в указанном городе.",
        "parameters": {
          "type": "object",
          "properties": {
            "city": {
              "type": "string",
              "description": "Название города (например, Москва, Казань)."
            }
          },
          "required": ["city"]
        }
      }
    }
  ]
}'
Downloads last month
4,517
Safetensors
Model size
11B params
Tensor type
F32
·
BF16
·
F8_E4M3
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 1 Ask for provider support

Model tree for ai-sage/GigaChat3-10B-A1.8B

Quantized
(13)
this model
Quantizations
10 models

Spaces using ai-sage/GigaChat3-10B-A1.8B 2

Collection including ai-sage/GigaChat3-10B-A1.8B