OAID/Tengine推理引擎快速入门教程

OAID/Tengine推理引擎快速入门教程

Tengine Tengine is a lite, high performance, modular inference engine for embedded device Tengine 项目地址: https://gitcode.com/gh_mirrors/ten/Tengine

前言

OAID/Tengine是一款轻量级、高性能的神经网络推理引擎,专为边缘计算设备优化设计。本文将详细介绍Tengine的核心推理流程,帮助开发者快速掌握其基本使用方法。

Tengine推理流程概述

Tengine的推理过程遵循一个清晰的执行流程,开发者需要按顺序调用核心API来完成模型推理。整个流程可以分为六个主要步骤,下面我们将逐一详细讲解。

1. 初始化引擎(init_tengine)

在任何推理操作之前,必须首先初始化Tengine引擎。这个步骤在整个程序中只需要执行一次。

init_tengine();

初始化操作会加载Tengine运行所需的基础组件和资源,为后续的模型加载和推理做好准备。

2. 创建计算图(create_graph)

初始化完成后,需要创建计算图结构。这个步骤会将模型文件加载到内存中,并构建内部的计算图表示。

graph_t graph = create_graph(nullptr, "tengine", model_file);

参数说明:

  • 第一个参数通常设为nullptr
  • "tengine"指定使用Tengine格式的模型
  • model_file是模型文件的路径

3. 预运行设置(prerun_graph)

预运行阶段是性能调优的关键环节,开发者可以在这里配置各种运行参数:

struct options opt;
opt.num_thread = 4;           // 设置使用4个线程
opt.cluster = TENGINE_CLUSTER_ALL; // 使用所有计算核心
opt.precision = TENGINE_MODE_FP32; // 使用FP32精度
opt.affinity = 0x0F;          // 绑定到前4个核心

prerun_graph_multithread(graph, opt);

可配置参数详解:

  • num_thread:设置推理使用的线程数
  • cluster:指定使用的计算核心类型
    • TENGINE_CLUSTER_ALL:使用所有核心
    • TENGINE_CLUSTER_BIG:仅使用大核
    • TENGINE_CLUSTER_MEDIUM:使用中核
    • TENGINE_CLUSTER_LITTLE:使用小核
  • precision:设置计算精度
    • TENGINE_MODE_FP32:32位浮点
    • TENGINE_MODE_FP16:16位浮点
    • TENGINE_MODE_INT8:8位整型
  • affinity:核心亲和性掩码,用于绑定特定核心

4. 执行推理(run_graph)

配置完成后,就可以执行实际的推理计算了:

run_graph(graph, 1);  // 第二个参数表示阻塞等待推理完成

这个步骤会按照预运行阶段的配置执行完整的计算图推理。

5. 后处理(postrun_graph)

推理完成后,需要释放计算图占用的资源:

postrun_graph(graph);

这个步骤会释放推理过程中分配的各种临时资源,但保留计算图结构。

6. 销毁计算图(destroy_graph)

最后,当不再需要该计算图时,应该销毁它以释放所有相关资源:

destroy_graph(graph);

完整流程示意图

graph TD
    A[初始化引擎 init_tengine] 
    B[创建计算图 create_graph]
    C[预运行配置 prerun_graph]
    D[执行推理 run_graph]
    E[后处理 postrun_graph]
    F[销毁计算图 destroy_graph]
    A --> B --> C --> D --> E --> F

最佳实践建议

  1. 对于需要多次执行推理的场景,可以重复使用同一个计算图,只需在初始化后多次调用run_graph即可,无需重复创建和销毁。

  2. 精度设置对性能和准确率有直接影响,建议根据实际需求选择:

    • 对精度要求高的场景使用FP32
    • 对性能要求高的场景可以尝试FP16或INT8
  3. 线程数设置应根据目标设备的CPU核心数合理配置,通常设置为物理核心数可获得最佳性能。

  4. 在移动设备上,合理使用cluster参数可以优化能效比,例如对轻量级模型可以只使用小核运行。

通过掌握这六个核心步骤,开发者已经能够使用Tengine完成基本的模型推理任务。后续可以进一步学习模型优化、自定义算子等高级特性来充分发挥Tengine的性能潜力。

Tengine Tengine is a lite, high performance, modular inference engine for embedded device Tengine 项目地址: https://gitcode.com/gh_mirrors/ten/Tengine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

诸盼忱Gazelle

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值