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 操作完成。
相关推荐
回眸&啤酒鸭3 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智3 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
AI的探索之旅3 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein3 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
LaughingZhu3 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
wukangjupingbb3 天前
智能网联汽车安全能力框架
人工智能
龙亘川3 天前
明月照湾区,智启新赛道:从顶流文旅IP盛会看智慧文旅升级路径
人工智能·智慧城市·开源软件·数据可视化
飞猫的边缘AI3 天前
边缘AI应用:家用AI摄像头怎么做数据训练?
人工智能·边缘计算·ai算法·边缘ai