학습 스크립트

학습 스크립트 (Training scripts)

Transformers는 PyTorch용 다양한 예제 학습 스크립트와 작업을 transformers/examples에 제공합니다. 이 가이드는 예제 요약 학습 스크립트를 실행하는 방법을 보여줍니다.

출처: 문서

본문

Transformers는 PyTorch용 다양한 예제 학습 스크립트와 작업을 transformers/examples에 제공합니다. transformers/research projects와 transformers/legacy에도 추가 스크립트가 있지만, 이들은 적극적으로 유지관리되지 않으며 특정 Transformers 버전이 필요합니다.

예제 스크립트는 단지 예제일 뿐이며 사용 사례에 맞게 스크립트를 조정해야 할 수 있습니다. 이를 돕기 위해 대부분의 스크립트는 데이터 전처리 방식을 매우 투명하게 보여주므로 필요에 따라 편집할 수 있습니다.

예제 스크립트에 구현하고 싶은 기능이 있다면, 풀 리퀘스트를 제출하기 전에 포럼이나 이슈에서 논의하세요. 기여를 환영하지만, 가독성을 희생하면서 기능을 추가하는 풀 리퀘스트는 반영되기 어렵습니다.

이 가이드는 PyTorch에서 예제 요약 학습 스크립트를 실행하는 방법을 보여줍니다.

Setup

예제 스크립트의 최신 버전을 실행하려면 새 가상 환경에 Transformers를 소스에서 설치하세요.

git clone https://github.com/huggingface/transformers
cd transformers
pip install .

특정 또는 이전 버전의 Transformers에서 스크립트를 체크아웃하려면 아래 명령을 실행하세요.

git checkout tags/v3.5.1

올바른 버전을 설정한 후, 원하는 예제 폴더로 이동해 예제별 요구 사항을 설치하세요.

pip install -r requirements.txt

Run a script

max_train_samples, max_eval_samples, max_predict_samples 파라미터를 포함해 데이터셋을 최대 샘플 수로 잘라내어 더 작은 데이터셋으로 시작하세요. 이렇게 하면 완료에 몇 시간이 걸릴 수 있는 전체 데이터셋을 진행하기 전에 학습이 예상대로 작동하는지 확인하는 데 도움이 됩니다.

[!WARNING] 모든 예제 스크립트가 max_predict_samples 파라미터를 지원하는 것은 아닙니다. 아래 명령으로 스크립트가 이를 지원하는지 확인하세요.

python examples/pytorch/summarization/run_summarization.py -h

아래 예시는 CNN/DailyMail 데이터셋에서 T5-small을 미세 조정합니다. T5에는 요약을 지시하기 위한 추가 source_prefix 파라미터가 필요합니다.

예제 스크립트는 데이터셋을 다운로드하고 전처리한 다음 지원되는 모델 아키텍처로 Trainer로 미세 조정합니다.

학습이 중단되면 처음부터 다시 시작할 필요가 없으므로 체크포인트에서 학습을 재개하는 것은 매우 유용합니다.

  • --resume_from_checkpoint path_to_specific_checkpoint는 특정 체크포인트 폴더에서 학습을 재개합니다.

--push_to_hub 파라미터로 모델을 Hub에 공유하세요. 이는 저장소를 만들고 --output_dir에 지정된 폴더 이름으로 모델을 업로드합니다. --push_to_hub_model_id 파라미터로 저장소 이름을 지정할 수도 있습니다.

모든 것이 작동하면 max_train_samples, max_eval_samples, max_predict_samples 파라미터를 제거하고 체크포인트에서 재개하도록 --resume_from_checkpoint path_to_specific_checkpoint를 추가하세요.

python examples/pytorch/summarization/run_summarization.py \
    --model_name_or_path google-t5/t5-small \
    --max_train_samples 50 \
    --max_eval_samples 50 \
    --max_predict_samples 50 \
    --do_train \
    --do_eval \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --output_dir /tmp/tst-summarization \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --push_to_hub \
    --push_to_hub_model_id finetuned-t5-cnn_dailymail \
    --predict_with_generate

혼합 정밀도와 분산 학습을 위해서는 다음 파라미터를 포함하고 torchrun으로 학습을 시작하세요.

  • 혼합 정밀도 학습을 활성화하려면 fp16 또는 bf16 파라미터를 추가하세요. XPU 기기는 bf16만 지원합니다.
  • 학습에 사용할 GPU 수를 설정하려면 nproc_per_node 파라미터를 추가하세요.
torchrun \
    --nproc_per_node 8 pytorch/summarization/run_summarization.py \
    --fp16 \
    ...
    ...

PyTorch는 성능 가속을 위해 설계된 하드웨어인 TPU를 PyTorch/XLA 패키지를 통해 지원합니다. xla_spawn.py 스크립트를 시작하고 num_cores로 학습에 사용할 TPU 코어 수를 설정하세요.

python xla_spawn.py --num_cores 8 pytorch/summarization/run_summarization.py \
    --model_name_or_path google-t5/t5-small \
    ...
    ...

Accelerate

Accelerate는 PyTorch 학습 루프에 대한 완전한 가시성을 제공하면서 분산 학습을 단순화하도록 설계되었습니다. Accelerate로 스크립트를 학습할 계획이라면 스크립트의 _no_trainer.py 버전을 사용하세요.

최신 버전을 보장하려면 Accelerate를 소스에서 설치하세요.

pip install git+https://github.com/huggingface/accelerate

학습 설정에 대한 몇 가지 질문에 답하려면 accelerate config 명령을 실행하세요. 이는 시스템에 대한 설정 파일을 만들고 저장합니다.

accelerate config

accelerate test로 시스템이 올바르게 구성되었는지 확인할 수 있습니다.

accelerate test

학습을 시작하려면 accelerate launch를 실행하세요.

accelerate launch run_summarization_no_trainer.py \
    --model_name_or_path google-t5/t5-small \
    --dataset_name cnn_dailymail \
    --dataset_config "3.0.0" \
    --source_prefix "summarize: " \
    --output_dir ~/tmp/tst-summarization \

Custom dataset

요약 스크립트는 CSV 또는 JSONL 파일이라면 커스텀 데이터셋을 지원합니다. 자신의 데이터셋을 사용할 때는 다음 추가 파라미터를 지정해야 합니다.

  • train_file 및 validation_file은 학습 및 검증 파일의 경로를 지정합니다.
  • text_column은 요약할 입력 텍스트입니다.
  • summary_column은 출력할 대상 텍스트입니다.

커스텀 데이터셋을 요약하는 예제 명령은 다음과 같습니다.

python examples/pytorch/summarization/run_summarization.py \
    --model_name_or_path google-t5/t5-small \
    --do_train \
    --do_eval \
    --train_file path_to_csv_or_jsonlines_file \
    --validation_file path_to_csv_or_jsonlines_file \
    --text_column text_column_name \
    --summary_column summary_column_name \
    --source_prefix "summarize: " \
    --output_dir /tmp/tst-summarization \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --predict_with_generate \

더 알아보기 (Learn more)