dots.llm1
扫码查看

小红书开源的基于11.2万亿真实语料训练的高性能混合专家大模型

dots.llm1

综合介绍

dots.llm1是由社交平台小红书的技术团队(Rednote-HiLab)开发并开源的首个大语言模型。这是一款采用“混合专家(MoE)”架构的大规模语言模型,总参数量高达1420亿,但在处理任何任务时,仅需激活其中与输入最相关的140亿参数。这种稀疏激活机制使其在性能上足以媲美Qwen2.5-72B等顶级模型,同时极大地降低了推理所需的算力成本。

dots.llm1最核心的优势之一是其训练数据的纯粹性和规模。模型预训练阶段完全未使用任何人工合成数据,而是基于一个通过精密的三阶段流水线处理过的、高达11.2万亿token的真实世界高质量语料库。

为了推动AI社区的研究,团队不仅以MIT许可证完全开源了模型,还史无前例地公开了贯穿整个训练过程的中间检查点,为探索大模型的学习动态提供了宝贵的资源。模型目前已集成到Hugging Face生态中,并提供了详细的论文、在线演示和社区支持。

官方链接

功能列表

  • 顶尖的模型性能: 在多个基准测试中,性能与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库或vLLMSGLang等高性能推理引擎直接进行调用。

模型下载

模型 #总参数 #激活参数 上下文长度 下载链接
dots.llm1.base 142B 14B 32K 🤗 Hugging Face
dots.llm1.inst 142B 14B 32K 🤗 Hugging Face

1. Docker部署 (官方推荐)

官方提供了预置好环境的Docker镜像,可以方便地通过vLLM启动一个兼容OpenAI规范的API服务。

  1. 拉取镜像并启动服务
    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进行张量并行,请根据您的硬件配置修改此数值。

  2. 测试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 高性能部署

为了获得更高的吞吐量和更优的内存效率,可以使用vLLMSGLang进行服务部署。

使用 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

  1. 问题: dots.llm1的“混合专家(MoE)”架构具体是如何工作的?答案: 普通模型在计算时会动用所有参数,而dots.llm1的MoE架构更像一个“专家团队”。这个团队由128个“路由专家”和2个“共享专家”组成。当模型接到一个任务(处理一个文本标记)时,它不会让所有专家都工作,而是通过一个路由机制,智能地挑选出6个最擅长处理当前任务的路由专家,再加上2个通用的共享专家,总共激活8个专家来协同完成计算。这样既能利用整个团队的庞大知识(1420亿参数),又能保证每次工作的效率和低能耗(仅用140亿参数)。
  2. 问题: 是什么让dots.llm1的训练数据如此特别?答案: 它的特别之处在于两点:第一,规模巨大,达到了11.2万亿token;第二,质量极高,所有数据均来自真实的网页世界,没有任何人工合成的数据。为了达到高质量,小红书团队设计了一套严格的三阶段流水线来清洗和筛选数据,包括使用工具去除低质量内容、通过模糊去重技术剔除相似文档、并用模型对内容进行分类和筛选,最终确保知识性内容(如百科、科普)占到60%的高比例。
  3. 问题: dots.llm1.base 和 dots.llm1.inst 有什么不同,我应该用哪个?答案: dots.llm1.base是基础模型,它主要学习了语言的统计规律,最擅长的是根据前文“续写”后文,适合文本生成和补全任务。dots.llm1.inst则是在基础模型之上进行了“指令微调”的聊天模型,它更懂得如何遵循用户的指令、进行对话和完成特定任务。简而言之,如果你要做聊天机器人或问答系统,请使用.inst版本;如果只是需要模型帮你写文章,用.base版本即可。
微信微博Email复制链接