在Sagemaker和Huggingface中训练已经训练好的模型,而无需重新初始化



假设我已经成功地在10个时期的一些训练数据上训练了一个模型。然后,我如何才能访问相同的模型并再训练10个时代?

在文献中,它建议";您需要通过超参数"指定检查点输出路径-->怎样

# 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中找到相关的检查点保存/加载代码
(此示例启用Spot实例,但您可以按需使用(。

  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()

最新更新