--- license: apache-2.0 language: - zh tags: - pretrained - olmo3 - chinese - continue-pretrain - mid-training library_name: transformers pipeline_tag: text-generation base_model: allenai/Olmo-3-1025-7B datasets: - openbmb/Ultra-FineWeb - opencsg/chinese-cosmopedia - wikimedia/wikipedia --- # 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) ```python 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 就是: ```python from transformers import AutoModelForCausalLM # 作为 SFT 基座 model = AutoModelForCausalLM.from_pretrained("42ailab/OLMo3-190M-zh-v3.1") # ... 用 TRL SFTTrainer 训练 ``` ### 国内加速 ```bash 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-zh**:**CC-BY-SA-3.0 + GFDL**(share-alike 传染性,商用前请咨询法律) 按 Allen AI OLMo 社区实践:权重本身声明 Apache-2.0,但披露训练数据含 CC-BY-SA 内容。 ## Citation ```bibtex @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} } ``` ## 配套资源 - **数据集**:[`42ailab/llm101-v3.1-data`](https://huggingface.co/datasets/42ailab/llm101-v3.1-data) — tokenizer + tokenized.bin + nano 子集 + 7-prompt 评测对照 - **课程仓库**:https://cnb.cool/42edu/LLM001/llm001 - **讲师笔记**:`demo/ch04/OLMo3-190M-zh-v3.1/teaching_notes.md`