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博客

通义千问2-VL-2B-Instruct · 模型库

配置和使用Conda环境 · 文档中心

以及赠送36小时notebook免费使用时间的阿里云,真是帮了咱大学生大忙了

 

还是那句话:开源从你我做起~

 

 

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐