🚀 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}
}