File size: 8,134 Bytes
98dfd76
 
61fc417
 
 
 
 
 
98dfd76
 
 
3fd6226
35bd408
8092e70
98dfd76
 
 
3fd6226
b37f9a4
98dfd76
 
 
 
 
 
 
35bd408
98dfd76
 
 
35bd408
98dfd76
 
 
 
 
35bd408
98dfd76
3fd6226
 
35bd408
 
3fd6226
 
 
 
 
 
 
 
 
 
 
 
98dfd76
 
35bd408
98dfd76
5755231
98dfd76
 
4b436e1
 
 
 
 
 
 
 
 
 
 
 
 
289ec07
4b436e1
 
cf68b7a
4b436e1
 
98dfd76
 
 
 
 
 
 
 
 
72c122d
98dfd76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4b436e1
98dfd76
4b436e1
 
98dfd76
 
5755231
98dfd76
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
---
license: mit
language:
- ru
- en
pipeline_tag: text-generation
tags:
- moe
---
# GigaChat3-10B-A1.8B-base

Представляем `GigaChat3-10B-A1.8B-base` — базовую (pretrain) модель семейства GigaChat. Модель основана на архитектуре Mixture-of-Experts (MoE) с 10B общих и 1.8B активных параметров.
Архитектура включает **Multi-head Latent Attention (MLA)** и **Multi-Token Prediction (MTP)**, за счет чего модель оптимизирована для высокой пропускной способности (throughput) при инференсе.
Больше подробностей [в хабр статье](https://habr.com/en/companies/sberdevices/articles/968904/).

## Важное замечание: Base vs. Instruct

Данная карточка описывает **базовую** (pretrain) модель.
Для диалоговых задач и выполнения инструкций, пожалуйста, используйте нашу [**instruct**-версию](https://huggingface.co/ai-sage/GigaChat3-10B-A1.8B).

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

`GigaChat3-10B-A1.8B-base` использует кастомную 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-base` — скорость инференса. Модель (особенно в режиме 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 миллиарда параметров. Однако благодаря высокой скорости генерации мы также сравниваем её с ещё более компактными моделями.

![image](https://cdn-uploads.huggingface.co/production/uploads/66356a710508bbbb61184fd2/3lxW7o5sJtzcIRpVMg15c.png)


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

```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-base"
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 = (
    "Ниже я написал подробное доказательство теоремы о неподвижной точке:"
)
inputs = tokenizer(messages, return_tensors="pt").to(model.device)
outputs = model.generate(inputs.input_ids, attention_mask=inputs.attention_mask)

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

### 2. `vLLM`

Запуск сервера
```shell
vllm serve ai-sage/GigaChat3-10B-A1.8B-base \
  --dtype "auto" \
  --speculative-config '{"method": "mtp", "num_speculative_tokens": 1, "disable_padded_drafter_batch": false}'
```

Пример запроса
```shell
curl http://localhost:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ai-sage/GigaChat3-10B-A1.8B-base",
    "prompt": "Ниже я написал подробное доказательство теоремы о неподвижной точке:",
    "max_tokens": 400,
    "temperature": 0
  }'
```

### 3. `SGLang`

Запуск сервера
```shell
python -m sglang.launch_server \
  --model-path ai-sage/GigaChat3-10B-A1.8B-base \
  --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/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ai-sage/GigaChat3-10B-A1.8B-base",
    "prompt": "Ниже я написал подробное доказательство теоремы о неподвижной точке:",
    "max_tokens": 400,
    "temperature": 0
  }'
```