YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

nanochat-d24

nanochat d24 三阶段训练 checkpoint(pretrain → SFT → RL),4×A100 40GB bf16 训练。

架构

字段 值
depth (n_layer) 24
n_embd 1536
n_head / n_kv_head 12 / 12(无 GQA)
head_dim 128
vocab_size 32768
max_seq_len 2048
window_pattern "L"(A100 走 SDPA,无 sliding window)
参数量 ~412M

训练(详见各阶段 meta_*.json 的 user_config)

阶段 最终 step 关键配置 val_bpb
base (pretrain) 5568 target_param_data_ratio=8(GPT-2 undertrain 风格), total_batch_size=1048576, 4×A100 DDP 0.709
SFT 467 smoltalk + mmlu(3ep) + gsm8k(4ep) packed 1 epoch, optimizer 热启动自 base 0.273
RL 466 GSM8K GRPO, num_epochs=1, num_samples=8, 每 100 步存档 —

仓库结构

tokenizer/
  tokenizer.pkl              # nanochat BPE tokenizer
  token_bytes.pt             # tokenizer 字节表
base_checkpoints/d24/
  model_005568.pt            # base pretrain 权重
  meta_005568.json           # base 配置 + user_config + loop_state
chatsft_checkpoints/d24/
  model_000467.pt            # SFT 权重
  meta_000467.json           # SFT 配置
chatrl_checkpoints/d24/
  model_000466.pt            # RL 最终步权重
  meta_000466.json           # RL 配置

使用方法

下载整个仓库后,把目录树原样合并到 ~/.cache/nanochat/(或你设置的 $NANOCHAT_BASE_DIR):

# 假设仓库 clone 到 ./nanochat-d24
cp -r ./nanochat-d24/* ~/.cache/nanochat/

合并后目录应为:

~/.cache/nanochat/
├── tokenizer/{tokenizer.pkl, token_bytes.pt}
├── base_checkpoints/d24/{model_005568.pt, meta_005568.json}
├── chatsft_checkpoints/d24/{model_000467.pt, meta_000467.json}
└── chatrl_checkpoints/d24/{model_000466.pt, meta_000466.json}

然后用 nanochat 加载(source 可选 base / sft / rl):

from nanochat.checkpoint_manager import load_model
model, tokenizer, meta = load_model("rl", device, phase="eval")

或命令行:

python -m scripts.chat_cli --source=rl -p "your prompt"      # RL 后的对话模型(会数学推理)
python -m scripts.chat_cli --source=sft -p "..."             # SFT 后的对话模型
python -m scripts.chat_cli --source=base -p "..."            # 纯 base,续写模式

--source 不传时默认 sft。load_model 会自动找对应目录下最高 step 的 checkpoint(find_largest_model + find_last_step),所以文件名里的 step 号不需要手动指定。

⚠️ 不是 HuggingFace transformers 格式

本仓库仅包含 nanochat 原生 checkpoint(.pt + meta_*.json),不是 HF transformers / vLLM / Ollama 格式:

  • AutoModelForCausalLM.from_pretrained(...) 加载不了
  • 没有 config.json / model.safetensors / tokenizer_config.json 等 HF 标准文件
  • nanochat 的 GPT 是裸 nn.Module(不是 PreTrainedModel),架构用 RoPE + RMSNorm(无 learnable 参数)+ GQA + 无 bias + relu^2 激活 + sliding window + logit softcap + value embedding,没有现成的 HF 架构完全匹配

要用 transformers / vLLM 需自行写 weight 转换器,参见 nanochat 仓库的 docs/2026-07-18-checkpoint格式pt-vs-safetensors对比.md。

未上传的内容

  • optimizer 分片(optim_*_rank*.pt):DDP 续训热启动用的中间状态,分发场景不需要。chat_rl.py 也根本不读 SFT 的 optim。参考 karpathy/nanochat-d34 的做法同样不传。
  • RL 中间快照(model_000{100,200,300,400}.pt):只保留最终步 466,前面 4 个是训练过程快照。
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support