时间 | 版本 | 修改人 | 描述 |
---|---|---|---|
2024年5月10日10:13:54 | V0.1 | 宋全恒 | 新建文档 |
2024年5月13日11:08:42 | V1.0 | 宋全恒 | 填充了训练和推理的定义,并且对于推理加速的方面进行了详细的介绍 |
简介
最近要坐推理时的动态量化,因此,需要认真理解一下推理的含义。
概念: 训练(Training) **训练是指通过将大量数据输入到模型中,调整模型参数,从而使得模型能够更好地适应特定任务的过程。**在训练过程中,通常需要将数据划分为训练集和验证集,然后使用训练集来调整模型参数,最后使用验证集来评估模型的性能。
概念: 推理(Inference)是指将经过训练的模型应用于新数据或新情境,以做出预测或决策。在推理过程中,通常需要将输入数据传递给模型,并生成相应的输出结果。推理是人工智能应用中的最后一个阶段,它可以将训练好的模型应用于实际场景中,以解决实际问题。在推理过程中重要的问题是加速accelerattion,包括的关键技术有 模型压缩、剪枝、量化,通过这些手段产生的结果是降低延迟,提升实时性能
网页 | 描述 |
---|---|
【揭秘】AI训练与推理,究竟有何玄机? - 知乎 | 提供了训练和推理的概念理解 |
机器学习系统中的大模型训练、推理加速与CUDA算子优化概览 - 知乎 | 提到了推理加速 |
AI技术革命:如何通过推理加速优化你的大模型? - 知乎 | 👍大模型推理加速优化路线 1. 模型结构优化 2. 软件框架和库优化。 文章提到了Pre-training,Fine-turing,Alignment Traing的概念和彼此之间联系 |
深度学习中模型压缩(Network Compression)的几种方法(李宏毅视频课总结)_neuron pruning-CSDN博客 | 👍👍👍里面较清楚的讲述了神经网络压缩,即推理加速的几种技术。 |
10-09 周一 图解机器学习之深度学习感知机学习_图解感知机-CSDN博客 | 文章里包含了深度学习的基础概念,日志包含了训练,包含了深度学习训练的典型过程,定义模型,定义损失,优化。 |
11-06 周一 神经网络之前向传播和反向传播代码实战-CSDN博客 | 这里主要是介绍了前向传播和反向传播的概念,核心就是梯度下降的执行过程。 |
下图来自 机器学习系统中的大模型训练、推理加速与CUDA算子优化概览 - 知乎
在框架结构优化中,主要包括:
推理定义
什么是大模型训练和推理 - 知乎
推理:指利用训练好的神经网络模型进行运算,利用输入的新数据来一次性获得正确结论的过程。
推理追求的事低延时,低功耗,更关注用户体验。
在理解上,推理,其实就是相当于利用训练得到的模型,执行一步前向传播。将输入映射到输出,得到结果。
这就涉及深度学习的主要内容,如李宏毅老师所说:
上图中,第一步定义了待训练的模型,其参数为w和b,通过定义损失并结合梯度下降算法,根据一批样本可以确定一个函数f,而f即经过训练之后得到的模型,这个模型在深度学习中通常是神经网络组成的。
更具体的说,经过训练的神经网络可以利用自己学到的知识在数字世界中发挥作用,例如:识别图像、口语、判断血液疾病、或是换位思考,你可以将其称之为——被简化过的应用程序形式。这种更快速、高效的神经网络基于训练来推断出所呈现的新数据,在AI词典中,被称之为“推理”。 具体参见深度学习训练和推理之间有什么差异?
推理加速
模型结构优化
即神经网络压缩,主要是包括剪枝,量化, 知识蒸馏。
深度学习中模型压缩(Network Compression)的几种方法(李宏毅视频课总结)_neuron pruning-CSDN博客 包括了李宏毅老师上课的内容。
软件框架优化
软件框架优化的含义,可以在模型结构保持不变的情况下进行。
优化策略
- KV Cache
- Iteration-level Scheduling
- PageAttention vLLM
- GPTQ量化 llama.cpp
- Fused kernels
神经网络执行引擎
- TensorRT
- Tensorflow Serving
- TVM/MLC
与线性代数层的优化不同,执行引擎具备一种独特的超能力,可以看到整个神经网络的结构,同时处理多个来自客户端的请求,因此能够通过涉及多个算子、整个模型以及多个请求间的优化来提高执行效率
策略
- 算子融合 Operator Fusion
- 量化Quantization
- 现在推理的**基线数据类型已经是FP16**,比几年前的FP32提高了不少速度。然而,将模型量化为INT8进行推理,仍然可以带来更快的速度,而在手机平台上,量化推理更是一种降低魔法消耗的绝佳选择。
- 分布式 Distribution 多卡推理和通信加速
- 批量化(Batching)
总结
推理这个东西,其实是训练过程中的一次前向传播,这个笔记就先到这里,要抓紧时间了解量化的知识了。