NanoGPT的BenchMarking.py

1.Benchmarking是一种评估和比较性能的过程。在深度学习领域,它通常涉及对模型的训练速度、推理速度、内存占用等指标进行测量,以便评估不同模型、不同硬件配置或者不同软件版本之间的性能差异。

  • 例如,当你尝试比较两个不同架构的模型(如 ResNet 和 EfficientNet)在相同数据集和硬件条件下的训练效率时,就可以进行 benchmarking。通过记录每个模型的训练时间、每个 epoch 的处理时间、每秒处理的样本数等指标,来判断哪个模型在这种特定场景下更高效。也可以用于比较同一模型在不同硬件(如 CPU 和 GPU)上的性能表现,从而为选择合适的硬件部署模型提供依据。
  1. Pytorch2.0编译
复制代码
compile = True # use PyTorch 2.0 to compile the model to be faster(Torch.compile())

Pytorch 2.0 使用了JIT编译思想。

在传统的解释执行中,代码被 逐行被解释器执行,每次执行都要进行语法分析、字节码转换等操作,带来性能开销。在传统的编译执行 中,代码在运行 前会被完全编译成机器码,虽然执行效率高,但是编译过程耗时且缺乏灵活性。

JIT结合了两者的优点,它先将源代码编译成一种中间表示(Intermediate Representation, IR),然后在程序运行时根据需要将部分IR编译成机器码并缓存起来。后续再次 执行相同代码时,可以直接使用缓存的机器码,从而提高执行效率。

3.关于随机数种子

torch.manual_seed(seed)是设置Pytorch在CPU上的随机数 种子,而torch.cuda.manual_seed(seed)是设置在GPU(这里是cuda)上的随机数种子。

4.关于TF32

TensorFloat-32(TF32)是一种混合精度浮点格式,旨在在 NVIDIA 的 Ampere 架构 GPU 上加速矩阵乘法和深度神经网络操作,同时保持与 FP32(单精度浮点数)相当的数值精度。

复制代码
torch.backends.cuda.matmul.allow_tf32 = True # allow tf32 on matmul
torch.backends.cudnn.allow_tf32 = True # allow tf32 on cudnn

第一行代码允许在矩阵乘法上使用TF32精度,第二行允许在cuDNN(NVIDIA 的深度神经网络库)上使用TF32精度。

5.上下文处理器(context managger)

  • nullcontext() 是一个上下文管理器,表示不执行任何操作。当设备类型是 CPU 时,使用 nullcontext(),即不启用 AMP。

  • torch.amp.autocast(device_type=device_type, dtype=ptdtype) 是一个上下文管理器,用于在支持的设备(如 GPU)上启用自动混合精度。它会自动将操作转换为指定的精度(ptdtype),以加速计算并减少内存占用。

自动混合精度(AMP)的工作原理:

  • AMP 是一种技术,它允许在训练深度学习模型时自动混合使用不同的精度(如 FP32 和 FP16 或 BF16(Brain Floating)),以提高计算效率并减少内存占用。

  • 在 GPU 上,特别是支持 Tensor Core 的 NVIDIA GPU,使用 FP16 或 BF16 可以显著加速矩阵乘法和卷积等操作,同时保持模型的数值稳定性。

  1. torch.cuda.synchronize() 是 PyTorch 中用于 CUDA 操作同步的函数。它主要用于确保所有在 GPU 上启动的异步操作在继续执行后续代码之前已完成。简而言之,它会阻塞 CPU 线程,直到所有已发出的 GPU 操作完成。
相关推荐
HeartException26 分钟前
量子计算+AI芯片:光子计算如何重构神经网络硬件生态
人工智能
摸鱼仙人~29 分钟前
Minstrel:多智能体协作生成结构化 LangGPT 提示词
人工智能·提示词
AI街潜水的八角1 小时前
深度学习图像分类数据集—濒危动物识别分类
人工智能·深度学习
程序员陆通2 小时前
独立开发A/B测试实用教程
人工智能·ai编程
knowfoot2 小时前
硬核拆解!跟着公式“走”一遍,你也能彻底看懂神经网络
人工智能·神经网络
FF-Studio2 小时前
大语言模型(LLM)课程学习(Curriculum Learning)、数据课程(data curriculum)指南:从原理到实践
人工智能·python·深度学习·神经网络·机器学习·语言模型·自然语言处理
DDDDDouble2 小时前
<二>Sping-AI alibaba 入门-记忆聊天及持久化
java·人工智能
PyAIExplorer2 小时前
图像处理中的插值方法:原理与实践
图像处理·人工智能
狗头大军之江苏分军2 小时前
疑似华为盘古AI大模型翻车造假风波【实时记录篇】
人工智能·机器学习·程序员
Mr.Winter`2 小时前
轨迹优化 | 基于激光雷达的欧氏距离场ESDF地图构建(附ROS C++仿真)
c++·人工智能·机器人·自动驾驶·ros·ros2·具身智能