本文最后更新于 2024-11-01,文章内容可能已经过时。

R7 7840HS 780m核显成功运行Stable Diffusion生成图片-论坛-深度科技

OS:Ubuntu 22.04LTS

CPU:8845HS

GPU:780M

安装AMD GPU驱动

AMD Radeon 和 Radeon PRO 显卡 Linux® 驱动程序

下载对应系统的驱动即可

sudo apt install ./amdgpu-install_6.2.60203-1_all.deb

正式安装amdgpu驱动

sudo amdgpu-install --usecase=rocm,hip,mllib --no-dkms
#安装结束后添加当前用户到render和video用户组让达芬奇等应用能够识别到显卡
sudo usermod -a -G video,render $LOGNAME

Docker安装ROCm with Pytorch

AMD官方安装教程:Installing PyTorch for ROCm — ROCm installation (Linux)

Docker Tag对应的Package version:Docker image support matrix — ROCm installation (Linux)

docker run -itd --name pytorch --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \
--device=/dev/kfd --device=/dev/dri --group-add video \
-v /home/moon/project/jupyter-pytorch:/var/lib/jenkins/project -p 2022:22 -p 5022:5022 --ipc=host --shm-size 8G --restart=always rocm/pytorch:latest

在容器中安装工具

docker exec -it pytorch /bin/bash
apt install nano openssh-server
pip install jupyterlab -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
wget -c 'https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh' -P /home
cd /home 
bash ./Anaconda3-2023.09-0-Linux-x86_64.sh

随后一路Enter下去

输入yes

确认路径后一路安装即可

conda 查看

ssh设置

nano /etc/ssh/sshd_config

PermitRootLogin设置为yes

Ctrl+O保存并Ctrl+X 退出

Jupyter设置

生成配置文件

jupyter lab --generate-config

会输出config所在路径

打开配置文件

nano /root/.jupyter/jupyter_lab_config.py

找到并修改以下内容

#c.ExtensionApp.open_browser = True
#c.LabServerApp.open_browser = True
c.ServerApp.allow_remote_access = True
c.ServerApp.allow_root = True
c.ServerApp.ip = '*'
c.ServerApp.port = 5022

输入jupyter lab

随后可在浏览器访问

其中token在刚刚的log

如果需要长时间挂在后台,可以通过nohup jupyter lab --allow-root & 启动,但是需要手动通过kill命令关闭

测试AMD 样例

如果使用Docker Pre-build版本测试之前无需安装依赖,其他自定义安装方式参加官方文档

设置环境变量使其能够正常工作,根据不同显卡型号设置版本,780m可以用11.0.0

~/.bashrc中添加

export HSA_OVERRIDE_GFX_VERSION=11.0.0

下载pytorch样例

由于我使用卷绑定了宿主的/home/moon/project/jupyter-pytorch与容器的/var/lib/jenkins/project,因此我们在宿主机的/home/moon/project/jupyter-pytorch下运行git即可添加到容器中

# <Host>
git clone https://github.com/pytorch/examples.git

接下来在容器中进入目录

# <Container>
cd /var/lib/jenkins/project/examples/mnist
python3 main.py

一个Epoch跑完out of memory了,由于核显是分配了一部分内存作为显存,笔者的内存是8+8,所以32的内存已经在路上了,当然其实我们不会在迷你主机上训练模型,我们要做的仅仅只是部署(推理),当然这也是换内存的一个借口。

最后如果需要设置显存大小

参考调整显存大小教程