当前位置:首页 > C++ > 正文

PyTorch C++ API 入门指南(使用 LibTorch 在 C++ 中部署深度学习模型)

在深度学习项目中,模型训练通常使用 Python 完成,但实际部署时往往需要更高的性能和更低的资源开销。这时,PyTorch C++ API(也称为 LibTorch)就派上了用场。本文将手把手教你如何在 C++ 环境中加载并运行一个由 PyTorch 训练好的模型,即使你是编程小白也能轻松上手。

PyTorch C++ API 入门指南(使用 LibTorch 在 中部署深度学习模型)  C++深度学习 PyTorch模型部署 第1张

什么是 PyTorch C++ API?

PyTorch C++ API 是 PyTorch 官方提供的 C++ 前端接口,允许开发者在不依赖 Python 解释器的情况下加载和运行训练好的模型。它基于 LibTorch 库构建,适用于高性能、低延迟的生产环境部署场景。

使用 C++深度学习 技术,你可以将模型嵌入到嵌入式设备、移动应用或服务器后端中,充分发挥 C++ 的性能优势。

准备工作:安装 LibTorch

首先,你需要从 PyTorch 官网 下载 LibTorch 的预编译版本。选择与你的操作系统和是否使用 CUDA 匹配的版本。

以 Linux 为例(CPU 版本),你可以使用以下命令下载:

wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-latest.zipunzip libtorch-cxx11-abi-shared-with-deps-latest.zip

步骤一:导出 PyTorch 模型为 TorchScript

要在 C++ 中使用模型,必须先将其转换为 TorchScript 格式。TorchScript 是一种中间表示,可以在没有 Python 的环境中运行。

假设你有一个简单的 CNN 模型(用 Python 编写),可以这样导出:

import torchimport torchvision.models as models# 加载预训练模型model = models.resnet18(pretrained=True)model.eval()# 创建一个示例输入example = torch.rand(1, 3, 224, 224)# 使用 tracing 方式导出tscript_model = torch.jit.trace(model, example)tscript_model.save("resnet18.pt")

步骤二:编写 C++ 代码加载并运行模型

接下来,我们创建一个 C++ 文件 main.cpp,用于加载刚刚保存的 resnet18.pt 模型。

#include <torch/script.h> // LibTorch 头文件#include <iostream>#include <memory>int main() {    // 加载模型    std::shared_ptr<torch::jit::script::Module> module = torch::jit::load("resnet18.pt");    module->eval(); // 设置为评估模式    // 创建一个随机输入张量(模拟图像)    std::vector<torch::jit::IValue> inputs;    inputs.push_back(torch::rand({1, 3, 224, 224}));    // 执行前向传播    at::Tensor output = module->forward(inputs).toTensor();    // 输出结果形状    std::cout << "Output shape: " << output.sizes() << std::endl;    return 0;}

步骤三:编译并运行程序

使用 CMake 构建系统是最推荐的方式。创建一个 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)project(example-app)find_package(Torch REQUIRED)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")add_executable(example-app main.cpp)target_link_libraries(example-app "${TORCH_LIBRARIES}")set_property(TARGET example-app PROPERTY CXX_STANDARD 14)

然后在终端中执行以下命令进行编译:

mkdir buildcd buildcmake -DCMAKE_PREFIX_PATH=/path/to/libtorch ..make

注意:将 /path/to/libtorch 替换为你实际解压 LibTorch 的路径。

为什么选择 PyTorch C++ API?

  • ✅ 高性能推理:避免 Python GIL 限制,适合高并发场景。
  • ✅ 跨平台支持:可在 Windows、Linux、macOS 甚至嵌入式设备上运行。
  • ✅ 无缝迁移:只需少量修改即可将训练好的模型部署到 C++ 环境。
  • ✅ 官方维护:由 PyTorch 团队直接支持,稳定可靠。

通过本教程,你已经掌握了使用 PyTorch模型部署 到 C++ 环境的基本流程。无论你是想优化服务端性能,还是开发边缘 AI 应用,LibTorch 都是一个强大而灵活的选择。

小结

本文详细介绍了如何使用 PyTorch C++ API(即 LibTorch)在 C++ 中加载和运行深度学习模型。我们从模型导出、C++ 代码编写到编译运行,一步步带你完成整个流程。希望这篇教程能帮助你在 C++深度学习 的道路上迈出坚实的第一步!