1.libtorch是什么
libtorch是pytorch的C++版本,支持CPU端和GPU端的部署和训练。由于python和c++的语言特性,因此用pytorch做模型训练,libtorch做模型部署。
用libtorch部署pytorch模型,而不是用tensorrt等工具部署模型的优势在于:pytorch和libtorch同属一个生态,API语句比较接近,并且不会出现某网络层不支持的问题。
Note that LibTorch is only available for C++.
2.libtorch如何下载
libtorch的下载链接,如下图所示,libtorch有release和debug版本可以选择。 注意:最新版本的pytorch和libtorch(1.11.0)已经不支持windows系统下的CUDA10.2,如下图所示。解决方法:windows下使用CUDA11.3,或者不使用最新版本的pytorch和libtorch,1.10版本是支持windows下的pytorch的。老版本的libtorch下载请参考这篇博客。
3.libtorch在windows下如何使用
libtorch解压后如下图所示:
最核心的是include和lib这两个文件夹。其实,不管是libtorch,还是别的tensorrt、openvino等模型部署工具,其本质都是给用户提供include和lib去使用。 下面讲解下libtorch在windows下如何在VS中使用。 3.1在VS的包含目录中添加libtorch的头文件 3.2 在VS的库目录中添加libtorch的库文件 3.3 在VS中添加附加依赖项 libtorch的所有依赖项如下,可以直接粘贴使用。
asmjit.lib
c10.lib
c10_cuda.lib
caffe2_detectron_ops_gpu.lib
caffe2_module_test_dynamic.lib
caffe2_nvrtc.lib
Caffe2_perfkernels_avx.lib
Caffe2_perfkernels_avx2.lib
Caffe2_perfkernels_avx512.lib
clog.lib
cpuinfo.lib
dnnl.lib
fbgemm.lib
fbjni.lib
kineto.lib
libprotobuf-lite.lib
libprotobuf.lib
libprotoc.lib
mkldnn.lib
pthreadpool.lib
pytorch_jni.lib
torch.lib
torch_cpu.lib
torch_cuda.lib
XNNPACK.lib
3.4 错误:c2872 std 不明确的符号 解决方法:将 VS配置中的符合模式 改为否,问题解决。如下图所示。 3.5 Torch::cuda::is_available()返回值为False的解决办法: 在链接器中 -> 命令行 -> 其他选项,添加如下内容:
/INCLUDE:?warp_size@cuda@at@@YAHXZ
4.libtorch推理YOLOv5的例子
这篇博客写的较为详细,推荐看这篇博客。
5.libtorch模型转换方法
官方教程链接Converting to Torch Script via Tracing
import torch
import torchvision
model = torchvision.models.resnet18()
example = torch.rand(1, 3, 224, 224)
traced_script_module = torch.jit.trace(model, example)
traced_script_module.save("traced_resnet_model.pt")
|