175 lines
9.4 KiB
Markdown
175 lines
9.4 KiB
Markdown
|
|
---
|
|||
|
|
license: mit
|
|||
|
|
language:
|
|||
|
|
- ru
|
|||
|
|
- en
|
|||
|
|
pipeline_tag: text-generation
|
|||
|
|
tags:
|
|||
|
|
- moe
|
|||
|
|
---
|
|||
|
|
# 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](https://huggingface.co/ai-sage/GigaChat3-10B-A1.8B-base)) с помощью высококачественных SFT-данных.
|
|||
|
|
Для высокопроизводительного инференса доступна версия модели в fp8 — [GigaChat3-10B-A1.8B-fp8](https://huggingface.co/ai-sage/GigaChat3-10B-A1.8B-fp8).
|
|||
|
|
|
|||
|
|
Поддерживает контекст до 256 тысяч токенов.
|
|||
|
|
|
|||
|
|
Больше подробностей [в хабр статье](https://habr.com/en/companies/sberdevices/articles/968904/).
|
|||
|
|
|
|||
|
|
## Архитектура модели
|
|||
|
|
|
|||
|
|
`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`.
|
|||
|
|
[Ссылка на код.](https://gist.github.com/ajpqs/ce941aa6f0f48ef36a65cb87a2a1d726)
|
|||
|
|
|
|||
|
|
|**Модель**|**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 |
|
|||
|
|
|
|||
|
|
|
|||
|
|
## Как проверить метрики модели
|
|||
|
|
|
|||
|
|
```shell
|
|||
|
|
# 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`
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
import torch
|
|||
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
|
|||
|
|
|
|||
|
|
model_name = "ai-sage/GigaChat3-10B-A1.8B-bf16"
|
|||
|
|
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`
|
|||
|
|
|
|||
|
|
Запуск сервера
|
|||
|
|
```shell
|
|||
|
|
vllm serve ai-sage/GigaChat3-10B-A1.8B-bf16 \
|
|||
|
|
--dtype "auto" \
|
|||
|
|
--speculative-config '{"method": "mtp", "num_speculative_tokens": 1, "disable_padded_drafter_batch": false}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Пример запроса
|
|||
|
|
```shell
|
|||
|
|
curl http://localhost:8000/v1/chat/completions \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"model": "ai-sage/GigaChat3-10B-A1.8B-bf16",
|
|||
|
|
"messages": [
|
|||
|
|
{
|
|||
|
|
"role": "user",
|
|||
|
|
"content": "Докажи теорему о неподвижной точке"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"max_tokens": 400,
|
|||
|
|
"temperature": 0
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. `SGLang`
|
|||
|
|
|
|||
|
|
Запуск сервера
|
|||
|
|
```shell
|
|||
|
|
python -m sglang.launch_server \
|
|||
|
|
--model-path ai-sage/GigaChat3-10B-A1.8B-bf16 \
|
|||
|
|
--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
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Пример запроса
|
|||
|
|
```shell
|
|||
|
|
curl http://localhost:30000/v1/chat/completions \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"model": "ai-sage/GigaChat3-10B-A1.8B-bf16",
|
|||
|
|
"messages": [
|
|||
|
|
{
|
|||
|
|
"role": "user",
|
|||
|
|
"content": "Докажи теорему о неподвижной точке"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"max_tokens": 1000,
|
|||
|
|
"temperature": 0
|
|||
|
|
}'
|
|||
|
|
```
|