安装
训练好的onnx模型要在windows的GPU运行有两种较简单的快速可行方式,利用CUDA和DML。其中dml似乎不依赖于N卡。
在利用cuda的情况下:
pip install onnxruntime-gpu
在利用DML的情况下:
pip install onnxruntime_directml
注意这两个只能装一个,在导入的时候都是import onnxruntime,两个都装了会冲突。网上其它教程onnx使用cuda需要安装英伟达tooltik,实际上配套dll在pytorch内都有。如果安装了pytorch就完全没必要再单独搞cuda和cudnn了。只要把下列dll放到py文件或者虚拟环境能都读到的地方就行。
注意pytorch对应的cuda版本一定要和onnxruntime-gpu对应的版本一致!
尝试对比两种情况下的空间占用与耗时
Python3.11.6下建立虚拟环境,分别测试两种情况下的硬盘占用空间和推理时间。
测试内容为对一段视频使用yoloface_8n.onnx进行人脸检测,用open_nsfw.onnx进行内容审查。占用空间统计了整个虚拟环境的大小,包括python基本组件,必要的opencv和numpy包等。
cuda:占用空间3.4G,推理时间:48秒。
dml:占用空间340M,推理时间:46秒。
CPU(7700x): 推理时间:123秒。
cuda在N卡上居然不占优!?这不科学!!!问了chat-gpt,它也觉得cuda应该更快。就,很神奇。
再使用facefusion 2.6.1进行测试,测试demo的换脸视频和脸,配置如下:
CUDA:约21.4秒
GML:约21.5秒
CPU:约325秒
可以看出,至少在我的配置环境和应用下,GML不弱于CUDA。