在 Sagemaker 和 Hugging Face 中训练一个已经训练好的模型而无需重新初始化

Train an already trained model in Sagemaker and Huggingface without re-initialising

假设我已经在一些训练数据上成功地训练了一个模型 10 个时期。我怎样才能访问完全相同的模型并再训练 10 个时期?

In the docs 提示“你需要通过超参数指定检查点输出路径” --> 怎么做?

# define my estimator the standard way
huggingface_estimator = HuggingFace(
    entry_point='train.py',
    source_dir='./scripts',
    instance_type='ml.p3.2xlarge',
    instance_count=1,
    role=role,
    transformers_version='4.10',
    pytorch_version='1.9',
    py_version='py38',
    hyperparameters = hyperparameters,
    metric_definitions=metric_definitions
)

# train the model
huggingface_estimator.fit(
    {'train': training_input_path, 'test': test_input_path}
)

如果我再次 运行 huggingface_estimator.fit 它将重新开始整个过程​​并覆盖我之前的训练。

您可以在Spot Instances - Amazon SageMaker x Hugging Face Transformers.
中找到相关检查点save/load代码 (该示例启用 Spot 实例,但您可以使用 on-demand)。

  1. 在您设置的超参数中:'output_dir':'/opt/ml/checkpoints'
  2. 您在 Estimator 中定义了一个 checkpoint_s3_uri(这对于您将要 运行 的一系列工作是独一无二的)。
  3. 您为 train.py 添加代码以支持检查点:
from transformers.trainer_utils import get_last_checkpoint

# check if checkpoint existing if so continue training
if get_last_checkpoint(args.output_dir) is not None:
    logger.info("***** continue training *****")
    last_checkpoint = get_last_checkpoint(args.output_dir)
    trainer.train(resume_from_checkpoint=last_checkpoint)
else:
    trainer.train()