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 操作完成。
相关推荐
mit6.8241 小时前
[Agent可视化] 配置系统 | 实现AI模型切换 | 热重载机制 | fsnotify库(go)
开发语言·人工智能·golang
Percent_bigdata2 小时前
百分点科技发布中国首个AI原生GEO产品Generforce,助力品牌决胜AI搜索新时代
人工智能·科技·ai-native
Gloria_niki2 小时前
YOLOv4 学习总结
人工智能·计算机视觉·目标跟踪
FriendshipT2 小时前
目标检测:使用自己的数据集微调DEIMv2进行物体检测
人工智能·pytorch·python·目标检测·计算机视觉
海森大数据2 小时前
三步破局:一致性轨迹强化学习开启扩散语言模型“又快又好”推理新时代
人工智能·语言模型·自然语言处理
Tencent_TCB2 小时前
云开发CloudBase AI+实战:快速搭建AI小程序全流程指南
人工智能·ai·小程序·ai编程·云开发
Sunhen_Qiletian2 小时前
基于OpenCV与Python的身份证号码识别案例详解
人工智能·opencv·计算机视觉
AustinCyy2 小时前
【论文笔记】Introduction to Explainable AI
论文阅读·人工智能
岁月宁静2 小时前
在富文本编辑器中封装实用的 AI 写作助手功能
前端·vue.js·人工智能
末世灯光2 小时前
时间序列入门第一问:它和普通数据有什么不一样?(附 3 类典型案例)
人工智能·python·机器学习·时序数据