Libtorch---py训练,c++推断---编程记录

本文档详细介绍了使用Libtorch 1.6.0在VS2017环境下进行程序调试时遇到的问题及解决方案,包括如何正确处理std::runtime_error及c10:error等错误,并提供了不同版本Libtorch与CUDA的兼容性建议。
部署运行你感兴趣的模型镜像

Libtorch1.6.0:

VS2017下用release进行程序调试及无法打断点问题:

VS2017下用release进行程序调试及无法打断点问题_wwwsssZheRen的博客-CSDN博客_vs release为什么会跳到断点

c++与libtorch混合编程:std:runtime_error及c10:error报错分析:

c++与libtorch混合编程:std:runtime_error及c10:error报错分析_小跑的芥子的博客-CSDN博客_libtorch c10:error

1、出现std:runtime_error的原因还可能是缺少caffe2_nvrtc.dll的原因,把它放在.exe的相同文件夹下

2、实事证明在py的网络中包含了torch.cat反卷积时,在Libtorch1.6.0中仍然能调用

3、py的torch版本一定要与Libtorch的版本一致

4、当一个torch::Tensor送到CUDA中时,eg:    不能只用  img.to(torch::kCUDA),  而是用  img = img.to(torch::kCUDA), 这步有点坑;

5、在大量的后处理代码中,自己生成的torch张量一定要送到设备(cpu/cuda)中去,eg:torch::ones({ pt.sizes()[0], 1 }).to(device_all), 不然就会出现CPU上正常运行,cuda上各种报错;

6、推荐在python中用cpu转换出pt。因为,用gpu转换后的模型文件,在c++中只能用gpu加载,无法用cpu加载;但是用cpu转换后的模型,在c++中既能用cpu,也能用gpu加载。

7、如果模型是在GPU推断的,那么从gpu中取数据到cpu或内存里时一定会占用一定时长,在RTX1060上亲测是50ms左右,当然,可能与cpu有关。例如以下操作:

float left_top_x = temp[j][0].item<float>();
result[i].index();
torch::ones({ 2, 3 }).to(device_all);

这些操作只要有一个出现就会消耗时长,再出现类似操作时就不会咋消耗时间。这点感觉就像一个鸿沟一样,无法从代码层面逾越,至少目前我还不行。

Libtorch1.9.0  + cuda10.2  可正常使用

Libtorch1.11.0  + cuda11.3  可正常使用

Libtorch1.12.0 与Libtorch1.12.1的gpu-debug与cpu-debug 都会报“Debug error”的错误

Libtorch1.13.0 的gpu-debug报“Debug error”的错误

pytorch1.11.0+cu113torchvision 0.12.0+cu113 / torchaudio+cu113 (支持30系列显卡)

训练的网络,可以用Libtorch1.9.0 + cuda10.2(不支持30系列,但支持20系列显卡)推断

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枫呱呱

如果这篇博文对你有用,求打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值