🚀 dots1
dots.llm1
是一个大规模的 MoE 模型,在 1420 亿总参数中激活 140 亿参数,性能可与最先进的模型相媲美。该模型利用精心设计且高效的数据处理管道,在 1.12 万亿高质量非合成标记上进行预训练后,性能可与 Qwen2.5 - 72B 相匹敌。此外,项目还开源了每万亿标记训练的中间模型检查点,为大语言模型的学习动态研究提供了宝贵见解。
🚀 快速开始
访问我们的 Hugging Face(点击上方链接),搜索以 dots.llm1
开头的检查点,或者访问 dots1 集合,你将找到所需的一切!祝你使用愉快!
✨ 主要特性
模型简介
本仓库包含基础和经过指令微调的 dots.llm1
模型,具有以下特点:
属性 |
详情 |
模型类型 |
一个 MoE 模型,在 1.12 万亿标记上训练,激活 140 亿参数,总参数为 1420 亿 |
训练阶段 |
预训练和 SFT |
架构 |
注意力层采用带 QK - Norm 的多头注意力机制,细粒度 MoE 利用 128 个路由专家中的前 6 个,外加 2 个共享专家 |
层数 |
62 |
注意力头数量 |
32 |
支持语言 |
英语、中文 |
上下文长度 |
32768 个标记 |
许可证 |
MIT |
模型亮点
- 增强的数据处理:我们提出了一种可扩展且细粒度的 三阶段 数据处理框架,旨在为预训练生成大规模、高质量和多样化的数据。
- 预训练阶段无合成数据:基础模型预训练使用了 1.12 万亿 高质量的非合成标记。
- 性能和成本效率:
dots.llm1
是一个开源模型,推理时仅激活 140 亿 参数,兼具全面的能力和高计算效率。
- 基础设施:我们引入了一种基于交错 1F1B 流水线调度和高效分组 GEMM 实现的创新 MoE 全对全通信和计算重叠方案,以提高计算效率。
- 模型动态的开放可访问性:发布了每 1 万亿 标记训练的中间模型检查点,便于未来对大语言模型学习动态的研究。
📦 安装指南
模型下载
Docker(推荐)
Docker 镜像可在 Docker Hub 上获取,基于官方镜像。
你可以通过 vllm 启动一个服务器:
docker run --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
-p 8000:8000 \
--ipc=host \
rednotehilab/dots1:vllm-openai-v0.9.0.1 \
--model rednote-hilab/dots.llm1.inst \
--tensor-parallel-size 8 \
--trust-remote-code \
--served-model-name dots1
然后你可以通过以下方式验证模型是否成功运行:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "dots1",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"}
],
"max_tokens": 32,
"temperature": 0
}'
💻 使用示例
基础用法
使用 huggingface 进行推理
我们正在努力将其合并到 Transformers 中(PR #38143)。
文本补全
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
model_name = "rednote-hilab/dots.llm1.base"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", torch_dtype=torch.bfloat16)
text = "An attention function can be described as mapping a query and a set of key-value pairs to an output, where the query, keys, values, and output are all vectors. The output is"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs.to(model.device), max_new_tokens=100)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)
聊天补全
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
model_name = "rednote-hilab/dots.llm1.inst"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", torch_dtype=torch.bfloat16)
messages = [
{"role": "user", "content": "Write a piece of quicksort code in C++"}
]
input_tensor = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt")
outputs = model.generate(input_tensor.to(model.device), max_new_tokens=200)
result = tokenizer.decode(outputs[0][input_tensor.shape[1]:], skip_special_tokens=True)
print(result)
高级用法
使用 vllm 进行推理
vLLM 是一个用于大语言模型的高吞吐量和内存高效的推理和服务引擎。此功能的官方支持包含在 PR #18254 中。
vllm serve dots.llm1.inst --port 8000 --tensor-parallel-size 8
一个与 OpenAI 兼容的 API 将在 http://localhost:8000/v1
上可用。
使用 sglang 进行推理
SGLang 是一个用于大语言模型和视觉语言模型的快速服务框架。SGLang 可用于启动一个具有与 OpenAI 兼容的 API 服务的服务器。此功能的官方支持包含在 PR #6471 中。
开始使用只需运行以下命令:
python -m sglang.launch_server --model-path dots.llm1.inst --tp 8 --host 0.0.0.0 --port 8000
一个与 OpenAI 兼容的 API 将在 http://localhost:8000/v1
上可用。
📚 详细文档
详细的评估结果在这份 报告 中报告。
📄 许可证
本项目采用 MIT 许可证,详情请见 许可证链接。
引用
如果您发现 dots.llm1
很有用或想在您的项目中使用,请引用我们的论文:
@article{dots1,
title={dots.llm1 Technical Report},
author={rednote-hilab},
journal={arXiv preprint arXiv:TBD},
year={2025}
}