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
| 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中尝试提高同等时间下的训练速度。 | |