OLMo3-190M-zh-v3.1

中文 continue-pretrain 教学模型,基于 OLMo3-190M 架构,在 v3 (from-scratch pretrain) 之上注入 事实密度高的中文语料(Wikipedia-zh + Cosmopedia-Chinese)。

活水 42ailab 出品。配套于《零基础 AI 大模型研发训练营》第 04 讲:预训练。

来源与动机

v3.1 的目标是验证 continue pretrain 这个工业级技术:在已有 base model 上继续训练 1-2B tokens,以低成本(**~$14 / 3h H100**)改善特定能力。

对比 v3(原 base)→ v3.1 的 7-prompt 抽测

Prompt v3 v3.1 变化
人工智能是 🟢 🟢 持平
北京大学位于 🔴 "江苏省" 🟢 "北京市" ✅ 关键质变
Python 是一种 🔴 "开源库" 🟡 "开源的可扩展代码" + 能写代码 ✅ 改善
中国古代四大发明是 🔴 🔴 持平(190M 物理天花板)
其他 3 个 🟡×3 🟡×3 + 1 退步
合计 1🟢 3🟡 3🔴 2🟢 3🟡 2🔴 +1 绿

关键 takeaways:

  • 事实密度策略有效:wiki + Cosmopedia 让"北京大学"跨过了 190M 模型的记忆阈值。
  • ⚠️ 190M 参数有记忆天花板:"四大发明"即便在语料中存在,曝光次数不够就学不会。
  • ⚠️ 未清洗的 Wiki 会引入格式污染:红楼梦 prompt 出现"林黛玉、林黛玉、林黛玉的妹妹"重复——已作为 v4 必修项。

架构

基于 OLMo3-190M canonical 架构(和 allenai/Olmo-3 同宗,但从零训练 + continue pretrain):

字段
architectures ["Olmo3ForCausalLM"]
hidden_size 768
num_hidden_layers 12
num_attention_heads 12
intermediate_size 3072
sliding_window 4096 (每 4 层 full attention)
vocab_size 48000 (自训 48k 中文 BPE)
max_position_embeddings 4096
total params ~187M

使用

最简用法(路径 A)

from transformers import AutoModelForCausalLM, AutoTokenizer

tok = AutoTokenizer.from_pretrained("42ailab/OLMo3-190M-zh-v3.1")
model = AutoModelForCausalLM.from_pretrained("42ailab/OLMo3-190M-zh-v3.1")

inputs = tok("北京大学位于", return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=50, temperature=0.8, top_p=0.9)
print(tok.decode(outputs[0], skip_special_tokens=True))

用于 SFT(推荐用法,L05 课程路径)

v3.1 是 base model,没有对话能力。上 SFT 就是:

from transformers import AutoModelForCausalLM
# 作为 SFT 基座
model = AutoModelForCausalLM.from_pretrained("42ailab/OLMo3-190M-zh-v3.1")
# ... 用 TRL SFTTrainer 训练

国内加速

export HF_ENDPOINT=https://hf-mirror.com
# 或用 ModelScope:https://modelscope.cn/models/42ailab/OLMo3-190M-zh-v3.1

训练配方

数据混合(1.19B tokens effective)

数据源 HF 路径 tokens %
v3 replay 自 merged_raw 抽样 30% 300M 27%
Wikipedia-zh wikimedia/wikipedia config 20231101.zh 394M 35%
Cosmopedia-Chinese opencsg/chinese-cosmopedia 500M 45%

(原计划加入 bigcode/the-stack-v2 代码和 liwu/MNBVC 事实补刀,但两者在 HF datasets 3.0+ 中因 script-based loading 失效。v4 会用 Parquet-native 替代。)

超参

  • Base: v3 final checkpoint
  • Peak lr: 2e-4(v3 peak 5e-4 的 2/5)
  • Warmup: 500 steps 显式(从 ~0 线性爬升)
  • Scheduler: cosine decay to 2e-5
  • Batch: 16 × 2048 × grad_accum 8 = 262K tokens/step
  • Max steps: 5700
  • Duration: 3h 00min on H100
  • Attention: SDPA(OLMo3 SWA + flash-attn-2 有 s_aux None bug,continue pretrain 场景必须 SDPA)

Loss 轨迹

step train loss
0 3.33
500 (warmup done) 2.97
1500 2.87
3000 2.81
4500 2.80
5700 (final) 2.85 mean

对比 v3 final mean loss 3.95 → v3.1 **-28%**。

限制

  1. 事实记忆上限:190M 参数约能稳定记住 ~1000-2000 个事实。"四大发明"等低曝光事实仍会错。
  2. 无 code 数据:Stage-2 计划中的代码数据源因 HF gated / script-based 问题未加入。"Python 是编程语言"仍偶有漂移。
  3. 未做 SFT:v3.1 是纯 base model,不会对话。对话任务需额外做 SFT。
  4. eval 数字偏乐观:训练时 eval/loss = 2.00 是在 in-domain 数据上算的(wiki + Cosmopedia 尾部),不能直接对比 v3 的 3.61 held-out eval。

License

  • 模型权重:Apache-2.0(允许商用)
  • 训练数据:混合 license
    • FineWeb-Edu-Chinese V2.2、Ultra-FineWeb、Cosmopedia-Chinese:Apache-2.0
    • Wikipedia-zhCC-BY-SA-3.0 + GFDL(share-alike 传染性,商用前请咨询法律)

按 Allen AI OLMo 社区实践:权重本身声明 Apache-2.0,但披露训练数据含 CC-BY-SA 内容。

Citation

@misc{huoshui-olmo3-190m-zh-v3.1,
  title={OLMo3-190M-zh-v3.1: Chinese Continue-Pretrained Teaching Model},
  author={活水 AI 实验室 (42ailab) and 阳志平},
  year={2026},
  howpublished={\url{https://huggingface.co/42ailab/OLMo3-190M-zh-v3.1}},
  note={LLM001 Course, Lecture 04}
}

配套资源

Downloads last month
261
Safetensors
Model size
0.2B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for 42ailab/OLMo3-190M-zh-v3.1

Finetuned
(69)
this model

Datasets used to train 42ailab/OLMo3-190M-zh-v3.1