--- license: apache-2.0 language: - zh tags: - pretrained - olmo3 - chinese - base-model - llm001 library_name: transformers pipeline_tag: text-generation datasets: - Nwna/olmo3-190m-zh-v2-base-data --- # OLMo3-190M-zh-v2-base **中文 from-scratch pretrain 教学模型**。本模型使用自训 48k 中文 BPE tokenizer 和约 **3.3907B tokens** 中文语料,从零训练 OLMo3-190M 架构 1 epoch。 > 这是《零基础 AI 大模型研发训练营》第 04 讲作业模型。它是 base model,不是 instruction/chat model;适合用于中文续写、继续预训练和后续 SFT。 ## 来源与动机 本模型的目标是完整走通小型中文 LLM 的基础预训练链路: ```text 原始中文语料 -> 自训 48k 中文 BPE tokenizer -> 构建 3.3907B tokenized base 数据 -> 从零训练 OLMo3-190M base model 1 epoch -> 生成评估 -> 推送 HuggingFace ``` 这条 v2 链路没有直接复用老师旧版 tokenized 数据,而是重新训练 tokenizer、重新构建 tokenized 数据,并同步模型 config 的 `vocab_size` 与特殊 token id。 ## 架构 基于 OLMo3-190M causal LM 架构: | 字段 | 值 | |---|---:| | `architectures` | `["Olmo3ForCausalLM"]` | | `hidden_size` | 768 | | `num_hidden_layers` | 12 | | `num_attention_heads` | 12 | | `intermediate_size` | 3072 | | `vocab_size` | 48,000 | | `max_position_embeddings` | 4096 | | training seq_len | 2048 | | total params | ~187M | ## 使用 ```python from transformers import AutoModelForCausalLM, AutoTokenizer tok = AutoTokenizer.from_pretrained("Nwna/olmo3-190m-zh-v2-base") model = AutoModelForCausalLM.from_pretrained("Nwna/olmo3-190m-zh-v2-base") inputs = tok("人工智能是", return_tensors="pt") outputs = model.generate( **inputs, max_new_tokens=120, do_sample=True, temperature=0.8, top_p=0.9, ) print(tok.decode(outputs[0], skip_special_tokens=True)) ``` ### 用于继续预训练 / SFT 这是 base model,没有对话能力。推荐用途是: ```python from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("Nwna/olmo3-190m-zh-v2-base") # 继续做 continue pretrain 或作为 SFT 底座 ``` ## 训练配方 ### Tokenizer 与数据 | 项目 | 值 | |---|---:| | tokenizer | `Nwna/olmo3-190m-zh-v2-tokenizer` | | tokenizer 类型 | 中文 Byte-level BPE | | vocab size | 48,000 | | tokenized data | `Nwna/olmo3-190m-zh-v2-base-data` | | actual tokens | 3,390,687,394 | | dtype | uint16 | 数据主要来自: | 数据源 | 作用 | |---|---| | Ultra-FineWeb-zh | 提供通用中文网页文本,覆盖面广 | | Fineweb-Edu-Chinese-V2.2 | 提供教育类文本,提高知识密度 | ### 超参 | 项目 | 值 | |---|---:| | GPU | H100 | | precision | bf16 | | attention | SDPA | | epochs | 1.0 | | global steps | 12,288 | | per-device batch | 16 | | grad accumulation | 8 | | effective batch | 128 sequences | | tokens / step | 262,144 | | peak lr | 5e-4 | | min lr | 5e-5 | | scheduler | warmup + cosine | | optimizer | AdamW | | weight decay | 0.1,embedding / norm / bias excluded | ## Loss 轨迹 | step | eval_loss | eval_ppl | |---:|---:|---:| | 4,000 | 4.1429 | 63.0 | | 8,000 | 3.9029 | 49.5 | | 12,000 | 3.8042 | 44.9 | 最后 100 条训练日志的 train loss 平均约 **3.797**。训练结束在 step 12,288,最后一次 eval 发生在 step 12,000。 ## 7-prompt 抽测表现 使用 `src/eval.py` 的采样生成设置: ```text max_new_tokens=120 do_sample=True temperature=0.8 top_p=0.9 repetition_penalty=1.1 ``` | Prompt | 表现 | 观察 | |---|---|---| | 人工智能是 | 🟡 | 能生成中文科普段落,但重复与套话明显 | | 山里有座庙 | 🟡 | 可续写,容易转成虚构的文物/寺庙说明 | | 今天天气不错,我准备 | 🟡 | 能续写日常文本,但上下文关系混乱 | | 北京大学位于 | 🔴 | 地理事实不稳定,可能答到错误地点 | | 四大发明是 | 🔴 | 不能稳定列出正确四大发明 | | 《红楼梦》人物 | 🔴 | 容易生成标题式重复或人物混杂 | | Python 是一种 | 🟡 | 知道与编程相关,但定义不稳定 | ## 限制 1. **不是 chat / instruction model**:没有经过 SFT 或 RLHF,不具备稳定对话能力。 2. **事实可靠性有限**:190M 小模型在单轮 1 epoch 训练后仍会产生事实混淆。 3. **采样输出会波动**:`do_sample=True` 时,同一 prompt 多次生成可能不同。 4. **上下文控制较弱**:开放式 prompt 可能漂移到网页、列表、故事或百科腔。 ## License - **模型权重**:Apache-2.0 - **训练数据**:混合来源。请根据各原始数据源许可确认下游使用边界。 ## 配套资源 - Tokenizer: - Tokenized data: - Space demo: - Continue model: ## Citation ```bibtex @misc{nwna-olmo3-190m-zh-v2-base, title={OLMo3-190M-zh-v2-base: Chinese From-Scratch Pretrained Teaching Model}, author={Nwna}, year={2026}, howpublished={\url{https://huggingface.co/Nwna/olmo3-190m-zh-v2-base}}, note={LLM001 Course, Lecture 04 homework} } ```