GigaChat-20B-A3B-base

Большая языковая модель, основанна на MoE архитектуре, обучена специально под русский язык с нуля. Всего у модели 20 миллиардов параметров, но во время инференса задействовано только 3 миллиарда. Контекст модели =131k токенов.

Больше подробностей в хабр статье.

Upd. Перезалили веса в .safetensors

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

GigaChat-20B-A3B состоит из следующих деталей:

  • Fine-grained Experts + Shared Experts
  • Grouped Query Attention
  • Rotary Position Embeddings
  • RMSNorm
  • SwiGLU в MLP

Важно то, что в реализации MoE некоторые эксперты вызываются в зависимости от контекста, а другие используются всегда.

Бенчмарки

Общие английские метрики. Для замера использовался популярный открытый репозиторий LM Evaluation Harness.

Bench T-lite-0.1
(llama 3.0 8B based)
Llama-3.1-8B GigaChat-20B-A3B-base Gemma-9B
MMLU (5-shot) 62.56 65.21 63.02 70.6
MMLU-pro (5-shot) 32.19 35.7 31.41 42.85
MMLU-ru (5-shot) 55.51 54.1 58.38 62.57
BBH (3-shot) 62.36 62.79 53.54 70.48
ARC-C (25-shot) 58.19 54.69 61.69 68.34
TruthfulQA (0-shot) (rougeL) 46.51 34.52 31.82 41.49
Winogrande (5-shot) 78.45 77.43 75.85 79.4
Hellaswag (10-shot) 82.21 81.85 81.91 82.5
GPQA (5-shot) 0.25 23.44 25.22 30.36
MATH (4-shot) 12.9 14.04 15.04 20.06
GSM8K (4-shot) (strict-match) 67.93 51.4 59.06 68.99
HumanEval 16.46 25.61 32.32 37.2
AVG 47.96 48.4 49.11 56.24

Requirements

  • transformers>=4.47

Пример использования через transformers

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig

model_name = "ai-sage/GigaChat-20B-A3B-base"
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 = (
    "Ниже я написал подробное доказательство теоремы о неподвижной точке:"
)
input_tensor = tokenizer(messages, return_tensors="pt").input_ids
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-base"
llm = LLM(model=model_name, tokenizer=model_name, trust_remote_code=True)
sampling_params = SamplingParams(
    temperature=0.3,
    max_tokens=8192,
    stop_token_ids=[tokenizer.eos_token_id]
)

messages = (
    "Ниже я написал подробное доказательство теоремы о неподвижной точке:"
)
outputs = llm.generate(messages, sampling_params=sampling_params)
generated_text = [output.outputs[0].text for output in outputs]
print(generated_text)

Скорость генерации

Model Total params (B) Active params (B) Req/s Output Token/s Total Token/s
Qwen/Qwen1.5-MoE-A2.7B-Chat 14 2,7 0,62 156,43 291,17
deepseek-ai/deepseek-moe-16b-chat 16 2,8 0,59 149,53 285,39
GigaChat-20B-A3B 20 3,3 0,55 137,43 259,27
Qwen/Qwen2.5-3B-Instruct 3 3 0,54 135,10 251,44
meta-llama/Meta-Llama-3-8B-Instruct 8 8 0,35 83,26 157,32
google/gemma-2-9b-it 9 9 0,27 54,87 113,69
Downloads last month
214
Safetensors
Model size
20.6B params
Tensor type
F32
·
Inference API
Unable to determine this model's library. Check the docs .

Model tree for ai-sage/GigaChat-20B-A3B-base

Finetunes
1 model