Swin 项目介绍
概述
Swin Transformer 是一个强大的视觉模型架构,广泛应用于各种图像分类和检测任务中。本项目介绍如何在 Habana 的 Gaudi 处理器(HPU)上配置和使用 Swin Transformer 以优化模型的加载、训练和推理性能。通过利用 Gaudi 处理器的优势,用户能够更快速高效地完成各类深度学习任务。
Swin Transformer 和 Gaudi 处理器的集成
项目中包含 GaudiConfig
文件,但不含具体的模型权重。GaudiConfig
用于配置 Swin Transformer 在 Gaudi 处理器上的运行。主要配置项包括:
use_fused_adam
: 是否使用 Habana 自定义的 AdamW 优化器实现。use_fused_clip_norm
: 是否使用 Habana 的融合梯度范数裁剪操作。use_torch_autocast
: 是否使用 Torch Autocast 来管理混合精度计算。
这些配置项帮助用户充分利用 Gaudi 处理器的特性,提升模型训练和推理的性能。
使用方法
Swin Transformer 模型的实例化方式与 Transformers 库中的用法一致,区别在于针对 HPU 增加了一些特定的训练参数。为了达到最佳性能和精度,强烈建议采用 bf16 混合精度进行训练。
可以在 Optimum Habana 的 GitHub 页面上找到示例脚本用于图像分类任务。在模型微调时可使用如下命令:
python run_image_classification.py \
--model_name_or_path microsoft/swin-base-patch4-window7-224-in22k \
--dataset_name cifar10 \
--output_dir /tmp/outputs/ \
--remove_unused_columns False \
--do_train \
--do_eval \
--learning_rate 3e-5 \
--num_train_epochs 5 \
--per_device_train_batch_size 64 \
--per_device_eval_batch_size 64 \
--evaluation_strategy epoch \
--save_strategy epoch \
--load_best_model_at_end True \
--save_total_limit 3 \
--seed 1337 \
--use_habana \
--use_lazy_mode \
--gaudi_config_name Habana/swin \
--throughput_warmup_steps 3 \
--ignore_mismatched_sizes \
--bf16
此命令展示了如何利用 Habana 提供的配置进行模型训练和评估。涉及的参数涵盖数据集选择、训练批次大小设置、学习率设置等。
更多信息
若想深入了解 Habana HPU 的更多高级用法及其他示例,建议查阅 Hugging Face 的 Optimum Habana 文档。