ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何清理 timm 训练检查点:去掉优化器状态、使用 EMA 权重并计算 SHA256 用于发布?

如何清理 timm 训练检查点:去掉优化器状态、使用 EMA 权重并计算 SHA256 用于发布? 如何清理 timm 训练检查点去掉优化器状态、使用 EMA 权重并计算 SHA256 用于发布【免费下载链接】pytorch-image-modelsThe largest collection of PyTorch image encoders / backbones. Including train, eval, inference, export scripts, and pretrained weights -- ResNet, ResNeXT, EfficientNet, NFNet, Vision Transformer (ViT), MobileNetV4, MobileNet-V3 V2, RegNet, DPN, CSPNet, Swin Transformer, MaxViT, CoAtNet, ConvNeXt, and more项目地址: https://gitcode.com/GitHub_Trending/py/pytorch-image-models用 pytorch-image-modelstimm的训练脚本train.py/distributed_train.sh训练结束后得到的 checkpoint 文件里混着 GPU 张量、优化器状态、学习率调度器以及若干额外键值体积大且不适合直接分发。仓库根目录提供了 clean_checkpoint.py它的作用是把这类训练检查点清理为「只含 CPU 张量state_dict的文件」并计算 SHA256 用于 model zoo 兼容性。本文按这个脚本的实际行为给出从训练检查点到可发布权重的完整操作路径。前提条件有 pytorch-image-models 的源码目录本脚本位于 git 仓库根目录训练脚本文档说明 train、validation、inference 与 checkpoint cleaning 脚本均不包含在 pip 发行包中需从源码目录运行Python 环境已安装torch脚本通过from timm.models import load_state_dict依赖 timm 包一个待清理的训练检查点文件例如文档训练示例中的./output/train/model_best.pth.tar。运行清理命令最短主路径python clean_checkpoint.py --checkpoint ./output/train/model_best.pth.tar --output ./cleaned/model_best.pth把--checkpoint换成你的训练检查点路径--output指定输出路径含期望的文件名和扩展名。脚本参数均来自 clean_checkpoint.py 中的 argparse 定义参数用途--checkpoint训练检查点路径。缺省为空脚本会报错退出必须提供--output输出路径。扩展名沿用你给出的值不给时按原检查点文件名派生输出到当前目录--no-use-ema不使用 EMA 权重见下节默认行为是使用 EMA--no-hash输出文件名不追加哈希前 8 位--clean-aux-bn移除 SplitBN 训练产生的aux_bn辅助批归一化层--safetensors用 safetensors 格式保存而非默认的 torch pickle 方式注意脚本的两个硬性行为运行前需要知道输出文件已存在时会直接报错退出不会覆盖终端打印Error: Output filename (...) already exists.后以非零码退出。重跑前需要先处理已有输出路径。检查点路径不存在时打印Error: Checkpoint (...) doesnt exist并结束不产生任何输出文件。EMA 权重如何被选中脚本默认use_emaTrue即只要检查点里带 EMA 权重就会优先使用。load_state_dict 实现对 dict 类型检查点的取键顺序是state_dict_emamodel_emastate_dictmodel以上都不存在时把整个文件当作裸 state_dict 直接使用。因此用带--model-ema选项训练的模型训练示例中 EfficientNet、MobileNetV3 等多条配方都带了--model-ema --model-ema-decay 0.9999发布时默认取 EMA 版本无需额外参数确实想发布非 EMA 权重时加--no-use-ema检查点来自 DDP 训练、键带module.前缀时脚本会剥掉该前缀使清理后的键可以加载到未包装的模型上。输出文件名与 SHA256清理后的文件在保存前会先写入临时文件再计算 SHA256 并重命名。命名规则默认原文件名-SHA256前8位.扩展名加--no-hash原文件名.扩展名扩展名--output带了扩展名就沿用否则默认.pth--safetensors时默认.safetensors。执行成功时脚本按固定格式打印以下三行路径与哈希为占位实际值取决于你的文件 Loading checkpoint checkpoint 路径 Loaded state_dict from checkpoint 路径 Saved state_dict to 最终文件名, SHA256: 完整 SHA256 十六进制串完整的 SHA256 只在终端输出文件名里只有前 8 位发布时需要从终端把完整哈希记下。可选分支SplitBN 训练的检查点加--clean-aux-bn去掉键名中含aux_bn的条目。按脚本内注释全部移除后 SplitBN 层会退化为普通 BatchNorm2d可以用未修改的模型结构加载。safetensors 格式发布加--safetensors。该选项要求安装safetensors包未安装时脚本会以 assert 报错并给出提示pip install safetensors to use .safetensors。验证结果与边界判断执行成功看两点终端出现 Saved state_dict to ...一行且包含完整 SHA256输出目录下出现新文件文件名含哈希前 8 位除非用了--no-hash。关于清理后文件的边界脚本文档字符串明确了它的定位输出只含state_dict不再包含优化器状态、调度器等训练信息因此它面向的是加载/发布场景。后续验证可以用仓库文档给出的标准用法例如python validate.py --data-dir /imagenet/validation/ --model 模型名 --pretrained python inference.py --data-dir /imagenet/validation/ --model 模型名 --checkpoint ./cleaned/清理后的文件名其中模型名与清理后的文件名需替换为你实际的模型如文档示例中的seresnext26_32x4d、mobilenetv3_large_100和上一步终端打印出的最终文件名。【免费下载链接】pytorch-image-modelsThe largest collection of PyTorch image encoders / backbones. Including train, eval, inference, export scripts, and pretrained weights -- ResNet, ResNeXT, EfficientNet, NFNet, Vision Transformer (ViT), MobileNetV4, MobileNet-V3 V2, RegNet, DPN, CSPNet, Swin Transformer, MaxViT, CoAtNet, ConvNeXt, and more项目地址: https://gitcode.com/GitHub_Trending/py/pytorch-image-models创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表