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 操作完成。
相关推荐
AI_5678几秒前
用Everything+Total Commander管理电脑文件
人工智能·学习
跨境卫士情报站1 分钟前
TikTok跨境电商第二增长曲线:从“跑量”到“跑利润”的精细化运营
大数据·人工智能·产品运营·跨境电商·tiktok·营销策略
自己的九又四分之三站台2 分钟前
9:MemNet记忆层使用,实现大模型对话上下文记忆
人工智能·算法·机器学习
CoderJia程序员甲7 分钟前
GitHub 热榜项目 - 日榜(2026-02-02)
人工智能·ai·大模型·github·ai教程
AndrewHZ7 分钟前
【AI黑话日日新】什么是大模型的test-time scaling?
人工智能·深度学习·大模型·llm·推理加速·测试时缩放
李昊翔的博客20 分钟前
大模型正在反向收割互联网红利
人工智能
学步_技术23 分钟前
多模态学习—Multimodal image synthesis and editing: A survey and taxonomy
人工智能·深度学习·计算机视觉
工程师老罗25 分钟前
Pytorch模型GPU训练
人工智能·pytorch·深度学习
GatiArt雷27 分钟前
基于Torch-Pruning的ResNet模型轻量化剪枝实战——解决边缘设备部署痛点
人工智能·深度学习·计算机视觉