Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Path: blob/main/transformers_doc/ko/summarization.ipynb
Views: 2542
요약[[summarization]]
요약은 문서나 기사에서 중요한 정보를 모두 포함하되 짧게 만드는 일입니다. 번역과 마찬가지로, 시퀀스-투-시퀀스 문제로 구성할 수 있는 대표적인 작업 중 하나입니다. 요약에는 아래와 같이 유형이 있습니다:
추출(Extractive) 요약: 문서에서 가장 관련성 높은 정보를 추출합니다.
생성(Abstractive) 요약: 가장 관련성 높은 정보를 포착해내는 새로운 텍스트를 생성합니다.
이 가이드에서 소개할 내용은 아래와 같습니다:
BART, BigBird-Pegasus, Blenderbot, BlenderbotSmall, Encoder decoder, FairSeq Machine-Translation, GPTSAN-japanese, LED, LongT5, M2M100, Marian, mBART, MT5, MVP, NLLB, NLLB-MOE, Pegasus, PEGASUS-X, PLBart, ProphetNet, SwitchTransformers, T5, XLM-ProphetNet
시작하기 전에 필요한 라이브러리가 모두 설치되어 있는지 확인하세요:
Hugging Face 계정에 로그인하면 모델을 업로드하고 커뮤니티에 공유할 수 있습니다. 토큰을 입력하여 로그인하세요.
BillSum 데이터셋 가져오기[[load-billsum-dataset]]
🤗 Datasets 라이브러리에서 BillSum 데이터셋의 작은 버전인 캘리포니아 주 법안 하위 집합을 가져오세요:
train_test_split
메소드로 데이터셋을 학습용와 테스트용으로 나누세요:
그런 다음 예시를 하나 살펴보세요:
여기서 다음 두 개의 필드를 사용하게 됩니다:
text
: 모델의 입력이 될 법안 텍스트입니다.summary
:text
의 간략한 버전으로 모델의 타겟이 됩니다.
전처리[[preprocess]]
다음으로 text
와 summary
를 처리하기 위한 T5 토크나이저를 가져옵니다:
생성하려는 전처리 함수는 아래 조건을 만족해야 합니다:
입력 앞에 프롬프트를 붙여 T5가 요약 작업임을 인식할 수 있도록 합니다. 여러 NLP 작업을 수행할 수 있는 일부 모델은 특정 작업에 대한 프롬프트가 필요합니다.
레이블을 토큰화할 때
text_target
인수를 사용합니다.max_length
매개변수로 설정된 최대 길이를 넘지 않도록 긴 시퀀스를 잘라냅니다.
전체 데이터셋에 전처리 함수를 적용하려면 🤗 Datasets의 map
메소드를 사용하세요. batched=True
로 설정하여 데이터셋의 여러 요소를 한 번에 처리하면 map
함수의 속도를 높일 수 있습니다.
이제 DataCollatorForSeq2Seq
를 사용하여 예제 배치를 만드세요. 전체 데이터셋을 최대 길이로 패딩하는 것보다 배치마다 가장 긴 문장 길이에 맞춰 동적 패딩하는 것이 더 효율적입니다.
평가[[evaluate]]
그런 다음 예측값과 레이블을 compute
에 전달하여 ROUGE 지표를 계산하는 함수를 만듭니다:
이제 compute_metrics
함수를 사용할 준비가 되었으며, 학습을 설정할 때 이 함수로 되돌아올 것입니다.
학습[[train]]
모델을 Trainer
로 파인튜닝 하는 것이 익숙하지 않다면, 여기에서 기본 튜토리얼을 확인해보세요!
이제 모델 학습을 시작할 준비가 되었습니다! AutoModelForSeq2SeqLM
로 T5를 가져오세요:
이제 세 단계만 남았습니다:
Seq2SeqTrainingArguments
에서 학습 하이퍼파라미터를 정의하세요. 유일한 필수 매개변수는 모델을 저장할 위치를 지정하는output_dir
입니다.push_to_hub=True
를 설정하여 이 모델을 Hub에 푸시할 수 있습니다(모델을 업로드하려면 Hugging Face에 로그인해야 합니다.)Trainer
는 각 에폭이 끝날 때마다 ROUGE 지표를 평가하고 학습 체크포인트를 저장합니다.모델, 데이터셋, 토크나이저, 데이터 콜레이터 및
compute_metrics
함수와 함께 학습 인수를Seq2SeqTrainer
에 전달하세요.train()
을 호출하여 모델을 파인튜닝하세요.
학습이 완료되면, 누구나 모델을 사용할 수 있도록 push_to_hub()
메소드로 Hub에 공유합니다:
Keras로 모델 파인튜닝을 하는 것이 익숙하지 않다면, 여기에서 기본적인 튜토리얼을 확인하세요!
그런 다음 TFAutoModelForSeq2SeqLM
을 사용하여 T5를 가져오세요:
prepare_tf_dataset()
을 사용하여 데이터셋을 tf.data.Dataset
형식으로 변환하세요:
compile
을 사용하여 모델을 학습할 수 있도록 구성하세요:
학습을 시작하기 전에 설정해야 할 마지막 두 가지는 예측에서 ROUGE 점수를 계산하고 모델을 Hub에 푸시하는 방법을 제공하는 것입니다. 두 작업 모두 Keras callbacks으로 수행할 수 있습니다.
KerasMetricCallback
에 compute_metrics
함수를 전달하세요:
PushToHubCallback
에서 모델과 토크나이저를 푸시할 위치를 지정하세요:
그런 다음 콜백을 번들로 묶어줍니다:
드디어 모델 학습을 시작할 준비가 되었습니다! 학습 및 검증 데이터셋, 에폭 수 및 콜백과 함께 fit
을 호출하여 모델을 파인튜닝하세요.
학습이 완료되면 모델이 자동으로 Hub에 업로드되어 누구나 사용할 수 있게 됩니다!
요약을 위해 모델을 파인튜닝하는 방법에 대한 더 자세한 예제를 보려면 PyTorch notebook 또는 TensorFlow notebook을 참고하세요.
추론[[inference]]
좋아요, 이제 모델을 파인튜닝했으니 추론에 사용할 수 있습니다!
요약할 텍스트를 작성해보세요. T5의 경우 작업에 따라 입력 앞에 접두사를 붙여야 합니다. 요약의 경우, 아래와 같은 접두사를 입력 앞에 붙여야 합니다:
추론을 위해 파인튜닝한 모델을 시험해 보는 가장 간단한 방법은 pipeline()
에서 사용하는 것입니다. 모델을 사용하여 요약을 수행할 pipeline()
을 인스턴스화하고 텍스트를 전달하세요:
원한다면 수동으로 다음과 같은 작업을 수행하여 pipeline()
의 결과와 동일한 결과를 얻을 수 있습니다:
텍스트를 토크나이즈하고 input_ids
를 PyTorch 텐서로 반환합니다:
요약문을 생성하려면 generate()
메소드를 사용하세요. 텍스트 생성에 대한 다양한 전략과 생성을 제어하기 위한 매개변수에 대한 자세한 내용은 텍스트 생성 API를 참조하세요.
생성된 토큰 ID를 텍스트로 디코딩합니다:
텍스트를 토크나이즈하고 input_ids
를 TensorFlow 텐서로 반환합니다:
요약문을 생성하려면 generate()
메소드를 사용하세요. 텍스트 생성에 대한 다양한 전략과 생성을 제어하기 위한 매개변수에 대한 자세한 내용은 텍스트 생성 API를 참조하세요.
생성된 토큰 ID를 텍스트로 디코딩합니다: