Gaggle nanochat IFT
3,3-млрд чат-модель без RL
Это чат-модель от castorini на базе castorini/gaggle-nanochat-pretrained-climbmix-20260924. Её дообучили стандартным двухэтапным рецептом nanochat — midtraining, затем SFT, без RL. Архитектура и токенизатор базовой модели не менялись; 3.29B параметров, контекст 2048 ��окенов.
⭐ Ключевые особенности
- 🤖 Архитектура nanochat depth-34: 34 слоя, ширина 2176, 17 голов attention по 128, контекст 2048 токенов.
- 📌 Чат-формат nanochat:
<|bos|>, затем пары<|user_start|>...<|user_end|>и<|assistant_start|>...<|assistant_end|>. - 💻 Один чекпойнт грузится через
transformersсtrust_remote_code=True, через vLLM с плагином базовой модели и через код nanochat. - 📓 Midtraining: 816 шагов, 849 656 строк данных; SFT: 701 шаг, 22 443 строки; обе стадии без replay ClimbMix.
- ⏳ Обучение на одной NVIDIA H100 80GB: midtraining — 3 ч 10 мин, SFT — 25 мин.
💻 Пример
import torch; from transformers import AutoModelForCausalLM, AutoTokenizer
repo = 'castorini/gaggle-nanochat-ift-climbmix-20261031'
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, trust_remote_code=True, dtype=torch.bfloat16).to('cuda').eval()
messages = [{'role': 'user', 'content': 'What is the capital of France?'}]
inputs = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors='pt', return_dict=True).to('cuda')
out = model.generate(**inputs, max_new_tokens=64, do_sample=False)
print(tok.decode(out[0, inputs['input_ids'].shape[1]:], skip_special_tokens=True))
Подробнее
Бенчмарки zero-shot chat: MMLU 44.93, MMLU-Pro 19.97, ARC-Challenge 68.00, GSM8K 30.63, HumanEval 15.85, ChatCORE 0.412.Для сравнения: nanochat d34 после IFT — ChatCORE 0.302, GSM8K 13.65, HumanEval 11.59.
Железо: одна H100 80GB; midtraining 3 ч 10 мин, SFT 25 мин. Контекст — 2048 токенов.
Ограничения: только английский, без RL; промпты нужно подавать в чат-формате nanochat.








Комментарии