AnimeGANv2 后日谈

1 关于模型

实际经测试,新海诚风格的效果是最好的,素描次之;而日漫脸的最差(真的很差),不适合使用。

此外,需要关注到的有:https://github.com/bryandlee/animegan2-pytorch

该改进有相当多的应用,可在 hugging face 上查到。

2 关于部署

直接运行最后的 onnx_app_pyav.py:尝试在另一台 A100 的机器上运行。下面是部署过程和遇到的问题。

2.0 完整过程

# 1 更新
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y

# 2 Git 设置 和 克隆仓库
echo "140.82.113.4 github.com" >> /etc/hosts
echo "199.232.69.194 github.global.ssl.fastly.net" >> /etc/hosts
git clone https://github.com/xuanhao44/AnimeGANv2.git
# 省略的手动部分:上传 onnx 文件

# 3 安装显卡驱动
sudo apt install ubuntu-drivers-common -y
ubuntu-drivers devices # 虽然只是查看的命令,但是很关键,详细见下面讲解
sudo apt install nvidia-driver-515 -y # 仅样例,实际版本需要查看 ubuntu-drivers devices
# sudo ubuntu-drivers autoinstall 如果 ubuntu-drivers devices 无 warning 则可使用

# 4 安装 conda
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash # 之后需要重启 shell

# 5 创建虚拟环境,安装依赖
cd AnimeGANv2
conda create -n testanime python=3.8 -y
conda activate testanime
pip install -r onnx_app_pyav_requirements.txt
conda install cudatoolkit -y
conda install cudnn -y

# 6 设置内网穿透(在 AnimeGANv2 目录下)
cp frpc_linux_amd64_v0.2 /root/miniconda3/envs/testanime/lib/python3.8/site-packages/gradio/
chmod +x /root/miniconda3/envs/testanime/lib/python3.8/site-packages/gradio/frpc_linux_amd64_v0.2

# 7 tmux 持续运行(在 AnimeGANv2 目录下)
sudo apt install tmux -y
tmux new -s AnimeGANv2 # 创建会话
...
conda activate testanime # 进入 tmux 后需要重新启动环境
python onnx_app_pyav.py # 运行
...
tmux a -t AnimeGANv2 # 退出后进入会话
tmux kill-session -t AnimeGANv2 # 关闭会话

2.1 更新

sudo apt update
sudo apt upgrade
sudo apt autoremove

可能出现的问题:

  1. 网络有问题:则修改 DNS

参考:https://blog.csdn.net/huaishitou/article/details/109218013

该参考中提供了三种方法,使用者要看自己实际情况。

(在某 centos 7 中我使用了第二种方法,但在某 Ubuntu 18.04 中未出现该问题)

  1. apt 更新失败:换源

参考:

有时 aliyun 可能也会出问题,可以换成其他源,方法请自行查阅。

2.2 克隆仓库

git clone https://github.com/xuanhao44/AnimeGANv2.git
# 记得把加密的 onnx 文件带上

可能出现的问题:

  1. 什么?没 Git?:安装
sudo apt install git
  1. 如果安装了 Git 却还是无法 clone:卸载重装
sudo apt remove git && sudo apt install git
  1. 无法连接 GitHub:hosts 文件最后添加上 GitHub

参考:https://www.cnblogs.com/zypdbk/p/17133529.html

解决方法:

  1. vim /etc/hosts 在 hosts 文件最后添加上 GitHub:
140.82.113.4 github.com
199.232.69.194 github.global.ssl.fastly.net
  1. 或者两句 echo
echo "140.82.113.4 github.com" >> /etc/hosts >> /etc/hosts
echo "199.232.69.194 github.global.ssl.fastly.net" >> /etc/hosts

2.3 关于 GPU

2.3.1 官网安装(不推荐)

如果没有驱动或者驱动版本不合适,那么就要安装驱动。

参考:https://blog.csdn.net/TFATS/article/details/126423823 参考中的遗漏:可能要点到同意并安装才行

另外,服务器中无法访问 us 服务器的话,可以切到 cn 服务器,如下:

wget https://cn.download.nvidia.com/tesla/535.104.12/NVIDIA-Linux-x86_64-535.104.12.run

如何查看显卡(虽然租了 GPU,但是不知道显卡型号;且当前无驱动,故 nvidia-smi 无法使用,要另寻他法):

参考:https://blog.csdn.net/zhuguiqian/article/details/104795435

例子:我本次使用 A100(后来才知道),得到的结果是:

(base) root@ubuntu:~# lspci | grep -i nvidia
00:05.0 3D controller: NVIDIA Corporation Device 20f1 (rev a1)

那么在 https://admin.pci-ids.ucw.cz/mods/PC/10de?action=help?help=pci 查询可得:

https://admin.pci-ids.ucw.cz/mods/PC/10de/20f1


如何查看 Linux 是 32 位还是 64 位:

getconf LONG_BIT

测试:

nvidia-smi

另外,如果想要使用 nvcc -V,则需要安装:

sudo apt install nvidia-cuda-toolkit

但是此处显示的信息和之后 conda 环境内的 cudatoolkit 并无关系,也不影响之后运行,故不安装。

2.3.2 自动安装(推荐)

参考:

先安装,然后运行 ubuntu-drivers devices

sudo apt install ubuntu-drivers-common
ubuntu-drivers devices

如果出现 warning,那么需要按照列表中选一个安装(之后可能需要重启 sudo reboot)。如下:

两个参考中最后都还是安装了推荐版本(470),但是我的实测是:虽然推荐了 470,也手动安装了 470,结果还是无法正常使用 nvidia-smi,反而是安装了更高版本的 515 才成功了,且没有重启。

sudo apt install nvidia-driver-515 # 仅样例,实际版本需要查看 ubuntu-drivers devices

如果没有 warning,则自动安装:

sudo ubuntu-drivers autoinstall

这样就结束了。


测试方法同上。

实际上,在显卡使用这方面,安装驱动就用上面的方法;安装 CUDA 和 cuDNN 就用 conda

2.4 安装 conda

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash

之后终端可能会提示需要重启 shell:

==> For changes to take effect, close and re-open your current shell. <==

重启 shell 后可得 base 环境。

2.5 安装依赖

conda create -n testanime python=3.8 -y
conda activate testanime

pip install -r app_requirements.txt

conda install cudatoolkit
conda install cudnn

实际上除特殊情况外,conda 都会自动选择合适的 cudatoolkitcudnn 版本。

如果有关于 OpenCV 报错:

ImportError: libGL.so.1: cannot open shared object file: No such file or dir

参考:https://blog.csdn.net/qq_39691492/article/details/130688233

这是因为安装的是 opencv-python 而不是 opencv-python-headless,可安装 libgl1

sudo apt-get update && apt-get install libgl1

当然最好是一开始就安装 opencv-python-headless

2.6 关于外网穿透

外部访问示例内部的端口,可能需要内网穿透。除了开放端口以外,可能还需要下面的操作:

如果不能成功,Gradio 应该会有提示:

Could not create share link. Missing file: /root/miniconda3/envs/testanime/lib/python3.8/site-packages/gradio/frpc_linux_amd64_v0.2.

Please check your internet connection. This can happen if your antivirus software blocks the download of this file. You can install manually by following these steps:

1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_amd64
2. Rename the downloaded file to: frpc_linux_amd64_v0.2
3. Move the file to this location: /root/miniconda3/envs/testanime/lib/python3.8/site-packages/gradio

但是这可能还不够,还需要 chmod +x

参考:https://github.com/gradio-app/gradio/issues/3498#issuecomment-1651038942

命令(仅供参考,如 conda 安装方式与我不同则地址不适用):

# home 目录下
# wget https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_amd64
# wget 多半不会成功,还是老老实实上传

mv frpc_linux_amd64 frpc_linux_amd64_v0.2 # 不用 rename 是因为要下载
cp frpc_linux_amd64_v0.2 /root/miniconda3/envs/testanime/lib/python3.8/site-packages/gradio/
chmod +x /root/miniconda3/envs/testanime/lib/python3.8/site-packages/gradio/frpc_linux_amd64_v0.2

命令更新:改名好的文件已经放在仓库

# AnimeGANv2 目录下
cp frpc_linux_amd64_v0.2 /root/miniconda3/envs/testanime/lib/python3.8/site-packages/gradio/
chmod +x /root/miniconda3/envs/testanime/lib/python3.8/site-packages/gradio/frpc_linux_amd64_v0.2

2.7 持续运行

参考:

安装 tmux:

sudo apt install tmux

创建会话:

tmux new -s AnimeGANv2

退出后进入会话:

tmux a -t AnimeGANv2

关闭会话:

tmux kill-session -t AnimeGANv2
最后修改:2023 年 11 月 10 日
如果觉得我的文章对你有用,请随意赞赏