一、问题描述
在离线部署 huggingface 中模型时,导入的模型Encoder 的 config 时报错。
红字报错内容意思是,数据是半精度的浮点数 “Half” 格式,此格式是为GPU计算设计,CPU无法计算这个类型数据。特别的此处是在cpu上运行torch.linspace报错。
二、问题解决
根据报错原因,两个思路解决问题:一是将数据转为CPU可运行的数据格式——半精度 Half转为正常的 float 即可(暂未在Python中找到能实现此操作的代码);二是使用GPU进行此处的运算,linspace中内置了选择设备的参数。
总结:部署时要关注数据类型,尤其是 cpu 不支持半精度 half 的 gpu 运行类型
# 选择GPU设备
device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu")
# 最新更新改为调动全局变量的设置参数更好
## 导入surya设置函数
from surya.settings import settings
device = settings.TORCH_DEVICE_DETECTION
# 在GPU上运算
drop_path_decays = [x.item() for x in torch.linspace(0, config.drop_path_rate,sum(config.depths), device=device)]