Qwen2.5 is the large language model series developed by Qwen team, Alibaba Cloud.
Qwen2.5基本信息
Qwen2.5介绍
🤗 Hugging Face | 🤖 ModelScope | 📑 Paper (TBD) | 📑 Blog | 📖 Documentation
🖥️ Demo | 💬 WeChat (微信) | 🫨 Discord
访问我们在 Hugging Face 或 ModelScope 的组织主页(点击上方链接),搜索名字以 Qwen2.5-
开头的检查点,或者查看 Qwen2.5 收集合集,您将可以找到所有您需要的内容!享受其中吧!
要了解更多关于 Qwen2.5 的信息,请阅读我们的文档 [EN|ZH]。我们的文档包括以下部分:
- 快速入门:基础用法和演示;
- 推理:使用 Transformer 进行推理的指导,包括批量推理、流推理等;
- 本地运行:在 CPU 和 GPU 上本地运行大语言模型的指引,结合
llama.cpp
和Ollama
框架; - 部署:如何用
vLLM
、TGI
等框架部署 Qwen 进行大规模推理的演示; - 量化:使用 GPTQ、AWQ 进行大语言模型量化的实践,以及如何生成高质量量化 GGUF 文件的指导;
- 训练:后训练指导,包括使用 Axolotl、LLaMA-Factory 等框架进行 SFT 和 RLHF(待定);
- 框架:结合框架使用 Qwen 进行应用,如 RAG、Agent 等;
- 基准测试:关于推理速度和内存占用的统计数据(适用于 Qwen2.5)。
介绍
自 Qwen2 发布以来的三个月里,无数开发者基于 Qwen2 语言模型构建了新的模型,给我们带来了宝贵的反馈意见。在此期间,我们专注于创建更聪明、更具知识的语言模型。今天,我们很高兴向大家介绍 Qwen 家族的最新成员:Qwen2.5。
- 密集、易于使用的仅解码器语言模型,提供 0.5B、1.5B、3B、7B、14B、32B 和 72B 规模的基础和指导版本。
- 在我们最新的大规模数据集上预训练,包含高达 18T 的 Tokens。
- 在遵循指令、生成长文本(超过 8K Tokens)、理解结构化数据(如表格)和生成结构化输出,尤其是 JSON 上取得了显著的改进。
- 对系统提示的多样性更具弹性,增强了角色扮演实施和聊天机器人设置条件的能力。
- 支持的上下文长度可达 128K Tokens,并能生成多达 8K Tokens。
- 支持超过 29 种语言,包括中文、英文、法语、西班牙语、葡萄牙语、德语、意大利语、俄语、日语、韩语、越南语、泰语、阿拉伯语等。
新闻
- 2024.09.19:我们发布了 Qwen2.5 系列。这次增加了 3 个额外的模型规模:3B、14B 和 32B,提供了更多的可能性。查看我们的 博客 了解更多!
- 2024.06.06:我们发布了 Qwen2 系列。查看我们的 博客。
- 2024.03.28:我们发布了 Qwen 的第一个 MoE 模型:Qwen1.5-MoE-A2.7B!目前,只有 HF transformers 和 vLLM 支持该模型。我们将很快增加对 llama.cpp、mlx-lm 等的支持。查看我们的 博客 了解更多信息!
- 2024.02.05:我们发布了 Qwen1.5 系列。
性能
详细的评估结果已在此 📑 博客 中报告。
关于 GPU 内存的要求及对应的吞吐量,请查看 这里 的结果。
快速入门
🤗 Hugging Face Transformers
建议使用最新版本的 transformers
(至少 4.37.0)。这里展示了一段如何使用 transformers
进行聊天模型的代码片段:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-7B-Instruct"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. 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(model.device)
generated_ids = model.generate(
**model_inputs,
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]
对于量化模型,我们建议你使用 GPTQ 和 AWQ 对应的模型,即 Qwen2.5-7B-Instruct-GPTQ-Int8
和 Qwen2.5-7B-Instruct-AWQ
。
🤖 ModelScope
我们强烈建议中国大陆的用户使用 ModelScope。snapshot_download
可以帮助你解决下载检查点的问题。
💻 本地运行
Ollama
安装 ollama 后,您可以使用以下命令启动 ollama 服务:
ollama serve
# 当你使用 ollama 时需要保持此服务运行
要下载一个模型检查点并运行模型,请使用 ollama run
命令。您可以通过在 qwen2.5
后添加后缀来指定模型大小,如 :0.5b
、:1.5b
、:7b
或 :72b
:
ollama run qwen2.5:7b
# 要退出,键入 "/bye" 并按下回车键
您还可以通过其兼容 OpenAI 的 API 访问 ollama 服务。请注意,您需要在使用 API 时保持 ollama serve
运行,并在使用此 API 之前执行 ollama run qwen2.5:7b
以确保模型检查点已准备就绪。
from openai import OpenAI
client = OpenAI(
base_url='http://localhost:11434/v1/',
api_key='ollama', # 必须的但无效
)
chat_completion = client.chat.completions.create(
messages=[
{
'role': 'user',
'content': 'Say this is a test',
}
],
model='qwen2.5:7b',
)
更多详情请访问 ollama.ai。
llama.cpp
下载我们提供的 GGUF 文件或自行创建,然后您可以使用最新的 llama.cpp
通过简单的一行命令直接使用它们:
./llama-cli -m <path-to-file> -n 512 -co -sp -cnv -p "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."
有关额外的指南,请参阅 我们的文档。
MLX-LM
如果您在 Apple Silicon 上运行,我们还提供了与 mlx-lm
兼容的检查点。在 HuggingFace Hub 上寻找以 MLX 结尾的模型,例如 Qwen2.5-7B-Instruct-MLX。
LMStudio
Qwen2.5 已被 lmstudio.ai 支持。您可以直接使用我们的 GGUF 文件与 LMStudio 配合使用。
OpenVINO
Qwen2.5 已被 OpenVINO 工具包 支持。您可以通过 Intel CPU、集成 GPU 或独立 GPU 安装并运行此 聊天机器人示例。
Web UI
文本生成 Web UI
您可以直接使用 text-generation-webui
创建一个 Web UI 演示。如果您使用 GGUF,请记得安装最新版本的 llama.cpp
以支持 Qwen2.5。
llamafile
克隆 llamafile
,执行 source install,然后按照 这里 的指南用 GGUF 文件创建您自己的 llamafile。您可以只用一行命令运行,例如 ./qwen.llamafile
,来创建一个演示。
部署
Qwen2.5 得到了多种推理框架的支持。这里我们展示了 vLLM
、SGLang
和 OpenLLM
的使用方法。
vLLM
[!Warning] 不适用于 vllm 0.6.3。
我们建议您使用最新版本的 vLLM 构建兼容 OpenAI 的 API 服务,包括工具使用支持。用聊天模型启动服务器,例如 Qwen2.5-7B-Instruct
:
vllm serve Qwen/Qwen2.5-7B-Instruct
然后如下所示使用聊天 API:
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "Qwen/Qwen2.5-7B-Instruct",
"messages": [
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
{"role": "user", "content": "Tell me something about large language models."}
],
"temperature": 0.7,
"top_p": 0.8,
"repetition_penalty": 1.05,
"max_tokens": 512
}'
from openai import OpenAI
# 设置 OpenAI 的 API 密钥和 API 基础地址以使用 vLLM 的 API 服务。
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)这个内容讲述了使用不同的API和工具来运行和部署名为Qwen2.5的大语言模型。我们可以从几个部分入手理解这个技术内容。
### SGLang
SGLang 目前提供OpenAI兼容API,但暂不支持工具使用或函数调用。您需要从源代码安装SGLang,并启动一个服务器,通过命令 `python -m sglang.launch_server --model-path Qwen/Qwen2.5-7B-Instruct --port 30000` 来开启服务。在Python中,您可以使用类似的代码来与模型交互:
```python
from sglang import function, system, user, assistant, gen, set_default_backend, RuntimeEndpoint
@function
def multi_turn_question(s, question_1, question_2):
s += system("You are Qwen, created by Alibaba Cloud. You are a helpful assistant.")
s += user(question_1)
s += assistant(gen("answer_1", max_tokens=256))
s += user(question_2)
s += assistant(gen("answer_2", max_tokens=256))
set_default_backend(RuntimeEndpoint("http://localhost:30000"))
state = multi_turn_question.run(
question_1="What is the capital of China?",
question_2="List two local attractions.",
)
for m in state.messages():
print(m["role"], ":", m["content"])
print(state["answer_1"])
OpenLLM
OpenLLM 使得运行Qwen2.5开放源代码的大语言模型变得简单,并提供了OpenAI兼容的API。通过 openllm serve qwen2.5:7b
命令可以启动一个模型服务器,它将会监听 http://localhost:3000/
,用户可以通过OpenAI客户端与API进行交互。
工具使用
如果您想要使用工具或函数调用功能,推荐查看Qwen-Agent,它为这些功能提供支持。Qwen2.5的工具使用同样可以通过Hugging Face的 transformers
、Ollama 和 vLLM 进行。
微调
如果需要对模型进行微调,建议使用一些训练框架,比如Axolotl、Llama-Factory、unsloth 和 Swift,这些框架支持各种训练方法如 SFT、DPO、PPO 等。
许可协议
我们的开放源代码模型(除3B和72B变体外)全部采用Apache 2.0许可协议。无需商业使用提交申请。
引用
如果您觉得我们的工作对您有帮助,可以引用下述格式:
@misc{qwen2.5,
title = {Qwen2.5: A Party of Foundation Models},
url = {https://qwenlm.github.io/blog/qwen2.5/},
author = {Qwen Team},
month = {September},
year = {2024}
}
@article{qwen2,
title={Qwen2 Technical Report},
author={An Yang and Baosong Yang and Binyuan Hui and Bo Zheng and Bowen Yu and Chang Zhou and Chengpeng Li and Chengyuan Li and Dayiheng Liu and Fei Huang and Guanting Dong and Haoran Wei and Huan Lin and Jialong Tang and Jialin Wang and Jian Yang and Jianhong Tu and Jianwei Zhang and Jianxin Ma and Jin Xu and Jingren Zhou and Jinze Bai and Jinzheng He and Junyang Lin and Kai Dang and Keming Lu and Keqin Chen and Kexin Yang and Mei Li and Mingfeng Xue and Na Ni and Pei Zhang and Peng Wang and Ru Peng and Rui Men and Ruize Gao and Runji Lin and Shijie Wang and Shuai Bai and Sinan Tan and Tianhang Zhu and Tianhao Li and Tianyu Liu and Wenbin Ge and Xiaodong Deng and Xiaohuan Zhou and Xingzhang Ren and Xinyu Zhang and Xipin Wei and Xuancheng Ren and Yang Fan and Yang Yao and Yichang Zhang and Yu Wan and Yunfei Chu and Yuqiong Liu and Zeyu Cui and Zhenru Zhang and Zhihao Fan},
journal={arXiv preprint arXiv:2407.10671},
year={2024}
}
联系我们
如果您希望与我们的研究团队或产品团队联系,可以加入我们的 Discord 或 WeChat 群组!