Skip to content

Commit

Permalink
feat: solved cudatoolkit requirements and updated documents
Browse files Browse the repository at this point in the history
  • Loading branch information
zpeng11 committed Jan 15, 2025
1 parent 3e87289 commit 3c0bc50
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 61 deletions.
12 changes: 0 additions & 12 deletions 00.检查安装CudaToolkits.bat

This file was deleted.

5 changes: 0 additions & 5 deletions 00A.英伟达CudaToolkits.url

This file was deleted.

5 changes: 0 additions & 5 deletions 00E.OBS透明通道-StreamFX.url

This file was deleted.

5 changes: 0 additions & 5 deletions 00F.OBS透明通道-着色器文件.url

This file was deleted.

1 change: 1 addition & 0 deletions 01A.构建运行环境(默认源).bat
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ call conda create -y -n ezvtb_rt_venv python=3.10
call conda activate ezvtb_rt_venv
call conda env list

call conda install -y nvidia/label/cuda-12.6.3::cuda-nvcc-dev_win-64
call conda install -y conda-forge::pycuda

call python -m pip install --upgrade pip wheel
Expand Down
1 change: 1 addition & 0 deletions 01B.构建运行环境(国内源).bat
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ call conda create -y -n ezvtb_rt_venv python=3.10
call conda activate ezvtb_rt_venv
call conda env list

call conda install -y nvidia/label/cuda-12.6.3::cuda-nvcc-dev_win-64
call conda install -y pycuda -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

call python -m pip install --upgrade pip wheel -i https://mirrors.aliyun.com/pypi/simple/
Expand Down
50 changes: 43 additions & 7 deletions PerformanceTest.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,21 @@
# To Know
基于Release版本v0.3, 测试平台为windows10 22H2, CPU Intel 10400f , GPU Nvidia 3060 12G,Nvidia 1660 Super 6G, ARC A770 16G, RX580 8G.
Jpeg compression 和 Input Simplify 都 medium, debug input 不使用eyebrow参数, 帧数限制60fps
观察开始后约5-10秒的数值记录,不考虑长期缓存效果(没时间测)
# 测试环境
### 基于
* Release版本v0.3
* 测试平台为windows10 22H2
* CPU Intel 10400f
* GPU Nvidia 3060 12G, Nvidia 1660 Super 6G, ARC A770 16G,RX580 8G.

### 测试定量
* Jpeg compression 和 Input Simplify 设为 medium
* 使用debug input 和 debug output
* 不使用eyebrow参数
* 帧数限制60fps
* 英伟达显卡使用TensorRT测试

观察开始后约5-10秒的数值记录, 即不考虑长期缓存效果(没时间测)

# 测试结果
请注意测试结果仅限参考显卡大概性能,具体性能取决于用户周边配置和显卡驱动。

GPU | model | VRAM Cache | RAM Cache | Interpolation | SR | Frame Rate | GPU Usage
:---: | :---: | :---: | :---: | :---: | :---: | :---: | :---:
Expand Down Expand Up @@ -81,7 +95,29 @@ RX580 | stan_full | N/A | No | x4_full | no | 33fps | 98%
3060 | sepe_half | No | No | x4_half | No | 64fps | 30%
3060 | sepe_half | No | No | x4_full | No | 64fps | 40%

DirectML问题:
* A770: rife插帧全精度会出现奇怪结果, waifu2x 全精度会输出全绿色
# 已知问题:
* A770: rife插帧全精度会出现奇怪结果, waifu2x 超分的全精度会输出全绿色
* RX580 tha3 模型半精度会输出奇怪结果
* 3060 有时出现奇怪运行时占用上升,猜测驱动问题。
* 3060 有时出现奇怪运行时占用上升,猜测为插拔显卡导致的驱动问题。

# DirectML 思考
DirectML 允许所有 Windows 显卡设备以及 AIPC 的 NPU 运行此项目,但由于不同设备的 Kernel 在不同精度下实现区别和驱动兼容问题,
导致 DirectML 的运行结果在某个模型的某些精度出现不可用的扭曲结果,且运行性能与对模型的常识理解不相符。

例如适用于本项目插帧的RIFE模型的调用封装经历过一轮迭代,
由原先的n次输入(N=1,C,H,W)独立图像调用RIFE模型生成n个独立结果,
改为输入(N=n,C,H,W)的叠加图像一次性调用RIFE模型得到叠加结果,
此改动下模型获得了稍小的显存占用且在TensorRT实现中获得一定性能提升(虽然改动本意并不在此)。
接着在笔者环境中的因特尔 A770 显卡 DirectML 在RIFE模型迭代后全精度推理结果由原先的符合预期变为扭曲图像,
半精度迭代后模型不仅保持推理结果符合预期,且相较模型迭代前得到了一定性能提升。

再例如笔者测试某 AMD 核显运行时发现其运行THA3的半精度模型时会因为此设备无法运行其中的某个kernel而将kernel运算单独卸载到cpu进行,
但保留了其他大部分能在核显上运行的kernel,由此推理模型需要结果在两个设备间反复,带来了极大的性能倒退。

目前阶段,受限于Python OnnxRuntime api 的支持匮乏(相较C++),使用 python 运行 Directml 无法避免上述问题,
在代码层面无法在运行前做出是否适配的条件判断,也无法在出现kernel卸载到cpu性能剧降时raise错误将运行打断。

所以,DirectML运行本项目的任意模型出现奇怪结果,或不符合预期的性能倒退,都应该属于意料之中
换个模型精度,观察调试输出是否有DirectML黄字警告 通常可以解决大部分问题。
具体某个硬件在DirectML的运行异常修复,已远超本项目的目标范围,请自行验证失效kernel,向硬件厂商和微软求助并期待驱动更新带来解决
(建议买张N卡吧别折腾自己了)。
34 changes: 7 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Updates:
### 硬件

- 支持FaceID的iPhone(使用ifacialmocap软件,需购买,需要稳定的WIFI连接)或网络摄像头(使用OpenCV)
- 任意5年内的游戏级显卡,N卡/A卡/I卡均可使用, 请参考[性能测试结果](PerformanceTest.md)
- 任意5年内的游戏级显卡,N卡/A卡/I卡均可使用,某些新款APU的NPU同样可以,请参考[性能测试结果](PerformanceTest.md)
### 软件

- 本方案在Windows 10上测试可用
Expand Down Expand Up @@ -74,41 +74,20 @@ Start testing if TensorRT works on this machine
```

### 启动项目
双击`02A.启动器.bat``02B.启动器(调试输出).bat` 启动器,如下图启动:
双击`02A.启动器.bat``02B.启动器(调试输出).bat` 启动器,如下图启动(可在上一步构建同时启动,将TensorRT去除勾选即可)
![](assets/02success.png)
之后请移步输入输出自行调节。

## Installation(科学上网且使用Git)
可使用此安装方法对本项目二次开发

### 下载并安装CUDAToolkit
前往 [英伟达官网](https://developer.nvidia.com/cuda-downloads) 下载并安装`CUDATookit 12`及以上版本。
若安装成功并重启可开启命令行工具验证出现类似如下结果:
```
C:\Users\Eleven>nvidia-smi
Thu Jan 9 22:02:29 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 556.12 Driver Version: 556.12 CUDA Version: 12.5 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Driver-Model | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce GTX 1660 ... WDDM | 00000000:01:00.0 On | N/A |
| 32% 34C P8 10W / 125W | 569MiB / 6144MiB | 1% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
........
```
或可以双击 `00.检查安装CudaToolkits.bat` 来验证

### 安装Anaconda(可选)
前往https://www.anaconda.com/ 安装Anaconda 并保证加入环境变量命令行可以找到,如:
```
C:\Users\Eleven>conda --version
conda 24.11.3
```
以上方式可以保证conda环境被你选定的Ananconda统一管理。若没有此需求可以忽略直接运行下一步,脚本会自动安装miniconda。
以上方式可以保证conda环境被你选定的Ananconda统一管理。若没有此需求可以忽略直接运行下一步,`01X.构建运行环境(XX源).bat`脚本会自动安装miniconda。

### 克隆项目和子项目
```
Expand All @@ -119,12 +98,13 @@ git submodule update --recursive --remote
```

### 安装环境
双击运行`01A.构建运行环境(默认源).bat`或者`01B.构建运行环境(国内源).bat`
根据网络环境双击运行`01A.构建运行环境(默认源).bat`或者`01B.构建运行环境(国内源).bat`
这两个脚本会构建名为`ezvtb_rt_venv`的conda环境
或可以用如下命令手动创建:
```
conda create -y -n ezvtb_rt_venv python=3.10
conda activate ezvtb_rt_venv
call conda install -y nvidia/label/cuda-12.6.3::cuda-nvcc-dev_win-64
conda install -y conda-forge::pycuda
python -m pip install --upgrade pip wheel
python -m pip install nvidia-cudnn-cu12
Expand All @@ -147,9 +127,9 @@ python -m pip install -r requirements.txt --no-warn-script-location

### 运行启动器
在Conda环境中执行以下命令
`python launcher.py`
`python launcher2.py`

### 错误排查
### 环境错误排查
当运行TensorRT构建或启动器出现错误时,请参考如下可能性:
1. 环境安装有错误(一般运行时缺少库99%的原因都是这个,pip下载并不稳定,各种网络问题都可能导致安装失败),检查源,手动删除`envs`文件夹再试, 对照 [此log](assets/complete_building_log.txt) 为成功案例排查原因。 实在不懂排查请使用整合包。
2. nvcc编译器没找到,即CudaToolkit安装有误,双击 `00.检查安装CudaToolkits.bat` 来验证
Expand Down

0 comments on commit 3c0bc50

Please sign in to comment.