You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于PyTorch-Lightning的LayoutLMv3训练:同步Checkpoint到HF及配置

LayoutLMv3文档分类训练:云端备份、模型加载与TensorBoard配置

1. 每个Epoch结束自动上传Checkpoint到Hugging Face

自定义PyTorch-Lightning回调,监听验证阶段结束事件,自动将最新保存的Checkpoint上传至Hugging Face仓库。

步骤1:实现上传回调

from pytorch_lightning.callbacks import Callback
from huggingface_hub import upload_file, login

# 执行一次登录Hugging Face(后续无需重复执行)
login()

class HFCheckpointUploader(Callback):
    def __init__(self, repo_name):
        self.repo_name = repo_name

    def on_validation_end(self, trainer, pl_module):
        # 获取最新生成的Checkpoint路径
        latest_ckpt = trainer.checkpoint_callback.last_model_path
        if latest_ckpt:
            # 上传至仓库的checkpoints目录下,保留原文件名
            upload_file(
                path_or_fileobj=latest_ckpt,
                path_in_repo=f"checkpoints/{latest_ckpt.split('/')[-1]}",
                repo_id=self.repo_name
            )
            print(f"Checkpoint已上传至: {self.repo_name}/checkpoints/")

步骤2:添加到训练回调列表

# 初始化上传回调,替换为你的Hugging Face仓库名
hf_uploader = HFCheckpointUploader(repo_name="your-repo-name")

# 更新Trainer配置,加入上传回调
trainer = pl.Trainer(
    accelerator="gpu",
    precision=16,
    max_epochs=50,
    callbacks=[
        model_checkpoint,
        early_stopping,
        hf_uploader  # 新增上传回调
    ],
)

2. 从Hugging Face加载最佳模型

提供两种加载方式,适配不同使用场景:

方式一:加载完整Lightning Module Checkpoint

先从Hub下载目标Checkpoint文件,再用原有逻辑加载为ModelModule:

from huggingface_hub import hf_hub_download

# 替换为你仓库中最佳Checkpoint的文件名
target_ckpt = "checkpoints/epoch-5-step-1234-val_loss-0.1234.ckpt"
checkpoint_path = hf_hub_download(
    repo_id="your-repo-name",
    filename=target_ckpt
)

# 加载为ModelModule
trained_model = ModelModule.load_from_checkpoint(
    checkpoint_path,
    n_classes=len(DOCUMENT_CLASSES)
)

方式二:直接加载预训练模型权重

如果之前已将trained_model.model推送到Hub,可直接加载核心模型组件:

from transformers import LayoutLMv3ForSequenceClassification, LayoutLMv3Processor

# 加载模型和处理器
model = LayoutLMv3ForSequenceClassification.from_pretrained("your-repo-name")
processor = LayoutLMv3Processor.from_pretrained("your-repo-name")

# 可选:包装为Lightning Module
trained_model = ModelModule(len(DOCUMENT_CLASSES))
trained_model.model = model

3. 在Hugging Face配置TensorBoard查看指标

方法一:训练时自动同步日志

使用HuggingFaceLogger,训练过程中自动上传TensorBoard日志到Hub:

from pytorch_lightning.loggers import HuggingFaceLogger

hf_logger = HuggingFaceLogger(
    repo_name="your-repo-name",
    log_model="all"  # 可选:自动记录模型版本
)

# 更新Trainer配置,加入日志器
trainer = pl.Trainer(
    accelerator="gpu",
    precision=16,
    max_epochs=50,
    callbacks=[model_checkpoint, early_stopping, hf_uploader],
    logger=hf_logger
)

训练完成后,直接在Hugging Face仓库页面的「TensorBoard」标签页查看指标图表。

方法二:手动上传本地日志

若已有本地lightning_logs/日志目录,手动上传至Hub:

from huggingface_hub import upload_folder

upload_folder(
    folder_path="lightning_logs/",
    path_in_repo="tensorboard_logs/",
    repo_id="your-repo-name"
)

在仓库页面点击「Add file」下拉菜单,选择「View TensorBoard」,指定tensorboard_logs/作为日志目录即可查看。


内容的提问来源于stack exchange,提问作者im_s_kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 14:42:06