🚀 Qwen2-72B-Instruct
Qwen2-72B-Instruct是通義千問系列的大語言模型,支持長達131,072個標記的上下文長度,能處理大量輸入。該模型在語言理解、語言生成、多語言能力、編碼、數學、推理等一系列基準測試中表現出色,超越了大多數開源模型,並展現出與專有模型競爭的實力。
📄 許可證
本模型使用的許可證為 tongyi-qianwen。
🚀 快速開始
以下是一個使用 apply_chat_template
的代碼片段,展示瞭如何加載分詞器和模型,以及如何生成內容。
基礎用法
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2-72B-Instruct",
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-72B-Instruct")
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
處理長文本
為了處理超過32,768個標記的大量輸入,我們採用了 YARN 技術來增強模型的長度外推能力,確保在長文本上的最佳性能。
部署步驟
- 安裝vLLM:你可以通過運行以下命令來安裝 vLLM。
pip install "vllm>=0.4.3"
或者你可以從 源碼 安裝 vLLM。
- 配置模型設置:下載模型權重後,通過在
config.json
文件中添加以下代碼片段來修改該文件:
{
"architectures": [
"Qwen2ForCausalLM"
],
"vocab_size": 152064,
"rope_scaling": {
"factor": 4.0,
"original_max_position_embeddings": 32768,
"type": "yarn"
}
}
此代碼片段使 YARN 能夠支持更長的上下文。
- 模型部署:使用 vLLM 部署你的模型。例如,你可以使用以下命令設置一個類似 OpenAI 的服務器:
python -m vllm.entrypoints.openai.api_server --served-model-name Qwen2-72B-Instruct --model path/to/weights
然後你可以通過以下方式訪問聊天 API:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen2-72B-Instruct",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Your Long Input Here."}
]
}'
有關 vLLM 的更多使用說明,請參考我們的 GitHub。
⚠️ 重要提示
目前,vLLM 僅支持靜態 YARN,這意味著縮放因子無論輸入長度如何都保持不變,可能會影響短文本的性能。我們建議僅在需要處理長上下文時添加 rope_scaling
配置。
✨ 主要特性
- 量化優化:採用非常激進的2bpw量化,使用 pixiv-novel 作為校準數據集,儘量減少模型在生成小說內容方面的困惑度,保持對應領域的性能。本模型可以在一塊消費級的24G顯卡上加載運行,配合 SillyTavern 使用效果更佳。
- 強大性能:與最先進的開源語言模型(包括之前發佈的 Qwen1.5)相比,Qwen2 在語言理解、語言生成、多語言能力、編碼、數學、推理等一系列基準測試中普遍超越了大多數開源模型,並展現出與專有模型競爭的實力。
- 長上下文支持:Qwen2-72B-Instruct 支持長達131,072個標記的上下文長度,能夠處理大量輸入。
📚 詳細文檔
模型詳情
Qwen2 是一個語言模型系列,包括不同模型大小的解碼器語言模型。對於每個大小,我們都發布了基礎語言模型和對齊的聊天模型。它基於 Transformer 架構,採用 SwiGLU 激活函數、注意力 QKV 偏置、組查詢注意力等。此外,我們還有一個適應多種自然語言和代碼的改進分詞器。
訓練詳情
我們使用大量數據對模型進行了預訓練,並通過監督微調(supervised finetuning)和直接偏好優化(direct preference optimization)對模型進行了後訓練。
依賴要求
Qwen2 的代碼已經集成在最新的 Hugging Face transformers 中,我們建議你安裝 transformers>=4.37.0
,否則你可能會遇到以下錯誤:
KeyError: 'qwen2'
🔧 技術細節
評估對比
我們簡要比較了 Qwen2-72B-Instruct 與類似大小的指令調優大語言模型(LLMs),包括我們之前的 Qwen1.5-72B-Chat。結果如下:
數據集 |
Llama-3-70B-Instruct |
Qwen1.5-72B-Chat |
Qwen2-72B-Instruct |
英文 |
|
|
|
MMLU |
82.0 |
75.6 |
82.3 |
MMLU-Pro |
56.2 |
51.7 |
64.4 |
GPQA |
41.9 |
39.4 |
42.4 |
TheroemQA |
42.5 |
28.8 |
44.4 |
MT-Bench |
8.95 |
8.61 |
9.12 |
Arena-Hard |
41.1 |
36.1 |
48.1 |
IFEval (Prompt Strict-Acc.) |
77.3 |
55.8 |
77.6 |
編碼 |
|
|
|
HumanEval |
81.7 |
71.3 |
86.0 |
MBPP |
82.3 |
71.9 |
80.2 |
MultiPL-E |
63.4 |
48.1 |
69.2 |
EvalPlus |
75.2 |
66.9 |
79.0 |
LiveCodeBench |
29.3 |
17.9 |
35.7 |
數學 |
|
|
|
GSM8K |
93.0 |
82.7 |
91.1 |
MATH |
50.4 |
42.5 |
59.7 |
中文 |
|
|
|
C-Eval |
61.6 |
76.1 |
83.8 |
AlignBench |
7.42 |
7.28 |
8.27 |
📦 安裝指南
請確保安裝 transformers>=4.37.0
,可以使用以下命令進行安裝:
pip install transformers>=4.37.0
若要使用 vLLM 處理長文本,還需安裝 vLLM>=0.4.3
:
pip install "vllm>=0.4.3"
📄 引用
如果你覺得我們的工作有幫助,請隨意引用我們的工作。
@article{qwen2,
title={Qwen2 Technical Report},
year={2024}
}