--- language: zh license: apache-2.0 library_name: transformers tags: - olmo3 - chinese - pretrained - text-generation - rtx4060 pipeline_tag: text-generation model-index: - name: OLMo3-190M-zh-full results: - task: type: text-generation dataset: name: Chinese Pretraining Data type: llm101-olmo3-zh-demo-data metrics: - type: eval_loss value: 3.624 name: Eval Loss --- # OLMo3-190M-zh-full **从零开始、在 RTX 4060 8GB 上预训练的 190M 中文语言模型。** ## 模型概述 这是一个基于 OLMo3 架构的 **190M 参数中文预训练模型**,完全从随机初始化(from scratch)开始训练,未依赖任何已有预训练权重。 - 🏗️ **架构**: OLMo3(Sliding Window Attention + Full Attention 混合) - 📏 **参数**: 187M 总参数(113M 非嵌入参数) - 🌐 **语言**: 中文 - 📚 **训练数据**: `cmz1024/llm101-olmo3-zh-demo-data`(~93 万条中文序列) - 🖥️ **硬件**: NVIDIA RTX 4060 8GB(本地训练) - ⏱️ **训练耗时**: ~47 小时 ## 模型架构 | 参数 | 值 | |------|-----| | hidden_size | 768 | | num_layers | 12 | | num_heads | 12 | | intermediate_size | 3072 | | vocab_size | 48,000 | | max_position_embeddings | 2048 | | 注意力机制 | Sliding Window(每 4 层中 3 层)+ Full Attention(1 层) | ## 训练细节 | 配置 | 值 | |------|-----| | 优化器 | AdamW (β1=0.9, β2=0.95) | | 学习率 | 5e-4(cosine decay) | | Warmup | 2%(~320 steps) | | 序列长度 | 2048 | | Batch Size | 1 × 128 grad_accum(等效 128) | | 精度 | bf16 | | 总步数 | 7,675 | | Eval Loss | **3.624** | ### Loss 曲线 ``` Step 500: eval_loss=5.307 Step 1000: eval_loss=4.534 Step 1500: eval_loss=4.243 Step 2000: eval_loss=4.087 Step 2500: eval_loss=3.986 Step 3000: eval_loss=3.906 Step 3500: eval_loss=3.841 Step 4000: eval_loss=3.790 Step 4500: eval_loss=3.747 Step 5000: eval_loss=3.709 Step 5500: eval_loss=3.678 Step 6000: eval_loss=3.654 Step 6500: eval_loss=3.637 Step 7000: eval_loss=3.627 Step 7500: eval_loss=3.624 ``` 初始 loss 10.92 → 最终 3.624,**下降 66.8%**。 ## 使用方法 ```python from transformers import AutoModelForCausalLM, AutoTokenizer import torch model = AutoModelForCausalLM.from_pretrained( "ynanxiu/olmo3-190M-zh-full", torch_dtype=torch.bfloat16, attn_implementation="sdpa" ).to("cuda") tokenizer = AutoTokenizer.from_pretrained("ynanxiu/olmo3-190M-zh-full") prompt = "从前有座山,山里有座庙," inputs = tokenizer(prompt, return_tensors="pt").to("cuda") outputs = model.generate( **inputs, max_new_tokens=100, do_sample=True, temperature=0.8, top_p=0.9, ) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` ## 生成示例 **Prompt**: `从前有座山,山里有座庙,` **生成**: 庙里有一座庙宇,庙里有一棵大树。有一天早晨起来,发现一棵树上有个苹果树...两个大猴子在树下各捉一个,猴子在树上捉一个... **Prompt**: `人工智能是` **生成**: 人工智能是未来的趋势,它给人类带来了新的机会。在人工智能领域,人工智能的潜力是非常大的... ## 限制与用途 - ✅ 适用于:中文文本生成、续写、作为下游任务的基座模型 - ⚠️ 注意:这是基础预训练模型,未经过 SFT/RLHF,输出为续写风格而非对话风格 - ⚠️ 模型可能产生重复或不一致的内容(190M 参数规模限制) - 🔧 建议:可在此基础上进行持续预训练或 SFT 以获得更好效果 ## 环境足迹 - 硬件:NVIDIA RTX 4060 8GB(消费级 GPU) - 训练功耗:~115W × 47h ≈ 5.4 kWh - 训练方式:本地训练,无云计算碳排放 ## 相关模型 - [OLMo3-190M-zh-continue](https://huggingface.co/ynanxiu/olmo3-190M-zh-continue):22M Nano 版本的持续预训练模型 - 训练代码基于 [openmind-llm01](https://github.com/your-org/openmind-llm01) 课程项目