python环境下onnx文件快速布局CUDA与DML

最后修改时间:2024/7/19 15:24:51

安装

训练好的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。