在 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)。
- 在您设置的超参数中:
'output_dir':'/opt/ml/checkpoints'
。
- 您在 Estimator 中定义了一个
checkpoint_s3_uri
(这对于您将要 运行 的一系列工作是独一无二的)。
- 您为 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()
假设我已经在一些训练数据上成功地训练了一个模型 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)。
- 在您设置的超参数中:
'output_dir':'/opt/ml/checkpoints'
。 - 您在 Estimator 中定义了一个
checkpoint_s3_uri
(这对于您将要 运行 的一系列工作是独一无二的)。 - 您为 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()