极智AI | 谈谈推理引擎的推理组织流程

本文涉及的产品
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,图像资源包5000点
简介: 本文主要讨论一下推理引擎的推理组织流程,包括 英伟达 tensorrt、华为 CANN 以及 TVM。

本文主要讨论一下推理引擎的推理组织流程,包括 英伟达 tensorrt、华为 CANN 以及 TVM。

对于用户和大多开发者来说,其实不用太关心推理引擎内部是怎么实现推理的,比如你在使用 tensorrt 的时候你只要知道使用流程,怎么去生成 Eng,怎么调用 Eng 去 doInference 就好了。但是你不好奇吗,它到底是怎么 create Eng,怎么 load Eng 去做 inference 的,Eng 到底是个什么东西,它也不能像 .pth、.cfg、.pb 一样用 netron 来直观可视化。这里我们就对 tensorrt、CANN、TVM 的推理组织流程展开讨论一下。


1、TensorRT

tensorrt 是一个非常好用的高性能推理框架,它的使用方式主要有以下两种:

(1)将 tensorrt 嵌入到成熟的 AI 框架中,如 TF-TRT、Torch-TRT、ONNX-TRT、TVM-TRT 等,大多做法是将 tensorrt 支持的算子优先以 tensorrt 的方式执行,tensorrt 不支持的算子回退到原框架执行;

(2)直接使用 C++ API 或 Python API 去搭 tensorrt 的推理引擎,至于 tensorrt 不原生支持的算子,我可以采用更细粒度的算子进行拼接或替换(如用 resize 替换 upsample,用 clip 激活函数替换 relu6 等)甚至可以直接用 cuda 来自定义算子。

tensorrt 的推理流程如下:

Network Definition 是用于解析模型之后在 tensorrt 中的网络定义,Builder 主要作用是把 Network Definition 按照对应的硬件生成相应的可执行程序,也就是 Engine。如果你进行在线推理的话,其实直接接着进 runtime 就好了。而实际中,我们往往需要把这个 Engine 保存成一个离线模型 .eng,以便于 runtime 过程的解耦,因为 runtime 往往在用户现场,而 runtime 之前的操作往往在家里。这个时候就需要用到 serialize 和 deserialize 了。

通过 serialize(序列化)来生成二进制文件 .eng,也即这里的 Optimized Plans,这个就是所谓的离线模型了。

等去部署的时候,只要我们手里有离线模型就好了,然后借助 deserialize(反序列化)成硬件可执行程序 Engine 后继续执行推理就好了。

所以这么看来,整个 tensorrt createEng 和 doInference 的流程是这样的:


2、CANN

昇腾的 CANN 可能大家接触就没 tessorrt 那么多了,先简单介绍一下。

昇腾 CANN(Compute Architecture for Neural Networks)是华为针对 AI 全场景推出的异构计算框架,它对上支持业界主流的前端AI 框架,向下对用户屏蔽系列化芯片的硬件差异,以丰富的软件栈功能使能(我发现华为很喜欢用 “使能” 这两个词,我也用一下哈哈)用户全场景的人工智能应用。CANN 的架构如下:

下面来谈谈 CANN create .om(昇腾的离线模型)的组织流程。

其实 CANN 公开的信息要比 tensorrt 丰富许多,CANN TBE 软件栈的逻辑架构如下:

其中 Graph Engine(GE)+ Fusion Engine(FE)+ Tensor Boost Engine(TBE)就相当于 tensorrt 里的 builder,下面来看看 GE + FE + TBE 的组织方式:

GE 是图引擎,FE 是融合引擎,TBE 是张量加速引擎。GE 主要作用是解析前端框架、链接后端、调度排布的融合引擎;FE 主要作用是实现算子融合、UB 融合;TBE 主要作用是提供了算子在华为加速卡中的实现编译、任务执行。结合上图,整个流程分成这么几个阶段:2~4 为算子适配替换、5 为子图拆分优化、6 为调度与流程排布。不难看出,经过 6.1 阶段后,实际推理过程中已经不存在所谓的网络层的概念,此时是由一个个 taskinfo 组成了离线模型 .om 文件,最终的 Runtime 时是通过调用 .om 内的信息进行任务下发。


3、TVM

大家都知道,昇腾 CANN 是基于 TVM 的,因此 CANN 的模型编译过程和 TVM 比较相似。TVM 的模型编译流程如下,其离线模型组织的位置在 relay.build -> graph optimize 之后。

整个 TVM 的编译流逻辑如下[图片参考自]:

TVM 通过 relay.frontend.from_AIFrameworks 来接 AI 框架的模型转换成 relay IR,在 relay IR 上做图优化,完了后面接 compile engine 模块,去做 compute + schedule,然后进行子图编译,这时就到了 TIR 层,会走 TIR PASS,最后是 CodeGen,CodeGen 主要实现了内存分配及指定硬件设备上代码生成,完了就可以序列化成 TVM 的离线模型了(.json 和 .params)。

以上我们讨论了 tensorrt、CANN、TVM 的推理组织流程,如有说的不妥,欢迎交流~


收工~


logo_show.gif

相关文章
|
14天前
|
人工智能 安全 测试技术
EXAONE 3.5:LG 推出的开源 AI 模型,采用 RAG 和多步推理能力降低模型的幻觉问题
EXAONE 3.5 是 LG AI 研究院推出的开源 AI 模型,擅长长文本处理,能够有效降低模型幻觉问题。该模型提供 24 亿、78 亿和 320 亿参数的三个版本,支持多步推理和检索增强生成技术,适用于多种应用场景。
65 9
EXAONE 3.5:LG 推出的开源 AI 模型,采用 RAG 和多步推理能力降低模型的幻觉问题
|
17天前
|
存储 人工智能 PyTorch
【AI系统】模型转换流程
本文详细介绍了AI模型在不同框架间的转换方法,包括直接转换和规范式转换两种方式。直接转换涉及从源框架直接生成目标框架的模型文件,而规范式转换则通过一个中间标准格式(如ONNX)作为桥梁,实现模型的跨框架迁移。文中还提供了具体的转换流程和技术细节,以及模型转换工具的概览,帮助用户解决训练环境与部署环境不匹配的问题。
35 5
【AI系统】模型转换流程
|
17天前
|
存储 机器学习/深度学习 PyTorch
【AI系统】推理文件格式
本文介绍了神经网络模型的序列化与反序列化技术,涵盖跨平台通用序列化方法(如 Protobuf 和 FlatBuffers)、模型自定义序列化方法、语言级通用序列化方法等,重点讨论了这两种流行文件格式的特点、使用场景及其在模型部署中的作用。
27 1
【AI系统】推理文件格式
|
20天前
|
存储 人工智能 监控
【AI系统】推理系统架构
本文深入探讨了AI推理系统架构,特别是以NVIDIA Triton Inference Server为核心,涵盖推理、部署、服务化三大环节。Triton通过高性能、可扩展、多框架支持等特点,提供了一站式的模型服务解决方案。文章还介绍了模型预编排、推理引擎、返回与监控等功能,以及自定义Backend开发和模型生命周期管理的最佳实践,如金丝雀发布和回滚策略,旨在帮助构建高效、可靠的AI应用。
83 15
|
17天前
|
机器学习/深度学习 人工智能 缓存
【AI系统】推理内存布局
本文介绍了CPU和GPU的基础内存知识,NCHWX内存排布格式,以及MNN推理引擎如何通过数据内存重新排布进行内核优化,特别是针对WinoGrad卷积计算的优化方法,通过NC4HW4数据格式重排,有效利用了SIMD指令集特性,减少了cache miss,提高了计算效率。
35 3
|
20天前
|
机器学习/深度学习 人工智能 算法
【AI系统】推理流程全景
本文概述了神经网络模型在云侧和边缘侧部署的特点与挑战。云侧部署凭借强大的计算能力和集中的数据管理,适合高吞吐量应用,但面临高成本、网络延迟等问题;边缘侧部署则通过模型优化和硬件加速降低延迟和能耗,适用于资源受限的环境,但存在算力限制、数据分散等挑战。两种方式各有优劣,需根据实际需求选择。
43 5
|
20天前
|
机器学习/深度学习 人工智能 算法
【AI系统】推理系统介绍
推理系统是一种专门用于部署和执行神经网络模型预测任务的AI系统,类似于Web服务或移动端应用,但专注于AI模型的部署与运行。它支持将模型部署到云端或边缘端,处理用户请求。本文介绍了训练与推理的基本流程、两者差异、推理系统的优化目标及挑战,并对比了推理系统与推理引擎的流程结构,强调了设计推理系统时需考虑的优化目标,如灵活性、延迟、吞吐量、高效率、扩展性和可靠性。同时,文章还讨论了推理系统与推理引擎的区别,帮助读者深入了解推理引擎的核心技术。
48 5
|
19天前
|
机器学习/深度学习 人工智能 API
【AI系统】推理引擎示例:AscendCL
AscendCL 是华为 Ascend 系列 AI 处理器的软件开发框架,提供强大的编程支持,简化 AI 应用的开发和优化。本文介绍了 AscendCL 的概念、优势、应用场景及基本开发流程,帮助开发者高效利用昇腾 AI 处理器的计算资源。
34 2
|
26天前
|
存储 人工智能 缓存
官宣开源 阿里云与清华大学共建AI大模型推理项目Mooncake
近日,清华大学和研究组织9#AISoft,联合以阿里云为代表的多家企业和研究机构,正式开源大模型资源池化项目 Mooncake。
|
27天前
|
存储 人工智能 缓存
官宣开源|阿里云与清华大学共建AI大模型推理项目Mooncake
2024年6月,国内优质大模型应用月之暗面Kimi与清华大学MADSys实验室(Machine Learning, AI, Big Data Systems Lab)联合发布了以 KVCache 为中心的大模型推理架构 Mooncake。

热门文章

最新文章