前沿计组知识入门(五)

深度学习硬件加速

深度学习硬件系统

  • 硬件类型
    • 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. 参考文献

  • 文件中引用了多个研究和系统,如PolluxAlpa等,展示了当前在并行和分布式ML系统领域的最新进展。

这份教程提供了对大规模模型和联邦学习中ML系统设计的深入分析,强调了并行化策略的重要性和自动化工具的潜力。

资源下载链接为: https://pan.quark.cn/s/9648a1f24758 Java JDK(Java Development Kit)是Java编程语言的核心件,为开发和运行Java程序提供了必要的工具和环境。JDK 8是Oracle公司推出的一个重要版本,它引入了许多新特性和改进,极大地提升了开发效率和代码质量,对开发者来说具有极高的实用价值。 本次提供的“jdk-8u251-macosx-x64.dmg”安装包是专为Mac OS X系统设的64位版本,其中不仅包含了Java运行环境(JRE),还涵盖了丰富的开发工具,方便用户在Mac平台上进行Java程序的开发与运行。 JDK 8的关键更新和特性如下: Lambda表达式:这是JDK 8的一项重大语法创新,允许开发者使用简洁的匿名函数替代复杂的多行回调代码,从而使代码更加简洁、易读且高效。 方法引用与构造器引用:与Lambda表达式配合使用,可以更直观地引用已有的方法或构造器,进一步减少冗余代码,提升代码的可维护性。 Stream API:这是一个用于处理集合的新API,采用声明式处理方式,使集合操作(如过滤、映射和归约等)更加高效且易于理解。 日期和时间API的改进:JDK 8对日期和时间API进行了重构,引入了java.time包,包含LocalDate、LocalTime和LocalDateTime等类,替代了原有的java.util.Date和java.util.Calendar,使日期和时间的处理更加友好和灵活。 Optional类:为解决null对象导致的空指针异常问题,JDK 8引入了Optional类,它是一个容器对象,可以表示一个值存在或不存在,从而有效避免空指针异常。 接口的默认方法和静态方法:接口现在可以定义默认方法(使用default关键字)和静态方法。默认方法允许在不破坏向后
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值