前言
本文主要介绍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)