这篇博客承接之前这篇:https://blog.csdn.net/qysh123/article/details/160962233
其实内容是比较简单的,也是参考了其他朋友的博客:https://blog.csdn.net/weixin_45724433/article/details/160470026
首先,下载相应的Docker镜像,例如我这里下载v0.18.0的版本:
bash
docker pull quay.nju.edu.cn/ascend/vllm-ascend:v0.18.0-openeuler
其次,下载Qwen3.6的模型到本地(我这里使用modelscope速度很快):
bash
modelscope download --model Qwen/Qwen3.6-35B-A3B --local_dir ./Qwen3.6-35B-A3B
然后用类似这种命令:
bash
sudo lsof -i :8002
查看一下空闲的端口。然后参考上面这篇博客:
bash
docker run -it \
--name qwen3_6_vllm \
--privileged \
--shm-size=64g \
-v /usr/local/Ascend:/usr/local/Ascend \
-v /dev:/dev \
-v /root/ProjectsQuYu/Qwen3.6-35B-A3B:/models \
-v /root:/root \
-p 8002:8000 \
quay.nju.edu.cn/ascend/vllm-ascend:v0.18.0-openeuler \
Bash
其中模型的位置要根据自己存放模型文件的位置改。果不其然报错了,呵呵呵:
bash
--: line 1: exec: Bash: not found
写博客的作者也太不细心了吧,应该用小写的bash。
如果能在启动image的同时启动vllm服务更好,所以试着这样写:
bash
docker run -itd \
--name qwen3_6_vllm \
--privileged \
--shm-size=64g \
-v /usr/local/Ascend:/usr/local/Ascend \
-v /dev:/dev \
-v /root/ProjectsQuYu/Qwen3.6-35B-A3B:/models \
-p 8002:8000 \
quay.nju.edu.cn/ascend/vllm-ascend:v0.18.0-openeuler \
python3 -m vllm.entrypoints.openai.api_server --host 0.0.0.0 --port 8000 --model /models --dtype half
这里加了一个参数d,表示静默运行,可以输入:
bash
docker logs -f qwen3_6_vllm
查看输出,结果发现又报错了:
bash
RuntimeError: NPU out of memory. Tried to allocate 1.00 GiB (NPU 0; 60.96 GiB total capacity; 59.89 GiB already allocated; 59.89 GiB current active; 692.09 MiB free; 59.91 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.
这个错误真是不应该啊,不禁想问前面这个作者真的跑起来了吗?
把容器删除:
bash
docker rm -f qwen3_6_vllm
重新启动并指定8个NPU:
bash
docker run -itd \
--name qwen3_6_vllm \
--privileged \
--shm-size=64g \
-v /usr/local/Ascend:/usr/local/Ascend \
-v /dev:/dev \
-v /root/ProjectsQuYu/Qwen3.6-35B-A3B:/models \
-p 8002:8000 \
quay.nju.edu.cn/ascend/vllm-ascend:v0.18.0-openeuler \
python3 -m vllm.entrypoints.openai.api_server \
--host 0.0.0.0 \
--port 8000 \
--model /models \
--dtype half \
--tensor-parallel-size 8
然后就可以看到正常运行了,使用curl测试一下:
bash
curl http://10.220.96.105:8002/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/models",
"prompt": "你好,你可以用作编程任务吗?",
"max_tokens": 128,
"temperature": 0.7
}'
就可以看到输出了(怎么感觉速度很慢)。可能的改进方向:
关于数据类型,从我这边一次报错中可以看出来:
choose from 'auto', 'bfloat16', 'float', 'float16', 'float32', 'half'
bfloat16应该比half感觉要更快一些。
另外,Qwen 3.6是多模态模型,如果"跳过视觉编码器和多模态分析"(https://www.modelscope.cn/models/Qwen/Qwen3.6-35B-A3B)应该会更快一些。但我不确定在vLLM-Ascend上应该怎么设置。
就先简单总结这么多。