用阿里云notebook在vllm环境下部署千问2模型(Qwen2-vl-2B)0
0 前言
超级小白的教程,跟着一路走就能配好千问模型哦
红色部分每一次打开notebook都必须重新运行一次
1 进入notebook
1.1 进入魔塔社区的notebook
在魔塔社区中进入我的notebook,绑定阿里云服务器后即可进入云端深度学习开发环境,在GPU环境中进入,不然算力不够。

1.2 进入notebook的终端(Terminal)
点击Terminal即可进入终端


2 Conda环境配置
在本实例中需求Conda环境,所以要下载Conda环境
2.1 下载Conda
在终端下载
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
设置安装权限
chmod +x Miniconda3-latest-Linux-x86_64.sh
2.2 安装位置
安装位置记得必须设置在云服务器的/mnt/workspace中,只有这个路径下的文件会在关闭notebook后储存下来。
bash Miniconda3-latest-Linux-x86_64.sh -b -p /mnt/workspace/miniconda3
2.3 初始化Conda
手工指定安装路径时,在安装后需要显式地调用conda binary 进行初始化:
/mnt/workspace/miniconda3/bin/conda init
初始化成功以后,关闭当前的terminal窗口,再重新打开。就可以正常使用conda命令了。
请注意,在您关闭ModelScope Notebook实例后,后续每次打开ModelScope Notebook的时候,都需要重新执行一次如上的初始化命令。
3 vllm环境部署
3.1 python环境激活
创建文件夹,后续用于放置vllm代码
mkdir -p /mnt/workspace/apprun/vllm
进入文件夹
cd /mnt/workspace/apprun/vllm
创建vllm虚拟环境(如果没有下载conda你还想运行这条指令?)
conda create -y -n vllm python==3.10
激活vllm虚拟环境
conda activate vllm
3.2 安装vllm
安装vllm(在当前文件夹,看清你有没有进入文件夹哦)
pip install vllm
注意
vLLM的二进制文件默认是使用CUDA 12.1编译的。
下载时间长很正常哈
4部署文心大模型
4.1 安装模型
同理,先创建文件夹,再进入该文件夹
mkdir -p /mnt/workspace/apprun/Qwen2-VL-2B-Instruct
cd /mnt/workspace/apprun/Qwen2-VL-2B-Instruct/
每一次重新打开notebook都需要激活vllm虚拟环境(如果打开了就不用运行本行了)
conda activate vllm
设置临时环境变量
第一个把模型加载到创建的文件夹中
第二个是下载的地址
第三个是libnvjitlink.so.12这个库在云端的地址,你可以自己跟着这个路径看看是不是确实在这里
#设置模型加载路径
export HF_HOME=/mnt/workspace/apprun/Qwen2-VL-2B-Instruct
#设置huggingface网站镜像
export HF_ENDPOINT=https://hf-mirror.com
#设置libnvJitLink.so.12库文件路径,这里需要修改成自己的路径
export LD_PRELOAD="/mnt/workspace/miniconda3/envs/vllm/lib/python3.10/site-packages/nvidia/nvjitlink/lib/libnvJitLink.so.12"
4.2 启动模型
启动吧
vllm serve "Qwen/Qwen2-VL-2B-Instruct" --trust-remote-code --dtype half
第一次启动要下载模型,非常慢;后面每次启动也非常慢,稍微快一点。
如果出现错误:ModuleNotFoundError: No module named 'modelscope'则必须下载modelscope
pip install modelscope
过程中出现warning不用害怕,模型如果ok会出现CUDA的加载,说明加载成功啦
注意
启动模型后,保持该终端别关闭,打开另一个终端,在另一个终端中与大模型对话
5 文心大模型使用
vLLM 服务器设计可支持 OpenAI 对话接口,允许你与模型进行动态对话。所以我们使用 OpenAI 聊天接口请求模型:
案例1:
终端运行
curl -X POST "http://localhost:8000/v1/chat/completions" -H "Content-Type: application/json" --data '{"model": "Qwen/Qwen2-VL-2B-Instruct","messages": [{"role": "user", "content": "Hello!"}]}'
运行结果

案例2:
python运行
在notebook中打开vscode(webIDE)

在左侧点击new file新建python文件

import requests
import requests
url = "http://localhost:8000/v1/chat/completions"
# 请求头
headers = {
"Content-Type": "application/json"
}
# 请求体(包含模型、消息和图片数据)
data = {
"model": "Qwen/Qwen2-VL-2B-Instruct",
"messages": [{
'role':
'user',
'content': [{
'type': 'text',
'text': 'describe this image',
}, {
'type': 'image_url',
'image_url': {
'url':
'https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg',
},
}],
}]
}
# 发送 POST 请求
response = requests.post(url, headers=headers, json=data)
# 输出响应结果
if response.status_code == 200:
print("请求成功!")
print(response.json())
else:
print(f"请求失败,状态码: {response.status_code}")
print(response.text)

打开IDE的终端,运行该python文件

可以看到运行成功

千问作为咱中国的模型自然也可以用中文,更改请求体内容文本为中文

运行后可以看到回答

6 鸣谢和感言
鸣谢文档包括:
InternVL2模型部署实践(通过vLLM方式)_internvl2 部署-CSDN博客
以及赠送36小时notebook免费使用时间的阿里云,真是帮了咱大学生大忙了
还是那句话:开源从你我做起~
更多推荐
所有评论(0)