最近关注国产算力卡,发现Atlas 300I Duo推理卡的算力挺高的,FP16算力有140 TFLOPS FP16,功耗只有150W。查了一下资料,这卡能在x86机子上跑,而且用的PCI-E 4接口,意味着可以在普通个人电脑上使用,于是我就买了一张来测试。没想到过程相当折腾,网上资料也不多,没点手动能力真不推荐。还好最终还是能用的,步骤具体如下。


1.硬件安装

Atlas 300I Duo 96G是全高卡,买回来才发现用的是CPU电源供电接口,虽然防呆机制允许插入显卡供电的插头,但是两者正负极刚好相反(如下图)。

所以需要在淘宝上买一根转换线。这些其实都好说,难题在这卡是被动散热!所以我又在淘宝上买12v涡轮暴力风扇(由于过于暴力,还买了12v转9v的直流降压模块,用电烙铁焊接上)。暴力风扇还是买大了,只能是立起来再用胶带包裹导风,最后机箱内效果如下图:


2.软件安装

(1)驱动

这卡在Windows系统是没法直接识别的,设备管理器里面会显示很多未识别的加解密设备。上官网查了一下,这卡没有Windows驱动。只能装一个虚拟机直通硬件,或者整个主机都换系统。我直接全新安装了Ubuntu操作系统,然后才开始苦恼怎么装驱动。

最终按这篇了解主要步骤:安装AT300 DUO卡驱动、固件_centos7.9 atlas-300idu驱动安装

就是在昇腾社区固件与驱动页面,在社区版找到对应卡的驱动和固件下载,如下图:

然后再在系统添加HwHiAiUser用户和用户组,最后跑下载的安装程序。

遇到的坑:刚装驱动总是报错。根据错误提示查看安装日志和编译错误日志,遇到的问题有:①找不到头文件(#include<stdarg.h>、#include<stdbool.h>),这个是因为Ubuntu版本过高,头文件目录有改动;②编译时有告警,说无符号数<0的比较结果总是false,这也是因为头文件改动过的问题。后来了解到,驱动需要编译内核,对linux内核版本以及gcc编译器的版本都比较敏感,最好用指定的版本,可以按照这里指定的操作系统:安装NPU驱动固件-PyTorch框架推理环境准备-PyTorch框架-ModelZoo开发文档-昇腾社区

个人电脑能选的就只有x86_64架构,我安装了Ubuntu,按表里最高支持版本只有20.04。然后内核版本需要是5.4.0-26-generic,我参考了这篇文章进行linux内核降级的操作:ubuntu 内核降级,切换linux内核版本_4.15.0-39-generic-CSDN博客

这里要补充说明一下,按照这篇文章修改源后发现清华源没有5.4.0-26-generic,可以试一下阿里的源。另外降级之后可能会出现无法启动到该内核的情况,一般需要关闭BIOS的secure boot。

之后终于是把驱动安装上了,在root账号下安装指令如下(必须先装驱动才能装固件):

groupadd HwHiAiUser 
useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash

apt-get install net-tools -y

chmod +x Ascend-hdk-310p-npu-driver_24.1.0.1_linux-x86-64.run
./Ascend-hdk-310p-npu-driver_24.1.0.1_linux-x86-64.run --full --install-for-all

chmod +x Ascend-hdk-310p-npu-firmware_7.5.0.5.220.run
./Ascend-hdk-310p-npu-firmware_7.5.0.5.220.run --full

运行npu-smi info结果如图:

可以看出其实是由2个NPU组成的,单个存储按照1024进制明显不够48G,有些虚标。

(2)pyTorch

官网上有比较详细的PyTorch框架适配文档,这里我主要讲遇到的坑。

首先最大的坑是Python的版本问题。

Ubuntu20.04自带的Python版本是3.8,而ComfyUI明确在今年停止对Python3.8的官方支持,如下图:

而昇腾社区的Pytorch最高能支持到Python3.11,如下图:

所以我们需要先想办法安装Python3.11(在文档中找到最高支持到3.11.4)。

注意Ubuntu不能卸载掉Python3.8,因为很多工具(包括图形桌面、apt包管理等)都依赖于它(我就搞崩好几次,只有重装系统能快速解决),所以最好使用源码编译进行安装,我参考的这篇文章:如何在Ubuntu 22.04|20.04|18.04上安装Python 3.11 |

整理步骤如下(root权限):

①安装所需组件

apt update && sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev pkg-config uuid-dev tk-dev liblzma-dev libgdbm-compat-dev curl git -y

②下载源码

wget https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz
tar -xf Python-3.11.*.tgz
cd Python-3.11.*/

③检查是否满足所需的依赖关系并使用以下命令优化二进制文件

./configure --enable-optimizations

④构建

make -j $(nproc)

这里要注意make结束的时候一定要关注是否缺乏模块,我一开始没注意到提示缺少_lzma的模块,导致后面ComfyUI启动失败。如果像下图提示缺少模块,则需要回到第①步安装组件,完了要make clean清理再重做③、④步。

⑤安装到系统

make altinstall

⑥安装pip,后面安装CANN需要(此时没有安装python3.8的pip)

curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11 

安装完后,就能使用python3.11来执行脚本,如下图:

下载torch_npu-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl,后续使用pip3.11进行安装

然后第二个坑是CANN软件的安装。

没有安装CANN-toolkit的话,使用pytorch的时候就会提示libhccl.so: cannot open shared object file: No such file or directory。实际上只需要安装Toolkit和Kernels,不用装nnae、nnrt。

安装指令整理如下(root安装):

①修改pip源和安装依赖

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn
pip3.11 install attrs cython numpy==1.26.0 decorator sympy cffi pyyaml pathlib2 psutil protobuf==3.20 scipy requests absl-py

②安装CANN,下载社区版点这里,注意选择Ascend-cann-toolkit和Ascend-cann-kernels-310p开头的。这里选310p是因为npu-smi info里显示的芯片是310p。

chmod +x ./Ascend-cann-toolkit_8.2.RC1.alpha001_linux-x86_64.run
./Ascend-cann-toolkit_8.2.RC1.alpha001_linux-x86_64.run --install --install-for-all
y

chmod +x ./Ascend-cann-kernels-310p_8.2.RC1.alpha001_linux-x86_64.run
./Ascend-cann-kernels-310p_8.2.RC1.alpha001_linux-x86_64.run --install --install-for-all
y

装完后在/etc/profile里面只需要加这一句,同时也执行这句:

source /usr/local/Ascend/ascend-toolkit/set_env.sh

我安装的时候发现有个文档还加了一行(千万别加)

export LD_LIBRARY_PATH=/usr/local/Ascend/ascend-toolkit/latest/x86_64-linux/devlib/:$LD_LIBRARY_PATH

结果导致后面总提示链接库错误。

③安装pyTorch(这里同时安装torch、torchvision、torchaudio)

pip3.11 install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cpu

④安装torch_npu(下载点这里

 pip3.11 install torch_npu-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

安装完成后,执行官方的测试语句检验是否可以正常使用NPU:

python3.11 -c "import torch;import torch_npu; a = torch.randn(3, 4).npu(); print(a + a);"

成功执行结果如下:

这时候可能会提示ImportError: libhccl.so: cannot open shared object file: No such file or directory这时候就要回到第②步,特别要注意是否执行了source /usr/local/Ascend/ascend-toolkit/set_env.sh

也可能会一直卡住,按任何按键都没响应。这种情况有可能是固件跟驱动版本不匹配,需要再装一下固件。

也可能会提示一大串的错误,RuntimeError:...ERR00100 PTA call acl api failed,如下图:

当时我看到这错误提示简直一头雾水,查了官方文档没有什么资料对应。后来才发现具体的错误内容都在这一段之后的地方,大部分都是python的某些包没有安装,直接pip3.11 install 安装就解决了。也有可能是python模块缺失,就好比我前面提到编译时缺少_lzma。

(3)ComfyUI

ComfyUI在2024年12月已经增加了对Ascend NPU的支持,具体见这里。所以确定是能用华为NPU跑模型的。

安装依赖包

我直接用git克隆一份源码:

git clone https://github.com/comfyanonymous/ComfyUI.git

注意一定要先安装torch、torchvision和torchaudio,否则直接用pip3.11 install -r requirements.txt会导致它卸载之前安装好的torch,去安装更新版的torch。然而我之前安装的torch2.5.1已经是华为NPU适配的最高版本了。

看了下requirements.txt对torch的版本并没有要求,应该是安装torchvision、torchaudio的时候自动选择了最新版,于是对应要更新torch。

torch、torchvision和torchaudio三者之间的匹配关系见这里,然后必须要都安装CPU版本的,安装指令前面已经整理过:

pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cpu

如果torchvision安装了没有cpu的版本,import torchvision就会提示这个错误:RuntimeError: operator torchvision::nms does not exist

这里还有一个坑,就是昇腾社区文档提到尚未适配numpy2(见这里),所以需要降低numpy的版本(前面整理过):

pip3.11 install numpy==1.26.0

这时候再通过pip3.11 install -r requirements.txt就好了,还需要安装Comfy-Manager:

cd ./ComfyUI/custom_nodes/
git clone https://github.com/Comfy-Org/ComfyUI-Manager.git

最后在ComfyUI目录中使用指令启动:

python3.11 -u main.py --listen 0.0.0.0

网页访问8188端口,如图:

不使用NPU的情况

有可能会遇到ComfyUI启动后可以识别device:npu,但实际生成时却完全不使用NPU,而是在用CPU的情况。这时候要检查一下是否安装了ComfyUI-MultiGPU插件,这个插件似乎无法识别NPU,将其删除即可。

不支持vae编码

然后进行图片生成的时候又遇到问题,就是在vae 编码解码的时候提示op type TransData is not found in this op store。查了类似的问题(看这里),发现是kernels包算子信息库不包含对应的数据类型。

好在vae编码可以用cpu,只需要在启动时加上 --cpu-vae参数就解决了,如下:

python3.11 -u main.py --listen 0.0.0.0 --cpu-vae

这时候再执行官方的文生图工作流已经没有问题了:

显存优化存在问题

由于这张卡不支持fp8运算,只能用fp16的量化模型。加载wan2.1的14b模型非常容易爆显存,如下图

通过npu-smi info就会发现全部显存占用都挤在NPU0上,而第二个NPU完全未使用,这或许只能等后续完善了。下面是用wan模型480p文生图得到的1s动态图:


总结

对Atlas 300I Duo 96G算力卡的探索就这样告一段落了。总的来说,这张算力卡还是能用于个人电脑上ComfyUI视频生成的,但它主要还是面向服务器设计的,用于个人电脑则不那么友好,软件的优化也有待提升。不过这张卡毕竟是主用在国产生态,下一步可以试试用国产的框架跑模型。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐