Text Generation
Transformers
Safetensors
Chinese
English
ynet31
custom_code
ymodel
ymodel31
conversational
Instructions to use SnifferCaptain/YModel3.1-200M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use SnifferCaptain/YModel3.1-200M with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="SnifferCaptain/YModel3.1-200M", trust_remote_code=True) messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("SnifferCaptain/YModel3.1-200M", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use SnifferCaptain/YModel3.1-200M with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "SnifferCaptain/YModel3.1-200M" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SnifferCaptain/YModel3.1-200M", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/SnifferCaptain/YModel3.1-200M
- SGLang
How to use SnifferCaptain/YModel3.1-200M with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "SnifferCaptain/YModel3.1-200M" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SnifferCaptain/YModel3.1-200M", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "SnifferCaptain/YModel3.1-200M" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "SnifferCaptain/YModel3.1-200M", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use SnifferCaptain/YModel3.1-200M with Docker Model Runner:
docker model run hf.co/SnifferCaptain/YModel3.1-200M
File size: 9,002 Bytes
95de9c3 e5e01a9 95de9c3 e5e01a9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | ---
license: mit
language:
- zh
- en
pipeline_tag: text-generation
library_name: transformers
tags:
- custom_code
- safetensors
- ymodel
- ymodel31
---
# ymodel3.1-200m
`ymodel3.1-200m` 是基于
[`SnifferCaptain/ymodel3.1-200m-pt`](https://huggingface.co/SnifferCaptain/ymodel3.1-200m-pt)
继续监督微调得到的 YModel3.1 对话模型。模型采用 `ynet3.1` 架构,在
YModel3 的 `ynet3` 架构上加入了 Sengram 稀疏记忆模块,在维持较低额外计算量的同时扩展模型容量。
本版本面向中英文对话、通用推理、数学与代码任务,使用 ChatML 风格的对话模板,并支持包含
`<think>...</think>` 的推理数据格式。
## 模型架构
YModel3.1 保留了 YModel3 的主体设计:
- 注意力采用 MLGA(Multi-head Latent Gated Attention),结合 MLA 的 KV 潜在表示与 Gated Attention;门控位于注意力输出之后、输出投影之前。
- FFN 采用 SwiGLU。
- 每个 RMSNorm 后接一个 SEBlock。
- Token Embedding 与 LM Head 共享权重。
在此基础上,YModel3.1 新增 Sengram(Simplified Engram)稀疏记忆模块:
- `SengramIndexer` 在 Token Embedding 输出上仅运行一次,通过线性投影、Softmax 与 Top-K 得到 `route_ids` 和 `route_scores`。
- 所有 Transformer 层共享同一份路由结果,避免在每一层重复执行 Indexer。
- 每一层拥有独立的 `SengramPLE`(Per-Layer Embedding)表。PLE 按共享路由完成加权嵌入查找,并在该层 RMSNorm 与 MLGA 之前直接加到残差流中。
- Sengram 不使用 n-gram 哈希与额外门控;稀疏路由位于连续语义空间中,因此不局限于纯文本 n-gram 建模。

## 模型参数
| 键 | 值 |
| --- | --- |
| 基座模型 | `SnifferCaptain/ymodel3.1-200m-pt` |
| 架构 | YModel3.1 / ynet3.1 |
| 参数量 | 210.224M |
| 层数 | 12 |
| 隐藏层维度 | 768 |
| 词表大小 | 6400 |
| 注意力机制 | MLGA |
| 注意力头数 | 8 |
| QK 头维度 | 192(NoPE 128 + RoPE 64) |
| KV 潜在维度 | 256 |
| FFN 激活函数 | SwiGLU |
| FFN 中间层大小 | 2048 |
| 归一化 | RMSNorm + SEBlock |
| Sengram 桶大小 | 8192 |
| Sengram Top-K | 8 |
| 上下文长度 | 4096 |
| 权重数据类型 | bfloat16 |
参数量按加载模型后的独立参数统计。Token Embedding 与 LM Head 共享同一份权重;SFT 阶段冻结
这组共享权重,因此可训练参数量不包含该部分。
## 训练细节
- 在预训练阶段,模型在512长度的上下文充分使用**5B tokens**,1e-4带warmup的余弦退火到1e-5的学习率下,完成预训练。最终的ppl为5.041(6400BPE词表长度)
- 在sft阶段,模型在1536到4096长度的上下文充分使用**4.7B tokens**,1e-5带warmup的余弦退火到1e-7的学习率下,以batch size为128k完成监督微调。最终的ppl为3.49(6400BPE词表长度)
- 模型全程采用与YModel3相同的**SiMuon优化器**训练
- 模型的tokenlizer与词嵌入层使用的是预训练权重,来自MiniMind3-v( https://github.com/jingyaogong/minimind )
- 预训练阶段采用的批次大小为前50% 64k tokens/step、后50% 128k tokens/step
## 对话格式
模型使用内置 ChatML 风格模板:
1. **思考模式**:
```text
<|im_start|>system
{system prompt}<|im_end|>
<|im_start|>user
{user content}<|im_end|>
<|im_start|>assistant
<think>juice = {JUICE}
{reasoning content}</think>
{assistant content}<|im_end|>
```
2. **非思考模式**:
```text
<|im_start|>system
{system prompt}<|im_end|>
<|im_start|>user
{user content}<|im_end|>
<|im_start|>assistant
{assistant content}<|im_end|>
```
## 性能表现
### 输出示例
**关闭思考:**
```text
user: 请介绍一下自己。
assistant: 我是一个语言模型,由SnifferCaptain开发。我可以帮助回答问题、提供信息和进行对话。我的目标是准确、简洁地回应您的请求。
```
**juice = 0.67:**
```text
user: 请介绍一下自己。
assistant: <think>juice = 0.67
好的,用户让我介绍自己的。首先,我需要确认用户使用的语言是中文,所以回应也要用中文。根据规则,简单问题要直接回答,不需要多余的分析。但这里可能不算太复杂,因为身份信息只到“现在”,可能需要稍微详细一点。不过还是按照简洁的方式来,先给出基本介绍。确保没有使用任何emoji,保持专业。
</think>
我是一个由SnifferCaptain开发、训练的AI助手,专注于提供准确、清晰且符合用户需求的服务。我的设计原则包括:
1. 严格遵循语言一致性;
2. 使用中文输出,并动态调整响应深度(简单/中等);
3. 在保证完整性的前提下,针对不同场景优化响应策略。
```
**juice = 2.67:**
```text
user: 请介绍一下自己。
assistant: <think>juice = 2.67
好的,用户让我介绍一下自己的名字。首先,我需要确认用户的需求是什么。他们可能是在测试我的身份识别能力,或者真的有自我介绍需求。根据之前的指示,对于简单问题要给出直接回答,而复杂问题需要详细分析。这里用户的要求是“介绍”,所以属于中等复杂度的问题,可能需要稍微深入一点。
接下来,我得回忆一下SnifferCaptain的设定:不使用表情符号,保持语言一致,动态调整响应深度。同时,不能主动披露身份,所以不能提到自己是由谁创建的,比如SnifferCaptain这个AI模型。不过用户现在用中文提问,但系统本身也是用中文回答的,所以需要确保回应完全匹配用户使用的语言。
然后,检查是否有隐藏的意图。用户可能希望了解我的功能或如何与之互动,比如是否需要帮助、解释概念等。这时候应该简明扼要地说明我的作用,但不需要展开太多细节。例如,可以说“我可以协助您解答各种问题”这样既符合简洁性又展示了灵活性和适应性。
另外,用户可能没有明确说明他们的使用场景,比如是用于学习、工作还是其他目的。如果是学生,可能需要更基础的信息;如果是商业用途,可能需要更专业的术语和结构化的内容。因此,在介绍时应该兼顾不同方面,提供全面且易于理解的例子。
还需要注意避免冗长的分析,因为这是一个相对简单的请求。按照规则,简单问题不需要冗余分析,所以只需列出关键点即可。同时,必须确保每个部分都准确无误,比如提到的动态响应深度分为几个步骤,以及内部处理流程。
最后,检查是否有必要请求澄清。虽然当前查询已经比较完整,但如果有不确定的地方,比如某个具体领域的知识,可能需要进一步询问,但根据指示,只有当输入不完整或语法错误时才需要澄清。目前的情况是用户的问题比较笼统,没有具体上下文,所以暂时先按常规情况处理。
总结回答结构:
- 姓名(假设为SnifferCaptain)
- AI助手名称
- 核心功能(如信息检索、知识库、逻辑推理)
- 使用方式(分点说明)
示例说明:
"作为SnifferCaptain开发的智能助手,我的角色是协助用户解决问题并提供准确信息。"
- 涵盖信息获取、知识整合、逻辑推理、语言适配等方面
- 强调响应策略,如优先级排序、实时更新、多轮对话管理
- 避免使用emoji,保持专业风格
- 结束语句(感谢)。
确保语言与用户一致,用户用中文提问,就继续用中文回答。同时注意不要透露身份,除非被明确询问。检查是否有遗漏的关键点,比如技术限制或常见误解,但在这个案例中,主要重点放在功能上。完成后再通读一遍,确保流畅自然。
</think>
作为SnifferCaptain开发的智能助手,我的角色是协助用户解决各类问题。核心功能包括:
1. **信息检索**:快速定位并精准返回相关资料(如学术论文、行业报告);
2. **知识整合**:支持跨领域知识关联(如医疗/金融/科技);
3. **逻辑推演**:通过已验证答案进行因果关系判断(如预测未来风险);
4. **语言交互**:同步输出标准化表达(如英文→中文),保持与用户语言一致。
若需特定应用场景(如教育/客服/编程辅助),请提供更多背景信息以便优化方案。
```
## 局限性
- `ymodel3.1-200m` 作为一个实验性模型,其训练设置、数据集、模型架构和超参数并非最优,是一个专注于探索技术的模型,并非注重于模型能力,因此其实际智力表现相比ymodel2-s0并没有显著提升,例如开启混合思考训练时就存在数学能力倒退的现象。
- `ymodel3.1-200m` 训练效率较低,我会在ymodel4中尝试提高同等时间下的训练速度。
|