DirectML 是什么
DirectML 是微软提供的类似于CUDA的基础计算框架, 不同于CUDA必须使用N卡GPU, DirectML要求显卡支持DirectX 12即可, 所以AMD和intel的核显也能支持.
Pytorch 要使用 DirectML 作为计算的backend, 需要安装python库 torch-directml, 经测试torch-directml和DirectML 并不能支持所有的算子, 所以 暂时不能支持yolov8 .
准备Python测试环境
## 安装 python=3.9 虚拟环境
conda.exe create --name yolo_directml python=3.9
conda.exe activate yolo_directml
安装 torch-directml
该包更新的不是很频繁, 更新历史 https://pypi.org/project/torch-directml/#history
最后一个版本是 0.2.0.dev230426, 对应的pytorch 为 2.0; 次新版本是 0.1.13.1.dev230413, 对应的pytorch 为 1.13.1.
这两个版本在后面yolov8 使用中经常会使Windows蓝屏.
先不要安装 pytorch, 直接安装安装 torch-directml将会自动安装依赖 pytorch 版本.
pip install torch-directml==0.1.13.1.dev230413
检查环境
检查安装的 python 包:
pip list
检查torch和torch_directml的device输出:
import torch
torch.cuda.is_available()
import torch_directml
torch_directml.is_available()
torch_directml.device()
# 正常输出为: device(type='privateuseone', index=0)
安装 yolov8
pip install ultralytics
检查yolov8安装情况:
import ultralytics
ultralytics.checks()
改造 ultralytics\utils\torch_utils.py 文件
yolov8 仅支持device为cpu或0, 即CPU或cuda, 所以需增加一个device=dml的选项, 以启用DirectML 计算后台, 需要修改 torch_utils.py 文件:
# Ultralytics YOLO
标签:directml,return,self,torch,yolov8,device,视觉,model,else
From: https://www.cnblogs.com/harrychinese/p/18050896