dots.llm1
综合介绍
dots.llm1
是由社交平台小红书的技术团队(Rednote-HiLab)开发并开源的首个大语言模型。这是一款采用“混合专家(MoE)”架构的大规模语言模型,总参数量高达1420亿,但在处理任何任务时,仅需激活其中与输入最相关的140亿参数。这种稀疏激活机制使其在性能上足以媲美Qwen2.5-72B等顶级模型,同时极大地降低了推理所需的算力成本。
dots.llm1
最核心的优势之一是其训练数据的纯粹性和规模。模型预训练阶段完全未使用任何人工合成数据,而是基于一个通过精密的三阶段流水线处理过的、高达11.2万亿token的真实世界高质量语料库。
为了推动AI社区的研究,团队不仅以MIT许可证完全开源了模型,还史无前例地公开了贯穿整个训练过程的中间检查点,为探索大模型的学习动态提供了宝贵的资源。模型目前已集成到Hugging Face生态中,并提供了详细的论文、在线演示和社区支持。
官方链接
- Hugging Face模型集: dots1 collection
- 技术报告 (论文): Arxiv Paper
- 在线演示 (Demo): Hugging Face Spaces
- 小红书官方账号: rednote
- 微信交流群: WeChat
功能列表
- 顶尖的模型性能: 在多个基准测试中,性能与Qwen2.5-72B等顶尖密集模型相当,尤其在中文综合能力上表现突出。
- 纯粹的真实数据训练: 预训练阶段完全基于一个11.2万亿token的庞大非合成高质量语料库,确保了模型知识的真实性和可靠性。
- 精密的混合专家(MoE)架构:
- 模型共62层,总参数1420亿,推理时仅激活140亿。
- MoE模块采用细粒度设计,由128个路由专家和2个共享专家组成。
- 每个token的处理会通过路由机制动态选择评分最高的6个路由专家,外加2个固定的共享专家共同参与计算。
- 先进的注意力与归一化技术: 注意力层采用了多头注意力机制(MHA),并特别引入了
QK-Norm
对Query和Key向量进行归一化,增强了模型的训练稳定性。 - 高效的训练基础设施: 引入了创新的MoE通信与计算重叠方案(基于1F1B流水线调度)和高效的grouped GEMM实现,大幅提升了训练效率。
- 完全开放的研究资源: 开源了所有训练过程中的中间模型检查点,为学术界研究大模型的学习动态提供了前所未有的便利。
- 多语言与长文本支持: 支持英文和中文,并能处理长达32,768个token的上下文。
使用帮助
官方推荐使用Docker环境进行部署,同时也支持通过Hugging Face transformers
库或vLLM
、SGLang
等高性能推理引擎直接进行调用。
模型下载
模型 | #总参数 | #激活参数 | 上下文长度 | 下载链接 |
---|---|---|---|---|
dots.llm1.base |
142B | 14B | 32K | 🤗 Hugging Face |
dots.llm1.inst |
142B | 14B | 32K | 🤗 Hugging Face |
1. Docker部署 (官方推荐)
官方提供了预置好环境的Docker镜像,可以方便地通过vLLM
启动一个兼容OpenAI规范的API服务。
- 拉取镜像并启动服务
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
注:
--tensor-parallel-size 8
表示使用8个GPU进行张量并行,请根据您的硬件配置修改此数值。 - 测试API服务
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 }'
2. Hugging Face Transformers 推理
可以直接使用transformers
库加载模型进行推理。官方正在努力将模型合并到transformers
主库中(PR #38143)。
文本补全 (使用.base模型)
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
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)```
#### 聊天对话 (使用.inst模型)
```python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
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)
3. vLLM / SGLang 高性能部署
为了获得更高的吞吐量和更优的内存效率,可以使用vLLM
或SGLang
进行服务部署。
使用 vLLM
# 安装vLLM后运行
vllm serve rednote-hilab/dots.llm1.inst --port 8000 --tensor-parallel-size 8
使用 SGLang
# 安装SGLang后运行
python -m sglang.launch_server --model-path rednote-hilab/dots.llm1.inst --tp 8 --host 0.0.0.0 --port 8000
以上两种方式都会在http://localhost:8000/v1
地址启动一个兼容OpenAI的API服务。
QA
- 问题:
dots.llm1
的“混合专家(MoE)”架构具体是如何工作的?答案: 普通模型在计算时会动用所有参数,而dots.llm1
的MoE架构更像一个“专家团队”。这个团队由128个“路由专家”和2个“共享专家”组成。当模型接到一个任务(处理一个文本标记)时,它不会让所有专家都工作,而是通过一个路由机制,智能地挑选出6个最擅长处理当前任务的路由专家,再加上2个通用的共享专家,总共激活8个专家来协同完成计算。这样既能利用整个团队的庞大知识(1420亿参数),又能保证每次工作的效率和低能耗(仅用140亿参数)。 - 问题: 是什么让
dots.llm1
的训练数据如此特别?答案: 它的特别之处在于两点:第一,规模巨大,达到了11.2万亿token;第二,质量极高,所有数据均来自真实的网页世界,没有任何人工合成的数据。为了达到高质量,小红书团队设计了一套严格的三阶段流水线来清洗和筛选数据,包括使用工具去除低质量内容、通过模糊去重技术剔除相似文档、并用模型对内容进行分类和筛选,最终确保知识性内容(如百科、科普)占到60%的高比例。 - 问题:
dots.llm1.base
和dots.llm1.inst
有什么不同,我应该用哪个?答案:dots.llm1.base
是基础模型,它主要学习了语言的统计规律,最擅长的是根据前文“续写”后文,适合文本生成和补全任务。dots.llm1.inst
则是在基础模型之上进行了“指令微调”的聊天模型,它更懂得如何遵循用户的指令、进行对话和完成特定任务。简而言之,如果你要做聊天机器人或问答系统,请使用.inst
版本;如果只是需要模型帮你写文章,用.base
版本即可。