AI模型推理(1)——入门篇

news/2024/12/2 14:39:19/

前言

本文主要介绍AI模型推理的相关基础概念,为后续云原生模型推理服务的学习做准备。

初识模型部署

对于深度学习模型来说,模型部署指让训练好的模型在特定环境中运行的过程。相比于常规的软件部署,模型部署会面临更多的难题:

1、运行模型所需的环境难以配置。深度学习模型通常是由一些框架编写,比如 Pytorch、TensorFlow。可能由于框架规模、依赖环境的限制,这些框架不适合在手机等生产环境安装。

2、深度学习模型的结构通常比较庞大,需要大量的算力才能满足实时运行的需求。模型运行的效率需要优化。

因为这些难题的存在,模型部署不能靠简单的环境配置与安装完成。经过工业界和学术界数年的探索,模型部署有了一条流行的流水线:

  •  为了让模型最终能够部署到某一环境上,开发者们可以使用任意一种深度学习框架来定义网络结构,并通过训练确定网络中的参数。
  • 之后,模型的结构和参数会被转换成一种只描述网络结构的中间表示一些针对网络结构的优化会在中间表示上进行。有时候我们也会将这里的中间表示称为模型文件。
  • 最后,用面向硬件的高性能编程框架(如CUDA、OpenCL)编写,能高效执行深度学习网络算子的推理引擎会把中间表示转换成特定的文件格式(有时候也可以不用转换这一步,直接加载中间表示),并在对应的硬件平台上高效运行模型。

概念解析

模型格式

当深度学习训练完成后,需要将训练出的模型持久化成模型文件(包含神经网络结构、权重参数等信息,能描述数据计算过程)。后面使用特定的代码加载模型文件,则可以进行模型推理。

目前主流AI开发社区使用的模型格式种类很多,以腾讯云-TI平台为例,支持的模型格式有 Savedmodel、Frozen Graph、TorchScript、Detection2、PyTorch、PMML、ONNX、MMDetection、Hugging Face,共9种。

这其中有一部分附属于深度学习框架,比如Savedmodel就是Tensorflow推出的可以选择的模型格式之一。另外还有旨在成为通用模型描述标准的模型格式 ,如ONNX。

参考:

模型部署入门教程(一):模型部署简介 - 知乎 (zhihu.com)


http://www.ppmy.cn/news/58333.html

相关文章

SpringCloud微服务的熔断、限流、降级是怎么回事?

概述: 在开发公司商城项目时,由于采用的是微服务架构,每个模块之间使用OpenFeign组件进行通信,在遇到高并发时,为了保证系统的可用性和 可靠性,我们使用了阿里的Alibaba的Sentinel组件进行降级、限流和熔断…

Ubuntu连接Xshell

Ubuntu连接Xshell 1、安装ssh,开启服务 1、安装ssh sudo apt-get install openssl-server 2、启动ssh服务 /etc/init.d/ssh start 3、修改文件,允许远程登陆 sudo vi /etc/ssh/sshd_config PermitRootLogin prohibit-password #默认为禁止登录 PermitR…

QT C++开发之:重定义基础数据类型

(1)前言 对于C/C,几乎每个系统都会重定义(typedef)基础数据类型。 (QT在qglobal.h中,MSVS在minwindef.h)。 其目的是为了方便代码的迁移(在各种环境之间)。 …

「蓝桥杯」扫地机器人

扫地机器人 题目描述 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所示。 走廊内部署了 K 台扫地机器人,其中第 i 台在第 A_i 个方格区域中。已知扫地机器人每分钟可以移动到左右相邻的方格中,并将该区域清扫干…

浅聊一下cmake

浅聊一下cmake 什么是cmake CMake是一个跨平台的编译工具,可以用简单的语句来描述所有平台的编译过程。 只要生成一份CMakeLists.txt文档,就可以利用CMake进行工程的搭建,能够输出各种各样的makefile或者project文件。 什么是makefile makefile定义…

Docker部署spring boot项目

在docker部署时首先要保证一般部署能够访问。 docker命令部署spring boot项目 目前主流的java框架为spring,软件包为jar包,只需以jar为基础构建容器环境。打包为jar后只需要jvm就可以运行,因此需要以jdk为镜像构建容器。 基于命令构建jdk环…

[C++基础]-类和对象(下)

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一、深入学…

C++三大特性—继承“名字搜索与默认成员函数”

继承中的类的作用域 每个类定义自己的作用域,在这个作用域中定义自己的成员。当存在继承关系时,派生类的作用域嵌套在基类的作用域之中。如果一个名字在派生类的作用域中无法解析,那么编译器将继续在外层的基类中寻找该名字的定义。 继承关系…