当前位置:首页|资讯

全网首发:最新开源模型推理框架部署Qwen2.5-7b-instruct模型实战

作者:wwwzhouhui发布时间:2024-09-20

前言

2024年9月18日阿里开源了Qwen2.5一系列模型,及专门针对编程的 Qwen2.5-Coder 和数学的 Qwen2.5-Math 模型。所有开放权重的模型都是稠密的、decoder-only的语言模型,提供多种不同规模的版本,包括:

  • Qwen2.5: 0.5B, 1.5B, 3B, 7B, 14B, 32B, 以及72B;

  • Qwen2.5-Coder: 1.5B, 7B, 以及即将推出的32B;

  • Qwen2.5-Math: 1.5B, 7B, 以及72B。

除了3B和72B的版本外,Qwen2.5所有的开源模型都采用了 Apache 2.0 许可证。您可以在相应的模型仓库中找到许可证文件。此外,本次通义千问团队还开源了性能不输于GPT-4o的 Qwen2-VL-72B

具有以下特点:

  • 更大的训练数据集:Qwen2.5 语言模型的所有尺寸都在最新的大规模数据集上进行了预训练,该数据集包含多达 18T tokens。相较于 Qwen2,Qwen2.5 获得了显著更多的知识(MMLU:85+),并在编程能力(HumanEval 85+)和数学能力(MATH 80+)方面有了大幅提升。

  • 更强的指令遵循能力:新模型在指令执行、生成长文本(超过 8K 标记)、理解结构化数据(例如表格)以及生成结构化输出特别是 JSON 方面取得了显著改进。Qwen2.5 模型总体上对各种system prompt更具适应性,增强了角色扮演实现和聊天机器人的条件设置功能。

  • 长文本支持能力:与 Qwen2 类似,Qwen2.5 语言模型支持高达 128K tokens,并能生成最多 8K tokens的内容。

  • 强大的多语言能力:它们同样保持了对包括中文、英文、法文、西班牙文、葡萄牙文、德文、意大利文、俄文、日文、韩文、越南文、泰文、阿拉伯文等 29 种以上语言的支持。

  • 专业领域的专家语言模型能力增强,即用于编程的 Qwen2.5-Coder 和用于数学的 Qwen2.5-Math,相比其前身 CodeQwen1.5 和 Qwen2-Math 有了实质性的改进。具体来说,Qwen2.5-Coder 在包含 5.5 T tokens 编程相关数据上进行了训练,使即使较小的编程专用模型也能在编程评估基准测试中表现出媲美大型语言模型的竞争力。同时,Qwen2.5-Math 支持 中文 和 英文,并整合了多种推理方法,包括CoT(Chain of Thought)、PoT(Program of Thought)和 TIR(Tool-Integrated Reasoning)。

前2天我使用ollama 对4B量化版Qwen2.5-7B-Instruct模型进行了测试,测试效果还是非常不错的。有的小伙伴给我留言了。有没有云平台上部署的相关教程了。今天就给大家发福利了。使用启智平台利用主流的推理框架来实现Qwen2.5-7B-Instruct模型推理和发布。话不多说,下面我们进入项目实际操作。

1.登录启智平台

https://openi.pcl.ac.cn/

2.创建云脑任务

我们新建云脑任务

目前启智平台提供4中AI 训练任务(调试任务、训练任务、在线推理、通用任务),这里我们选择调试任务。

所属项目 我们选择一个已经有的项目,没有项目 可以新建,这个就不详细展开。(可以点击右上角)

接下来我们会遇到选择算力平台,启智平台目前提供好几个厂商的算力平台。(英伟达、昇腾NPU、遂源GCU、寒武纪MLU、海光DCU、天数智芯GPGPU、沐曦GPGPU) 这里我们选华为昇腾NPU

资源规格 这块我们选英伟达GPU择显卡。(A100 显存40GB )

镜像 这块它是随着我们选择ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14镜像

这里我们选择阿里qwen2.5-7b-instruct 模型(这里我们需要注意不要选择FoundationModel所属项目Qwen2.5-7B-Instruct模型

我们需要选择zhouhui所属项目Qwen2.5-7B-Instruct模型.为什么呢? 看后面的常见问题及解答


模型选择后,回到新建模型列表页面,点击新建任务等待服务器创建新任务。

当分配资源完成后,状态变成运行状态,这个时候右边操作 会出现调试按钮。

3.模型调试

我们点击调试按钮,进入jupyterlab 调试代码界面

3.1 检查挂载模型

这个时候模型挂载在哪个目录下呢?我们使用启智平台提供的c2net库访问方式,可以在启动界面找到挂载模型路径


我们会看到图右上角 左边代码区/tmp/code、数据存储区域/tmp/dataset 模型存放区域/tmp/pretrainmodel 3 个文件夹,顾名思义,code 是放代码的;dataset放数据集的;pretrainmodel 就是模型挂载的目录。

我们进入pretrainmodel

cd /tmp/pretrainmodel

模型已经挂在到上面截图的目录了。

接下来我们使用几个主流的模型推理框架来测试验证Qwen2.5-7B-Instruct 模型的推理。下面是有一张表记录各个框架的版本


3.2 swift推理

3.2.1 swift推理框架安装

接下来我们需要再code 代码目录下面下载lmdeploy推理程序并安装。

cd /tmp/code
git clone https://github.com/modelscope/swift.git
# 如果网络慢可以使用下面代理
git clone https://mirror.ghproxy.com//https://github.com/modelscope/swift.git
cd swift
pip install -e '.[llm]' -i https://pypi.tuna.tsinghua.edu.cn/simple/
#升级accelerate
pip install accelerate -U
# 安装tf-keras
#pip install tf-keras -i https://pypi.tuna.tsinghua.edu.cn/simple/


检查一下swift

pip show ms-swift

3.2.2 修改swift框架 infer.py 代码

 在代码/tmp/code/swift/swift/llm/infer.py  320和322 行修改


修改成result_dir = "/code/tmp/swift/infer_result"

  主要原因是/tmp/pretrainmodel/Qwen2.5-7B-Instruct 是只读文件,而模型推理的时候需要再模型文件当前文件夹下创建一个临时文件infer_result。这样就导致程序运行报错。

3.2.3 swift推理

swift infer --model_type qwen2_5-7b-instruct   --model_id_or_path  /tmp/pretrainmodel/Qwen2.5-7B-Instruct

通过 cli 命令推理成功。

 我可以通过cli  命令测试,推理速度还是挺快的。

3.2.4swift部署

swift deploy  --model_type qwen2_5-7b-instruct --model_id_or_path  /tmp/pretrainmodel/Qwen2.5-7B-Instruct --host 0.0.0.0 --port 8000  --infer_backend vllm

服务端部署成功后,我们可以编写客户端代码测试一下

client.py

cd /tmp/code

touch client.py# 安装openai
pip install openai


我们使用python client.py  通过OpenAI 接口方式调用


3.3.1 VLLM 安装

 我们需要安装vllm 最新版本,默认ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14镜像 自带VLLM ,不过版本比较低,我们需要升级一下

cd /tmp/code
pip install vllm -U -i https://pypi.tuna.tsinghua.edu.cn/simple/
#安装torch2.4.0对应的cu121
#pip uninstall torch -y
#pip install torch==2.4.0 --extra-index-url https://mirrors.aliyun.com/pytorch-wheels/cu121

 


安装好后,我们检查一下 安装好的vllm 版本

pip show vllm



3.3.2 VLLM 推理

 接下来我们执行 vllm 推理命令实现模型的推理服务

python -m vllm.entrypoints.openai.api_server --model /tmp/pretrainmodel/Qwen2.5-7B-Instruct --host 127.0.0.1 --port 8000 --trust-remote-code  --served-model-name qwen2_5-7b-instruct



后面同样可以使用上面client.py代码进行测试,这里就不详细展开了。



3.4  LLaMA-Factory推理

3.4.1 LLaMA-Factory安装

我们使用开源的LLaMA-Factory框架来实现推理。



检查一下LLaMA-Factory 安装

pip show llamafactory


3.4.2 LLaMA-Factory推理

 接下来我们执行 LLaMA-Factory推理命令实现模型的推理服务

  我们编写推理配置文件yaml  

cd /tmp/code
touch Qwen2.5-7B-Instruct.yaml

Qwen2.5-7B-Instruct.yaml


llamafactory-cli chat /tmp/code/Qwen2.5-7B-Instruct.yaml

启动完成后,我们就可以通过cli命令实现推理了。



api  推理

API_PORT=8000 llamafactory-cli api  /tmp/code/Qwen2.5-7B-Instruct.yaml

输入以上启动命令这样我们就通过llamafactory-cli 启动一个 对外提供api 服务的模型接口了。



后面同样可以使用上面client.py代码进行测试,这里就不详细展开了。


3.5  lmdeploy推理

3.5.1lmdeploy安装

我们使用书生浦语开源的框架来实现推理。


检查一下lmdeploy

pip show lmdeploy



3.5.2 lmdeploy推理

接下来我们编写推理代码实现模型推理

lmdeploy serve api_server /tmp/pretrainmodel/Qwen2.5-7B-Instruct --model-name qwen2_5-7b-instruct --server-port 8000

后面同样可以使用上面client.py代码进行测试,这里就不详细展开了。


总结:

  本次我们在利用启智平台提供的免费的算力,使用了英伟达A100显卡,通过主流的几个推理框架从而实现了Qwen2.5-7B-Instruct模型的推理。总体来说阿里通义千问Qwen2.5-7B-Instruct模型 能力还是不错的。本次阿里推出了Qwen2.5: 0.5B, 1.5B, 3B, 7B, 14B, 32B, 以及72B 以及Qwen2.5-Coder: 1.5B, 7B 和Qwen2.5-Math: 1.5B, 7B, 以及72B 还非常不错的。因为时间关系这里每个模型没办法一一测试。 感兴趣的小伙伴可以按照我文档中将7B及以下模型实现推理部署。7B以上模型目前启智平台提供的单卡应该是跑不起来的。感兴趣的小伙伴也可以使用量化版大的参数模型实现推理。今天分享就到这里,感兴趣小伙伴可以留言、点赞、收藏加关注。

常见问题及解答:

启智平台下载的模型Qwen2.5-7B-Instruct https://openi.pcl.ac.cn/FoundationModel/Qwen/modelmanage/model_readme_tmpl?name=Qwen2.5-7B-Instruct

这个模型的权重配置文件有问题。 后来https://huggingface.co/Qwen/Qwen2.5-7B-Instruct/tree/main 修复了这个问题



但是启智平台模型迁移后没办法修复了。使用有问题模型权重文件会产生如下错误。

解决:

下载这个模型https://openi.pcl.ac.cn/zhouhui/Qwen2.5-7B-Instruct/modelmanage/model_filelist_tmpl?name=Qwen2.5-7B-Instruct

这样就不会出现上面的问题了。



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1