之前介绍过如何在Comfyui利用Atlas 300I Duo推理卡做文生视频(点这里)。

在网上翻了一些资料,终于又找到一款开源的软件“GPUStack”可以用来跑多种模型。它不仅提供了兼容OpenAI的API接口,还有图形化的操作界面。

〇、直接安装尝试

基于之前部署的Ubuntu20.04操作系统,尝试直接安装gpustack时却遇到问题:首先遇到的是Python版本的问题,官方的自动安装脚本默认调用python3,而python3默认链接到python3.8。查看gpustack的要求,要求版本为3.10 - 3.12(见这里

尝试把python3改为链接到python3.11后,可以使用官方的脚本安装成功,但是跑模型时却出现找不到so文件的错误。

使用官方提供的针对脚本安装的卸载方法(点这里):

再重新尝试以另一种安装方法:把官方linux安装脚本中的python3字样全部替换为python3.11,安装过程也很顺利,然而启动的时候还是会调用python3,导致启动失败。

所以,最后还是觉得使用docker方式来运行gpustack更加方便,下面就以这种方式展开。

一、环境准备

具体支持硬件和要求可以看gpustack的文档(点这里):

具体安装驱动和cann的操作方法可以参考我之前的文章 (点这里)。

1、安装docker

在Ubuntu20.04安装docker可以参照这篇文章:https://www.cnblogs.com/lqqgis/p/18276118

我的操作步骤如下,首先修改系统更新源然后安装docker:

curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

然后修改文件/etc/docker/daemon.json,内容如下

{
    "registry-mirrors": [
        "https://dockerproxy.com",
        "https://docker.m.daocloud.io",
        "https://cr.console.aliyun.com",
        "https://ccr.ccs.tencentyun.com",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://docker.nju.edu.cn",
        "https://docker.mirrors.sjtug.sjtu.edu.cn",
        "https://github.com/ustclug/mirrorrequest",
        "https://registry.docker-cn.com"
    ]
}

最后重载配置文件,并重启 docker

sudo systemctl daemon-reload
sudo systemctl restart docker

2、安装插件

安装Ascend Docker Runtime的步骤参考官网文档:

hiascend.com/doc_center/source/zh/mindx-dl/500/dockerruntime/dockerruntimeug/dlruntime_ug_007.html

安装程序可以在昇腾社区搜索页面(点这里),点击“获取源码”:

然后在gitee页面可以下载到对应的程序:

下载后执行chmod +x Ascend-docker-runtime_{version}_linux-{arch}.run增加运行权限,再./Ascend-docker-runtime_{version}_linux-{arch}.run --install安装就行

二、运行GPUStack

1、拉取docker镜像

需要根据硬件选择合适的镜像版本,在国内的docker镜像网站找了一下,对应的网址是https://docker.aityp.com/r/docker.io/gpustack/gpustack

然而发现其中并没有linux amd64 npu-310p的版本,而docker.io是有对应版本的,如下图:

Atlas 300I Duo推理卡的芯片是310p,在微信上添加“gpustack助手”询问得知,npu的镜像适用于910b芯片,310P芯片应该使用npu-310p版本的镜像,一般不用名称里面含有main的镜像。

如果访问不了docker.io,可以用以下2种方法:

①设置代理:代理IP和端口需要自行准备。设置方法为:修改/etc/docker/daemon.json,添加如下内容

{
  "proxies": {
    "http-proxy": "http://代理IP地址:代理端口",
    "https-proxy": "http://代理IP地址:代理端口"
    "no-proxy": "localhost,127.0.0.1,aityp.com"
  }
}

然后执行指令拉取镜像:

docker pull gpustack/gpustack:latest-npu-310p

②使用镜像站:

比如镜像站dockertest.jsdelivr.fyi,拉取命令:

docker pull dockertest.jsdelivr.fyi/gpustack/gpustack:latest-npu-310p

再修改标记为docker.io的镜像:

docker tag dockertest.jsdelivr.fyi/gpustack/gpustack:latest-npu-310p  docker.io/gpustack/gpustack:latest-npu-310p

2、启动镜像

启动需要root权限,指令如下:

docker run -d \
  --name=gpustack \
  --runtime=ascend \
  --restart=unless-stopped \
  --device /dev/devmm_svm \
  --device /dev/hisi_hdc \
  -v /usr/local/dcmi:/usr/local/dcmi \
  -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
  -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
  -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
  -v /usr/local/Ascend/ascend-toolkit/:/usr/local/Ascend/ascend-toolkit/ \
  -v /etc/ascend_install.info:/etc/ascend_install.info \
  -v /root/gpustack-worker-data:/var/lib/gpustack \
  --device=/dev/davinci0 \
  --device=/dev/davinci1 \
  --device=/dev/davinci_manager \
   --network=host --ipc=host \
  docker.io/gpustack/gpustack:latest-npu-310p 

其中:

--runtime=ascend 作用为启用华为ascend插件,默认挂载内容和解释可以看官方文档(点这里

--device=/dev/xxx 作用为给容器启用NPU硬件,

-v /root/gpustack-worker-data:/var/lib/gpustack 作用为将目录/root/gpustack-worker-data挂载到容器内的目录/var/lib/gpustack,该目录主要保存设置相关内容

启动大约要10s时间,启动后要执行这个指令获取管理员账号admin的密码:

docker exec gpustack cat /var/lib/gpustack/initial_admin_password

结果如下:

3、访问WEB页面

访问http://服务器IP地址/,使用admin账号和上面的密码登录,首次登录需要修改密码,登录后可以在左侧“资源”页签看到可用的GPU资源

在左侧的“模型库”页签可以下载库里的模型:

在“模型”页签可以管理已有的模型或者部署本地的模型:

试验场可以测试对话:

4、HTTP API接口

5、存在问题

目前gpustack的这个docker镜像还不支持语音模型,某些图形模型在用310P硬件运行时也有一些问题,而且速度相对较慢。

总结:

使用docker安装gpustack方式能更好解决python版本等问题。使用gpustack可以方便地使用NPU运行各种模型,虽然仍然存在一些问题,但已经可以较为充分地利用NPU资源。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐