深度学习硬件加速
深度学习硬件系统
- 硬件类型:
- CPU:通用处理器,适合复杂控制流程序,具有较低的核心数和线程数,适合处理需要复杂逻辑和低延迟的任务。
- GPU:高度并行的处理器,专为并行计算设计,支持高带宽内存系统,适用于大规模数据处理和并行任务。
- ASIC(Application-Specific Integrated Circuit):专用集成电路,为特定应用设计,如TPU(Tensor Processing Unit)和Eyeriss,具有高效能但灵活性较低。
- Systolic Array:由ALU或处理单元(PE)组成的阵列,数据在阵列中流动,每个PE计算结果的一部分并传递数据,与主机配对以决定操作。
- NVDLA(NVIDIA Deep Learning Accelerator):为深度学习模型设计的自定义加速器,适用于推理任务,支持特定数据类型(如int8、int16、fp16)。
- SoCs(System on Chips):单个芯片上集成多种计算引擎(CPU、GPU、加速器),共享内存系统,常用于边缘设备。
性能指标
- 延迟(Latency):完成操作所需的时间。
- 吞吐量(Throughput):单位时间内完成的工作量。
- 能效(Energy Per Operation):完成操作所需的平均能量。
- 功率(Power):能量使用速率。
- 每瓦性能(Perf per Watt):每瓦特的性能指标,衡量效率。
- 计算带宽(Compute Bandwidth):单位时间内的操作数。
- 计算带宽利用率(Compute Bandwidth Utilization):达到的峰值计算带宽的分数。
- 内存带宽(Memory Bandwidth):单位时间内的字节数。
- 内存带宽利用率(Memory Bandwidth Utilization):达到的峰值内存带宽的分数。
- 算术强度(Arithmetic Intensity):每获取一个字节所需执行的FLOPs数,与数据重用相关。
性能优化工具和方法
- TensorRT:NVIDIA的工具,用于优化网络,将其转换为int8格式,合并常见操作以避免内核启动开销,探索更高效的层操作方式,释放未使用的内存,并优化RNN的时间步扩展。
- Nsight Systems:提供系统级信息,如定时性能、内存带宽、Tensor核心利用率等。
- Nsight Compute:提供内核级信息,如内核FLOPs、内存使用、SM占用率等。
- NVTX Regions:允许在代码中插入命名区域,Nsight工具可以理解这些区域,帮助定位需要改进的区域。
性能估计和理解
- 性能估计:通过计算FLOPs、内存带宽和计算带宽来估计性能。
- 性能限制:操作可能是内存限制或数学限制,取决于计算单元和内存带宽的利用率。
- 性能优化提示:针对计算带宽限制、内存带宽限制以及两者都受限的情况,提供了优化建议,如改变数值格式、使用结构化稀疏性、使用专用硬件等。
大规模模型和联邦学习的机器学习(ML)系统
1. AI和ML模型规模的增长
- 模型复杂性和数据规模的增长:训练最先进的模型(SOTA)的计算成本每3.4个月翻倍。
- 挑战:
- 需要大量的计算、内存、通信和用户专业知识。
- 训练大型模型(如100B+参数的语言模型)需要数十年的时间和巨大的计算资源。
2. 计算、内存和通信的挑战
- 计算挑战:训练大型模型需要数十年时间,即使是价值20万美元的机器也无法满足需求。
- 内存挑战:大型深度学习模型的中间状态(activations)通常比参数大5倍以上,导致单个GPU内存不足。
- 通信挑战:不同机器之间的网络通信速度相对较慢,尤其是在传输大型Transformer网络的梯度时。
3. 并行和分布式学习的背景
- 迭代收敛(Iterative-Convergent, IC)ML程序:ML程序通常具有迭代收敛的特性,这为并行化提供了机会。
- 并行化的三个维度:
- 数据并行:将数据分割到不同的设备上。
- 模型并行:将模型参数分割到不同的设备上。
- 流水线并行:将模型的不同层分配到不同的设备上。
4. 并行硬件环境
- 多线程:在单个设备(如CPU或GPU)内实现并行。
- 多设备:在同一个机器上的多个GPU之间实现并行。
- 多节点:在多个机器之间通过网络实现并行。
5. 并行ML程序的指标
- 吞吐量(Throughput):每单位时间处理的训练数据量。
- 统计效率(Statistical Efficiency):每单位训练数据的收敛进度。
- Goodput:吞吐量和统计效率的乘积,表示有用的吞吐量。
6. 并行ML策略
- 参数服务器(Parameter Server):一种常见的并行策略,适用于数据并行。
- 环形全归约(Ring All-Reduce):另一种数据并行策略,适用于分布式环境。
- 混合并行策略:结合多种并行策略(如数据并行和模型并行)以克服单一策略的局限性。
7. 自动化混合并行策略
- Alpa系统:一个自动化的系统,通过层次优化来寻找最佳的跨操作符(Inter-op)和内操作符(Intra-op)并行策略。
- 跨操作符并行:将计算图分割并分配到不同的设备上。
- 内操作符并行:在单个操作符(如矩阵乘法)内实现并行。
8. 关键结论
- 并行策略的选择:不同的并行策略适用于不同的场景,需要根据模型结构、硬件环境和通信需求进行选择。
- 自动化的重要性:自动化工具(如Alpa)可以显著简化并行策略的设计和实现,提高系统的Goodput。
9. 参考文献
- 文件中引用了多个研究和系统,如Pollux、Alpa等,展示了当前在并行和分布式ML系统领域的最新进展。
这份教程提供了对大规模模型和联邦学习中ML系统设计的深入分析,强调了并行化策略的重要性和自动化工具的潜力。