데이터 분석/머신러닝

Hugging Face 모델 학습 Checkpoint 저장 주기 변경

Family in August 2023. 7. 28. 08:29
반응형

Hugging Face의 Transformers 라이브러리를 사용하여 모델을 학습할 때, 체크포인트(Checkpoint)를 저장하는 주기를 변경하는 방법은 Trainer 클래스의 인자 중 하나인 save_strategy를 조정하는 것입니다. save_strategy를 사용하여 체크포인트 저장 주기를 조정할 수 있습니다.

Trainer 클래스에서 save_strategy 인자를 사용하여 체크포인트 저장 주기를 설정하는 방법은 다음과 같습니다


from transformers import Trainer, TrainingArguments

# Trainer와 TrainingArguments를 설정합니다.
training_args = TrainingArguments(
    output_dir="./results",  # 결과 저장 디렉토리
    save_strategy="epoch",   # 체크포인트 저장 주기 설정 (기본값은 'steps')
    save_total_limit=3,      # 저장되는 총 체크포인트의 개수 (생략 가능)
    num_train_epochs=5,      # 학습할 에폭 수
    per_device_train_batch_size=16,
    logging_dir="./logs",
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    data_collator=data_collator,
    tokenizer=tokenizer,
)

# 모델을 학습합니다.
trainer.train()


위 코드에서 save_strategy 인자를 "epoch"로 설정하면 에폭 단위로 체크포인트를 저장하게 됩니다. 따라서 학습 중간 중간에 체크포인트가 저장되지 않고, 각 에폭이 끝난 후에 저장됩니다.

또한, save_total_limit 인자를 사용하여 저장되는 총 체크포인트의 개수를 제한할 수 있습니다. 이를 사용하여 저장된 체크포인트의 개수를 제어할 수 있습니다. save_total_limit을 설정하지 않으면 모든 체크포인트가 저장됩니다.

save_strategy 인자의 다른 옵션으로는 "steps"가 있습니다. 이 경우에는 학습 단계(step) 단위로 체크포인트가 저장됩니다. save_strategy="steps"를 사용할 때는 save_steps 인자를 함께 사용하여 저장할 학습 단계의 주기를 설정할 수도 있습니다. 예를 들어, save_steps=500으로 설정하면 매 500번의 학습 단계가 끝날 때마다 체크포인트가 저장됩니다.

자세한 설정은 Hugging Face Transformers 라이브러리의 문서를 참고하시면 도움이 됩니다.

반응형