Home
开源技术本页
大模型LLM
author_avatarQwen2.5

Qwen2.5 is the large language model series developed by Qwen team, Alibaba Cloud.

点击访问QwenLM/Qwen2.5
Qwen2.5

Qwen2.5基本信息

未声明
10506stars
646forks
66watching
最近更新时间:2024/11/29, 13:17
最新版本:未发布

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.cppOllama 框架;
  • 部署:如何用 vLLMTGI 等框架部署 Qwen 进行大规模推理的演示;
  • 量化:使用 GPTQ、AWQ 进行大语言模型量化的实践,以及如何生成高质量量化 GGUF 文件的指导;
  • 训练:后训练指导,包括使用 Axolotl、LLaMA-Factory 等框架进行 SFT 和 RLHF(待定);
  • 框架:结合框架使用 Qwen 进行应用,如 RAG、Agent 等;
  • 基准测试:关于推理速度和内存占用的统计数据(适用于 Qwen2.5)。

介绍

自 Qwen2 发布以来的三个月里,无数开发者基于 Qwen2 语言模型构建了新的模型,给我们带来了宝贵的反馈意见。在此期间,我们专注于创建更聪明、更具知识的语言模型。今天,我们很高兴向大家介绍 Qwen 家族的最新成员:Qwen2.5

  • 密集、易于使用的仅解码器语言模型,提供 0.5B1.5B3B7B14B32B72B 规模的基础和指导版本。
  • 在我们最新的大规模数据集上预训练,包含高达 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-Int8Qwen2.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 得到了多种推理框架的支持。这里我们展示了 vLLMSGLangOpenLLM 的使用方法。

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

联系我们

如果您希望与我们的研究团队或产品团队联系,可以加入我们的 DiscordWeChat 群组

参考文章

免责声明:本站大资源来自网络收集整理,小部分资源来自原创,如有侵权等,请联系处理。
AI奇想空间
AI奇想空间
https://aimazing.site
AI 奇想空间是一个汇聚人工智能工具、资源和教程的导航网站。 在这里,你可以发现最新的AI技术、工具和应用,学习如何使用各种 AI 平台和框架,获取丰富的 AI 资源。 欢迎广大 AI 爱好者加入我们的社区,开启你的AI之旅!
AI交流群
Copyright © 2024 AI奇想空间.微信