一、环境
- 系统:
Windows 10
- 软件:
Visual Stuido 2019
+VSIXTorch.vsix
。VSIXTorch.vsix 只支持到Visual Studio 2019
。 - 下载
libtorch
:
二、例程
建立项目,注意
inclue
目录和lib
目录,以及lib包检测是否附到项目属性上了:运行:
1
2
3
4
5
6
import torch
import torchvision
model = torchvision.models.resnet18(pretrained=True)
example = torch.rand(1, 3, 224)
traced_script_module = torch.jit.trace(model, example)
traced_script_module.save("traced_resnet_model.pt")
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <torch/script.h>
#include <torch/torch.h>
#include <iostream>
#include <memory>
int main(int argc, const char* argv[]) {
torch::jit::script::Module model;
model = torch::jit::load("traced_resnet_model.pt", at::kCUDA);
std::vector<torch::jit::IValue> inputs;
inputs.push_back(torch::ones({ 1, 3, 224, 224 }, at::kCUDA));
at::Tensor output = model.forward(inputs).toTensor();
std::cout << output.slice(1, 0, 5) << "\n";
return 0;
}
注意:TensorFlow+Windows+Visual Studio比较麻烦,要手动搞CMake,Torch C/C++只需要用Visual Studio 2019的libtorch插件就行。
三、Torch模型部署
JIT是一种概念,全称是 Just In Time Compilation,中文译为即时编译,是一种程序优化的方法。TorchScript(PyTorch的JIT实现)TorchScript是Pytorch模型(继承自nn.Module)的中间表示,可以在像C++这种高性能的环境中运行。用JIT将Python模型转换为 TorchScript Module。
使用Python训练模型,然后通过JIT将模型转为语言无关的模块,从而让C++可以非常方便得调用,从而把PyTorch模型部署到任意平台和设备上:树莓派、iOS、Android等。
torch.jit有两种生成方式:torch.jit.trace和torch.jit.script,前者不能有if、while等控制流,后者可以有。