极智AI | libtorch调用模型推理方法

简介: 大家好,我是极智视界,本文介绍一下 libtorch 调用模型推理方法。

大家好,我是极智视界,本文介绍一下 libtorch 调用模型推理方法

之前写了一篇《ubuntu 安装 libtorch》,所以关于 ubuntu 上安装 libtorch 的方法,有兴趣的同学可以自行查看。libtorch 是 pytorch 的 C++ 版本,支持 CPU 端和 GPU 端的模型部署。相较于用 tensorrt 部署 pytorch 模型,用 libtorch的优势在于:pytorch 和 libtorch 同属一个生态,API 语句比较接近,并且不会出现某网络层不支持的问题。这里咱们来看一下 libtorch 怎么调用模型进行推理的。

下面开始。

这里咱们以 resnet50 为例。

首先加载 resnet50 模型,并导出 trace 模型。

# 准备一个 py 脚本,里面内容如下
import torch
import torchvision
model = torchvision.models.resnet50(pretrained=False)
model = model.eval().cuda()
input_data = torch.randn(1, 3, 224, 224).cuda()
# export trace model
traced_script_model = torch.jit.trace(model, input_data)
output = traced_script_model(data)
traced_script_model.save('resnet50.pt')
print(output)

这里就会导出 trace 模型 resnet50.pt。然后编写推理工程。

先写 infer.cpp:

// infer.cpp
#include "torch/torch.h"
#include "torch/script.h"
#include <iostream>
int main(){
  // torch::Tensor tensor = torch::ones(3);
  // std::cout << tensor << std::endl;
  torch::jit::script::Module module;
  module = torch::jit::load("~/resnet50.pt");    // 导入前面生成的trace模型
  module.to(at::kCUDA);                          // 放到GPU上执行
  // 构建输入张量
  std::vector<torch::jit::IValue> inputs;
  inputs.push_back(torch::ones({1, 3, 224, 224}).to(at::kCUDA));
  // 执行推理
  at::Tensor output = module.forward(inputs).toTensor();
  std::cout << output << std::endl;
}

然后编写 CMakeList.txt:

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
find_package(PythonInterp REQUIRED)
project(infer_resnet50)
set(Torch_DIR ~/libtorch/share/cmake/Torch)  #你解压的libtorch的绝对路径
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")
set(CUDA_INCLUDE_DIRS "/usr/local/cuda/include")
add_executable(infer_resnet50 infer.cpp)
#link libtorch .a .so
target_link_libraries(infer_resnet50 "${TORCH_LIBRARIES}")
target_include_directories(infer_resnet50 PRIVATE CUDA_INCLUDE_DIRS)
#
set_property(TARGET infer_resnet50 PROPERTY CXX_STANDARD 14)

开始编译 & 执行:

mkdir build
cd build
cmake ..
make -j8

正常执行输出结果:


好了,以上分享了 libtorch 调用模型推理方法。希望我的分享能对你的学习有一点帮助。


logo_show.gif

相关文章
|
10月前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。
2977 120
|
10月前
|
人工智能 自然语言处理 物联网
GEO优化方法有哪些?2025企业抢占AI流量必看指南
AI的不断重塑传统的信息入口之际,用户的搜索行为也从单一的百度、抖音的简单的查找答案的模式,逐渐转向了对DeepSeek、豆包、文心一言等一系列的AI对话平台的更加深入的探索和体验。DeepSeek的不断迭代优化同时,目前其月活跃的用户已破1.6亿,全网的AI用户规模也已超过6亿,这无疑为其下一阶段的迅猛发展提供了坚实的基础和广泛的市场空间。
|
10月前
|
人工智能 搜索推荐 程序员
当AI学会“跨界思考”:多模态模型如何重塑人工智能
当AI学会“跨界思考”:多模态模型如何重塑人工智能
1381 120
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
1321 13
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
|
11月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
1683 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
11月前
|
人工智能 负载均衡 API
Vercel 发布 AI Gateway 神器!可一键访问数百个模型,助力零门槛开发 AI 应用
大家好,我是Immerse,独立开发者、AGI实践者。分享编程、AI干货、开源项目与个人思考。关注公众号“沉浸式趣谈”,获取独家内容。Vercel新推出的AI Gateway,统一多模型API,支持自动切换、负载均衡与零加价调用,让AI开发更高效稳定。一行代码切换模型,告别接口烦恼!
1511 1
Vercel 发布 AI Gateway 神器!可一键访问数百个模型,助力零门槛开发 AI 应用
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
如何让AI更“聪明”?VLM模型的优化策略与测试方法全解析​
本文系统解析视觉语言模型(VLM)的核心机制、推理优化、评测方法与挑战。涵盖多模态对齐、KV Cache优化、性能测试及主流基准,助你全面掌握VLM技术前沿。建议点赞收藏,深入学习。
3459 8
|
10月前
|
消息中间件 人工智能 安全
云原生进化论:加速构建 AI 应用
本文将和大家分享过去一年在支持企业构建 AI 应用过程的一些实践和思考。
2396 94