GigaChat-20B-A3B-instruct
Диалоговая модель из семейства моделей GigaChat, основная на GigaChat-20B-A3B-base. Поддерживает контекст в 131 тысячу токенов.
Больше подробностей в хабр статье.
Для данной модели также доступны веса в bf16 и int8
Upd. Перезалили веса в .safetensors
Бенчмарки
T-lite-instruct-0.1 (llama 3.0 8B based) |
gemma-2-9b-it | GigaChat-20B-A3B-instruct | |
---|---|---|---|
MERA | 0.335 | 0.392 | 0.513 |
ru-MMLU 5-shot | 0.555 | 0.625 | 0.598 |
Shlepa | 0.36 | 0.388 | 0.482 |
Семейство GigaChat
GigaChat-20B-A3B-instruct | GigaChat-Pro v26.20 | GigaChat-Max v26.20 | |
---|---|---|---|
Математические задачи | |||
GSM8K 5-shot | 0,763 | 0,782 | 0,929 |
MATH 4-shot | 0,426 | 0,446 | 0,53 |
Написание кода | |||
HumanEval 0-shot | 0,329 | 0,439 | 0,64 |
MBPP 0-shot | 0,385 | 0,487 | 0,667 |
Общие знания | |||
MMLU EN 5-shot | 0,648 | 0,687 | 0,804 |
MMLU RU 5-shot Переведенные данные из MMLU EN 5-shot |
0,598 | 0,645 | 0,75 |
MMLU RU 1-shot | — | 0,617 | 0,718 |
MMLU PRO EN 5-shot | 0,348 | 0,431 | 0,589 |
RUBQ 0-shot | 0,675 | 0,724 | 0,73 |
WINOGRANDE 4-shot | 0,75 | 0,796 | 0,832 |
CyberMetric 0-shot | 0,798 | 0,827 | 0,864 |
Следование инструкциям | |||
IFEval 0-shot | 0,411 | 0,566 | 0,721 |
Особенности замеров
GSM8k — это тест, который проверяет, как хорошо модели могут решать задачи с числами. В нашем исследовании мы использовали 5 шотов, чтобы оценить модель, и смотрели на последнее число в ответе. В оригинальное тесте ответ ищется по шаблону: ‘### число’.Тест Math тоже имеет разные версии, которые проверяют математические способности моделей. В нашем исследовании мы давали 4 примера и смотрели на последнее выражение в формате '\boxed{expression}'. Затем оценивали результаты на совпадение с помощью библиотеки sympy.
Requirements
transformers>=4.47
Пример использования через transformers
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
model_name = "ai-sage/GigaChat-20B-A3B-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True, 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))
result = tokenizer.decode(outputs[0][input_tensor.shape[1]:], skip_special_tokens=False)
print(result)
Пример использования через vLLM
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
model_name = "ai-sage/GigaChat-20B-A3B-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
llm = LLM(model=model_name, trust_remote_code=True)
sampling_params = SamplingParams(temperature=0.3, max_tokens=8192)
messages_list = [
[{"role": "user", "content": "Докажи теорему о неподвижной точке"}],
]
prompt_token_ids = [tokenizer.apply_chat_template(messages, add_generation_prompt=True) for messages in messages_list]
outputs = llm.generate(prompt_token_ids=prompt_token_ids, sampling_params=sampling_params)
generated_text = [output.outputs[0].text for output in outputs]
print(generated_text)
В GigaChat-20B-A3B-instruct используется особый способ токенизации текста, поэтому не рекомендуется следующий сценарий
input_string = tokenizer.apply_chat_template(messages,tokenize=False, add_generation_prompt=True)
input_tensor = tokenizer(input_string, return_tensors="pt")
Пример использования vLLM server
Запуск сервера
vllm serve ai-sage/GigaChat-20B-A3B-instruct \
--disable-log-requests \
--trust_remote_code \
--dtype bfloat16 \
--max-seq-len 8192
Пример запроса
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ai-sage/GigaChat-20B-A3B-instruct" ,
"messages": [
{"role": "system", "content": "Ты ОЧЕНЬ умный математик"},
{"role": "user", "content": "Докажи теорему о неподвижной точке"}
]
}'
- Downloads last month
- 1,050