gpu的ai计算优化方法与案例:从训练到推理 · • 优化方法 –...
TRANSCRIPT
![Page 1: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/1.jpg)
YOUR SUCCESS, WE SUCCEED
基于GPU的AI计算优化方法与案例:从训练到推理
张清,浪潮AI首席架构师
![Page 2: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/2.jpg)
AI计算的发展趋势及其挑战
基于GPU的AI计算优化方法:从训练到推理
提纲
Case Study:基于GPU实现AutoML Suite计算优化
![Page 3: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/3.jpg)
Source :IDC 2019
AI计算的发展趋势
US$M
2,731.7
4,478.9
6,833.8
9,674.4
13,432.3
17,468.0
1,680.62,686.6
3,762.94,639.0
5,917.67,303.4
64.0%
52.6%
41.6%38.8%
30.0%
59.8%
40.0%
23.3%27.6%
23.4%
0.0%
10.0%
20.0%
30.0%
40.0%
50.0%
60.0%
70.0%
0
2,000
4,000
6,000
8,000
10,000
12,000
14,000
16,000
18,000
2018 2019 2020 2021 2022 2023
中国人工智能总体市场规模及预测, 2018-2023 AI Spending Growth Rate整体投资
中国人工智能服务器市场规模及预测, 2018-2023 AI Server Growth Rate算力投资
趋势1:越来越多的场景将采用AI技术创新,未来计算投入会越来越大
![Page 4: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/4.jpg)
81.3%73.7%
66.6%59.8%
51.7% 47.9%42.7%
18.7%26.3%
33.4%40.2%
48.3% 52.1% 57.3%
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
2017年 2018年 2019年 2020年 2021年 2022年 2023年
Training Inference
Source : IDC 2019
AI计算的发展趋势
趋势2:越来越多的AI应用将进入生产阶段,未来5年推理所需计算会迅速增加
![Page 5: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/5.jpg)
Source : Facebook
AI计算的发展趋势
趋势3:大数据+大模型,需要更大的计算
16.0
36.0
87.0
153.0
82.2%
84.2%
85.1% 85.4%
80.0%
81.0%
82.0%
83.0%
84.0%
85.0%
86.0%
0
20
40
60
80
100
120
140
160
180
200
ResNeXt-101 32*8d ResNeXt-101 32*16d ResNeXt-101 32*32d ResNeXt-101 32*48d
单位:BFLOPS
计算量 准确度
![Page 6: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/6.jpg)
AI计算面临的挑战
• AI计算架构:芯片间异构与芯片内异构
• 异构并行与协同计算
– CPU/GPU,CUDA Core/Tensor Core
• AI计算规模:K级节点、10K级GPU卡
• 性能与性能的可扩展性
– 单模型K级以上GPU并行计算
• AI计算环境:不同用户、不同算法、不同数据、不同框架、不同GPU卡
• 任务管理与资源调度
– 生产系统K级以上模型并发调度
◼ 不同
![Page 7: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/7.jpg)
AI计算的发展趋势及其挑战
基于GPU的AI计算优化方法:从训练到推理
提纲
Case Study:基于GPU实现AutoML Suite计算优化
![Page 8: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/8.jpg)
基于GPU的AI计算优化方法
AI应用特征分析 GPU平台优化 AI计算框架GPU优化 AI应用GPU优化
计算特征
访存特征
通信特征
IO特征
计算优化
存储优化
网络优化
资源管理
资源调度
GPU系统管理优化
数据模型划分
单机优化算法
不同通信机制
数据模型聚合
训练性能优化
训练扩展优化
推理吞吐优化
推理延时优化
![Page 9: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/9.jpg)
AI应用特征分析
CPU GPU
Teye工具:从微架构层次分析AI应用与框架特征,实现性能优化
MXNet
TensorFlow
Caffe
![Page 10: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/10.jpg)
CV应用特征分析案例
0
20
401
12
12
41
36
14
81
60
17
21
84
19
61
10
81
12
01
13
21
14
41
15
61
16
81
CP
U使
用率
(%)
时间轴s
典型AI模型CPU使用率
cpu_user(caffe-ssd)
cpu_user(tf-gcnet)
cpu_user(tf-googlenet)
cpu_user(tf-res)
cpu_user(tf-vgg)
cpu_user(caffe-googlenet)
cpu_user(caffe-res)
cpu_user(caffe-vgg)
cpu_user(yolo)cpu_user(mxnet-ssd)
cpu_user(caffe-rfcn)
0
20
40
60
80
100
120
1
71
14
1
21
1
28
1
35
1
42
1
49
1
56
1
63
1
70
1
77
1
84
1
91
1
98
1
10
51
11
21
11
91
12
61
13
31
14
01
14
71
15
41
16
11
16
81
17
51
GP
U核心利用率
时间轴s
典型AI模型GPU利用率
GPU0_Rate(yolo-p100) GPU1_Rate(caffe-res50)
GPU1_Rate(caffe-res152)
0
20000
40000
1
13
0
25
9
38
8
51
7
64
6
77
5
90
4
10
33
11
62
12
91
14
20
15
49
16
78
内存
占用
MB
时间轴s
典型AI模型内存使用情况
mem_used(caffe-ssd)
mem_used(tf-gcnet)
mem_used(tf-googlenet)
mem_used(tf-res)
mem_used(tf-vgg)
mem_used(caffe-googlenet)
mem_used(caffe-res)
mem_used(caffe-vgg)
mem_used(yolo)
mem_used(mxnet-ssd)
mem_used(caffe-rfcn)
0
5000
10000
15000
20000
1
68
13
5
20
2
26
9
33
6
40
3
47
0
53
7
60
4
67
1
73
8
80
5
87
2
93
9
10
06
10
73
11
40
12
07
12
74
13
41
14
08
14
75
15
42
16
09
16
76
17
43
典型AI模型GPU内存使用情况
GPU0_MemUsed(caffe-ssd-1080Ti) GPU0_MemUsed(tf-gcnet-1080Ti)
GPU0_Used_Mem(yolo-p100) GPU0_MemUsed(tf-googlenet-p100)
GPU0_MemUsed(tf-res-p100) GPU0_MemUsed(tf-vgg-p100)
GPU0_MemUsed(caffe-googlenet-p100) GPU0_MemUsed(caffe-res-p100)
GPU0_MemUsed(caffe-vgg-p100)
CPU利用率:5%-25%
CPU内存:20GB以下
GPU利用率:80%-100%
GPU内存:15GB左右
![Page 11: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/11.jpg)
GPU平台优化
• 计算优化
– 训练:单机8-16 V100 GPU并行
– 推理:单机8-16 T4 GPU并行
• 网络优化
– 训练:单机4-8个 IB卡(100GB/s-200GB/s)实现1000卡以上并行
– 推理:单机万兆网络
• 通信优化
– 训练:NVSwitch+RDMA
– 推理:PCIE
• 存储优化:高性能并行存储+SSD/NVMe两级存储
547.23 889.64 456.811076.55
1761.27907.39
2065.9
3399.9
1805.03
4124.37
6813.02
3581.96
8195.83
13473.3
6976.06
0
5000
10000
15000
resnet101 resnet50 vgg16
V100-SMX3 32GB bs=256(Images/s)
(Inspur AGX-5)
1GPU 2GPUs 4GPUs 8GPUs 16GPUs
61340
77903
102741
0
20000
40000
60000
80000
100000
120000
A厂商 8*PCIe GPU
Server
B厂商 8*NVLink GPU
Server
Inspur 5488M5
NLP Transformer Benchmark
(每秒钟训练单词数)
![Page 12: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/12.jpg)
GPU系统管理优化
数量:120GPU分配:共享用途:训练用户:ALLSSD缓存
HA
P100_share
数量:96GPU分配:独享用途:训练用户:行为分析SSD缓存
P100_exclusive
数量:64GPU分配:共享用途:训练用户:ALLSSD缓存
V100_share
数量:120GPU分配:独享用途:训练用户:图像识别SSD缓存
V100_exclusive
用户数据: 代码,模型
云存储
数量:32GPU分配:共享用途:开发调试,镜像定制用户:ALLSSD缓存
P40 _debug
• 利用AIStation实现统一资源管理和调度
– 大规模AI生产平台:800+GPU卡
– GPU利用率40%提升到80%
– 作业吞吐提升3倍训练数据下载
![Page 13: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/13.jpg)
AI计算框架GPU优化
并行机制:数据并
行/模型并行/数据+
模型并行/Pipline并
行
GPU计算充分发挥:
FP16与FP32混合
精度计算,保持训
练稳定下的大
batchsize训练
计算 梯度同步通信机制:
异步或半异步,
ring-allreduce,
2D-Torus all-
reduce
通信优化:合并小
数据,提升通信效
率;计算与通信异
步,实现隐藏
通信
并行IO,采用多线
程的数据读取机制
数据预取、数据IO
与计算异步并行
IO
![Page 14: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/14.jpg)
AI计算框架GPU优化案例
开源地址:https://github.com/Caffe-MPI/Caffe-MPI.github.io
No. of GPUs
ima
ge
s/s
No. of GPUs
Inspur Caffe-MPI Inspur TensorFlow-Opt
实现512块GPU 24分钟完成imagenet数据集训练
• 基于HPC架构,实现数据并行,并行IO读取数据
• 基于NCCL,并采用环形通信方式
• 计算与通信异步,实现计算与通信的异步隐藏
• 实现主从模式到对等模式通信
• 合并梯度,提升通信效率
• 采用fp16通信,减少通信量
![Page 15: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/15.jpg)
AI应用面临的挑战分析及优化思路
• 数据跟不上计算,GPU利用率低
• 模型和数据大,GPU显存溢出,如何优化
• 混合精度如何优化, Tensor Core如何高效利用
• 如何快速实现多机多GPU卡并行计算
• Pref/NVProf
• Tensorflow-timeline
• Horovod-timeline
• Teye
• GPU-driver/CUDA/cuDNN/NCCL
• 计算框架版本匹配
• CPU/GPU端、Bios设置
• CPU与GPU、GPU与GPU、节点间通信拓扑
应用瓶颈分析 GPU系统级优化 GPU代码级优化
• 训练的性能
• 训练的扩展效率
• 推理的吞吐量
• 推理的延时
![Page 16: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/16.jpg)
AI训练应用GPU优化方法
数据IO优化数据格式、数据存储、数据
处理、数据流水线
混合精度优化使用CUDA Core & TensorCore
发挥GPU使用效率
GPU并行优化使用ring(tree)-allreduce
高效并行通信方式
![Page 17: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/17.jpg)
数据IO优化
数据并行读取 数据并行批量预处理 数据与计算异步并行
![Page 18: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/18.jpg)
数据IO优化案例1
某图像识别CNN模型(在P100平台训练)
• 实测单卡计算性能只有2.3TFlops,远低于P100的理论单精度浮点性能;
• 分析GPU的利用率,发现GPU只有60%左右的时间在参与计算,剩余40%的时间处于空闲状态;
• 在毫秒尺度观察GPU的使用情况,发现有周期性的0.06s左右的GPU空闲时间
![Page 19: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/19.jpg)
数据IO优化案例1效果
通过优化图片预处理方式,可以有效的提高GPU资源的利用率,优化后GPU的使用率提升到90%左右。
![Page 20: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/20.jpg)
数据IO优化案例2
• 应用:基于双向LSTM模型在V100训练文本分类模型
• 问题分析
– GPU核心使用率低,10%~40%
– 高维嵌入embedding_looup显存溢出
• 优化方法
– 数据IO优化:数据修改为TFRECORD,构建基于TFDATA的数据读入模式,C++多进程处理及读入数据
– 显存优化:将预加载的词典从GPU显存加载到CPU内存,在内存中进行embedding
25%
70%
0%
10%
20%
30%
40%
50%
60%
70%
80%
优化前 优化后
GPU使用率对比
![Page 21: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/21.jpg)
混合精度优化
30036
17442
11000
0
5000
10000
15000
20000
25000
30000
35000
fp32 AMP mixfp16 AMP addtips
GP
U m
em
ory
(MB
)
某CNN网络
66
80
125
0
20
40
60
80
100
120
140
fp32 AMP mixfp16 AMP addtips
imag
es/
s
某CNN网络
• 混合精度优化
– 张量维度与TesorCore维度的适配,矩阵通道为8的倍数
– 矩阵计算的OP融合
– 增加矩阵乘加计算的比例
GPU Memory(MB) images/s
![Page 22: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/22.jpg)
混合精度优化案例:影评分类
• 应用:影评分类
• 问题分析
– Attention模块采用两次循环生成单样本的attention向量
– 循环一次产生众多中间量及分散的OP处理
• 优化方法
– Attention模块采用两次矩阵点乘生成attention向量
– 矩阵乘采用cublas或其它矩阵库,操作高度融合,中间变量少
中文文本分词 文本嵌入CNN-ATTENTION
模型 文本分类 影评分类
327
1023
0
200
400
600
800
1000
1200
优化前 优化后
训练速度(samples/s)
![Page 23: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/23.jpg)
GPU并行优化
75.0%
80.0%
85.0%
90.0%
95.0%
inception3 resnet101 resnet50 vgg16
GPU direct对horovod的线性比影响
开启GDR 关闭GDR
70%75%80%85%90%95%
100%
4种模型在NF5288M5和NF5468M5的线性比
1*GPU 2*GPU 4*GPU 8*GPU 16*GPU
• 数据并行
– PS/Ring-allreduce/Tree-allreduce
– MPI/Horovod(Tensorfusion/AutoTuning/GDR Support)
– NCCL/Blink( “Blink:Fast and Generic Collectives for Distributed ML” )
• 模型并行/数据+模型并行(Mesh-Tensorflow)
• PipLine并行(Gpip@NIPS2019)
![Page 24: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/24.jpg)
基于Horovod的CNN训练实现流程✓分布式GPU环境初始化✓将GPU0的全局变量broadcast到所有GPU✓进行GPU分布式训练
Data_load
Env_intial¶ broadcast
Hvd_init
LFW
data
sets
验证,模型达到可用精度,结束
Model_init
Train_define
Triplet_select
优化策略添加hvd分布式
训练步骤循环
(hvd—dist)
Logits-embedding
Triplet_loss+regularization_loss
Triplet-loss computing
优化策略重算权重
三元组队列填充
GPU并行优化案例1:大规模图像识别训练
• 应用:大规模图像识别
• 问题分析
– 单GPU卡训练,40万图像需训练10h
– 未来训练数据将达到10亿级,存在巨大的计算挑战
• 优化方法:调整学习率以适应大规模训练的梯度调整 lr ℎ𝑣𝑑. 𝑠𝑖𝑧𝑒()
– 使用Horovod的TF并行模式实现
– 调整学习率以适应大规模训练的梯度调整 lr ℎ𝑣𝑑. 𝑠𝑖𝑧𝑒()
– 梯度融合通信
– 混合精度训练
![Page 25: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/25.jpg)
✓ 4卡扩展效率近线性,16卡扩展效率近14倍
471040
354459.352
123873.75
0
100000
200000
300000
400000
500000
1 2 4
Train
ing
Tim
e (
s)
Total Training Time
9856
6393
2669
1315 832
0
2000
4000
6000
8000
10000
12000
1GPU 2GPU 4GPU 8GPU 16GPU
Training Time/Epoch
大规模图像识别训练GPU并行优化效果
![Page 26: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/26.jpg)
GPU并行优化案例2:Bert预训练
• 应用:Bert预训练
• 问题分析
– 参数众多,收敛难度大,需要巨大的数据量
– 单个V100-GPU在核心及带宽利用率都接近饱和的前提上述训练时间仍以年计算
• 优化方法:数据并行策略-基于Horovod
– 变量在多进程中广播
– BERT前向传播构建
– 选择优化器,并将优化器定义为horovod并行模式
– 启动多进程训练
BERT-base:L=12, H=768, A=12,
Total Parameters=110M
BERT-large:L=24, H=1024, A=16,
Total Parameters=340M
![Page 27: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/27.jpg)
Bert预训练GPU并行优化效果
140
296
525
1024
0
200
400
600
800
1000
1200
1 2 4 8
#GPUs
Bert-base预训练性能
57.4
115
230
544
0
100
200
300
400
500
600
1 2 4 8
#GPUs
Bert-large预训性能Samples/s Samples/s
![Page 28: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/28.jpg)
GPU应用推理优化方法
• 单模型单数据优化
– 算法级:模型裁剪、量化、压缩、蒸馏
– 工具级:推理引擎(算子融合、访存优化、量化))
• 单模型多数据并行
– batch批量处理
• 多模型多数据并行
– NVIDIA MPS,CUDA Streams
Ref:“Dynamic Space-Time Scheduling for GPU Inference”
![Page 29: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/29.jpg)
算法级优化:模型裁剪与压缩
0.68890.7276
0.575
0.8898 0.9101
0.803
0.68570.7465
0.59
0.88870.9248
0.804
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
GoogLeNet ResNet50 SqueezeNet
推理
精度
CNN模型
模型压缩对模型精度的影响
Top1 Top5 Top1(Compressed) Top5 (Compressed)
0.7277 0.7289 0.7183
0.9109 0.9118 0.9079
0
0.2
0.4
0.6
0.8
1
Pruned 0% Pruned50% Pruned60%
推理
精度
模型裁剪率
模型裁剪对模型精度的影响
Top1 Top5
•网络模型从32位浮点数到4位整数,压缩为1/8 •模型数据计算量减少1/2,不改变计算结构
![Page 30: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/30.jpg)
工具级优化:推理引擎
TensorRT TVM
![Page 31: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/31.jpg)
AI计算的发展趋势及其挑战
基于GPU的AI计算优化方法:从训练到推理
提纲
Case Study:基于GPU实现AutoML Suite计算优化
![Page 32: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/32.jpg)
AutoML技术
原始数据
数据处理
• 数据清洗• 数据增强• 文本编码• 数据分割
特征工程
• 特征选择• 特征迁移• 序列嵌入• 图像嵌入
模型设计
• SVM• MLP• CNN• RNN
模型验证
• 混淆矩阵• P/R测试
• 人工AI建模过程
• AutoML技术:是采用自动化地方式和程式化的手段,根据开发任务自主地实现模型构建、筛选的一种技术
视觉图片数据 高效模型搜索模型部署
AutoML
![Page 33: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/33.jpg)
浪潮AutoML Suite• 企业级一站式模型自动构建系统部署,一站可视化处理
– 本地化On-Premise部署,一站可视化处理
– 自动搜索图像分类、目标检测模型
– 多机多GPU卡高效并行模型搜索
– 按部署端所需的计算量、内存输出模型
图像分类
目标检测
数据准备
…c0 c1 cm
s0 s1 s2 sn
…
模型搜索训练
12
模型部署
SDKAPI
onnx
转换工具
Caffe TF PyTorch
![Page 34: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/34.jpg)
AutoML应用案例
模型 平均 白天 晚上
Base模型(专家) 94.7 95.7 93.7
VCCNet17(AutoML) 94.6 95.99 93.15
不同模型在当前路口测试集分类精度对比
模型 平均 白天 夜晚
Base模型(专家) 84.9 91.3 77.5
VCCNet17(AutoML) 87.8 91.5 83.6
新整理的测试集,测试两个模型的泛化能力
• 智慧城市路口车辆颜色分类应用,一站可视化处理
– 挑战:各个路口特征不一,人工设计的模型相对通用,无法泛化到各个路口,而针对设计,需大量的模型开发工作
– 数据:某路口采集16类车辆颜色数据,共40万张图片,进行AutoML建模与人工建模对比
![Page 35: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/35.jpg)
AutoML实际应用面临的计算性能挑战
数据量 GPU数目 搜索模型数目 搜索耗时(h) 最佳平均模型精度 训练耗时(h) 模型前向耗时(ms/张)
Train:35.7万 1 2000 54 94.6 196 59ms
模型结构
每层内部结构 每个cell内部结构
• 单机单卡运行,搜索训练慢
• 搜索的最佳模型的层数和分支过多,推理慢
cell_0 cell_1
cell_3
cell_2 cell_4
layer_base
calibrate
final_combine
Layer_0
Layer_1
Layer_2
Layer_3
Layer_4
Layer_7
Layer_8
Layer_9
Layer_10
Layer_13
Layer_14
Layer_15
Layer_16
Layer_5
Layer_11
Layer_12
Layer_6
![Page 36: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/36.jpg)
AutoML Suite:模型搜索并行
RR R R R R
CPU
MG
更新MG参数 𝜃𝑐
MG MG
UM 0 UM 1 UM m… UM 0 UM 1 UM m… UM 0 UM 1 UM m…
…… ……
slaver1 slaver2 slaver3
master
Loss Loss Loss Loss Loss Loss Loss Loss Loss
R R R
Reward buffer
Train_batch Train_batch Train_batch
Supernet …… ……masterSupernet Supernet
UM 0 UM 1 UM m… UM 0 UM 1 UM m… UM 0 UM 1 UM m…
slaver1 slaver2 slaver3
Val_batch
MG MG MG
Acc Acc AccAcc Acc Acc Acc Acc Acc
Val_batch Val_batch
多个模型并行训练
更新超网络参数
多个模型并行搜索
并行获取验证集精度
初始化模型生成器
更新
![Page 37: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/37.jpg)
AutoML Suite:模型训练并行
horovod初始化
进程分配
训练参数配置
模型参数广播
分布式Optimizer
模型保存
数据库
Model Gradients Averaged
Gradients
GPU0:Searching/Training Process
Model Gradients Averaged
Gradients
Model Gradients Averaged
Gradients 1. 读取数据
2. 计算模型梯度 3. 平均梯度 4. 更新模型
GPU1:Searching/Training Process
GPU N:Searching/Training Process
![Page 38: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/38.jpg)
模型搜索和训练并行效果
• 基于cifar10的AutoML在搜索和训练中平均每个epoch耗时
247
73
45
192
57
35
0
50
100
150
200
250
300
1GPU 4GPU 8GPU
Tim
e o
f ep
och
GPU-nums
并行效率
搜索 训练
![Page 39: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/39.jpg)
模型推理优化
模型类型 精度
/100%
FLOPs
/G
参数量
/M
前向耗时
/ms
Base
(专家) 94.7 1.54 5.18 --
Automl
(15层,5分支) 94.6 1.81 5.26 50.67
Automl
(12层,3分支) 94.23 1.04 3.58 30.05
• 分支裁剪,由5个分支减少到3个
• 层数减少,由15层减少到12层
![Page 40: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/40.jpg)
总结
• AI应用算法的效果仍需要大量的计算支撑,而且未来推理计算需求将超过训练
• AI计算面临巨大的挑战,特别是针对单一模型的千级GPU卡并行训练及生产系统千级模型场景的并发使用,其面临异构计算架构的效率、计算规模扩展、复杂计算环境的管理与优化的挑战
• 基于GPU的AI计算优化,需从系统的角度考虑,从应用的特征出发,设计合理的GPU平台、优化GPU资源、AI框架工具、并从训练与推理应用的程序级实现更细粒度的优化,才能取得更好的性能、扩展性、吞吐与延时
![Page 41: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/41.jpg)
![Page 42: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/42.jpg)
![Page 43: GPU的AI计算优化方法与案例:从训练到推理 · • 优化方法 – 数据IO优化:数据修改为TFRECORD,构建基于TFDATA 的数据读入模式,C++多进程处理及读入数据](https://reader033.vdocuments.mx/reader033/viewer/2022051011/601748ab4ffd7116b752c816/html5/thumbnails/43.jpg)