初步支持 macOS (Apple Silicon)

升级至PP-OCRv5
Tested with Python 3.13
感谢用户 "期望" 提供的macOS设备用于开发测试
This commit is contained in:
Jason
2025-05-18 19:21:33 +08:00
parent c673b5ccd1
commit 7cf4e882cd
20 changed files with 56 additions and 62 deletions

View File

@@ -21,6 +21,7 @@ class HardwareAccelerator:
def __init__(self):
self.__cuda = False
self.__dml = False
self.__mps = False
self.__onnx_providers = []
self.__enabled = True
self.__device = None
@@ -28,6 +29,7 @@ class HardwareAccelerator:
def initialize(self):
self.check_directml_available()
self.check_cuda_available()
self.check_mps_available()
self.load_onnx_providers()
def check_directml_available(self):
@@ -36,6 +38,9 @@ class HardwareAccelerator:
def check_cuda_available(self):
self.__cuda = torch.cuda.is_available()
def check_mps_available(self):
self.__mps = torch.backends.mps.is_available() and torch.backends.mps.is_built()
def load_onnx_providers(self):
try:
import onnxruntime as ort
@@ -65,7 +70,7 @@ class HardwareAccelerator:
def has_accelerator(self):
if not self.__enabled:
return False
return self.__cuda or self.__dml or len(self.__onnx_providers) > 0
return self.__cuda or self.__dml or self.__mps or len(self.__onnx_providers) > 0
@property
def accelerator_name(self):
@@ -75,6 +80,8 @@ class HardwareAccelerator:
return "DirectML"
if self.__cuda:
return "GPU"
if self.__mps:
return "MPS"
elif len(self.__onnx_providers) > 0:
return ", ".join(self.__onnx_providers)
else:
@@ -83,7 +90,7 @@ class HardwareAccelerator:
@property
def onnx_providers(self):
if not self.__enabled:
return []
return ["CPUExecutionProvider"]
return self.__onnx_providers
def has_cuda(self):
@@ -91,6 +98,11 @@ class HardwareAccelerator:
return False
return self.__cuda
def has_mps(self):
if not self.__enabled:
return False
return self.__mps
def set_enabled(self, enable):
self.__enabled = enable
@@ -117,4 +129,6 @@ class HardwareAccelerator:
self.__dml = False
if self.__cuda:
return torch.device("cuda:0")
if self.__mps:
return torch.device("mps")
return torch.device("cpu")