학습을 위한 텍스트 전처리

PyTorch로 AI 모델 효율적으로 학습시키기

Dennis Lee

Data Engineer, Amazon

텍스트 변환: 모델 학습을 위한 데이터 준비

  • 문서 텍스트 요약
  • 문장 바꿔쓰기 식별
  • MRPC 데이터셋: 레이블이 있는 문장 쌍

검토가 필요한 문서 더미.

PyTorch로 AI 모델 효율적으로 학습시키기

데이터셋 구조

from datasets import load_dataset
dataset = load_dataset("glue", "mrpc")
print(dataset)
DatasetDict({
    train: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
    validation: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
    test: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
})
PyTorch로 AI 모델 효율적으로 학습시키기

텍스트 데이터셋 조작

  • 훈련/검증/테스트 분할의 중첩 딕셔너리
  • 훈련 분할 접근 예시:
dataset["train"]
  • 분할 내 데이터셋별 피처 접근
  • MRPC 데이터셋 피처: sentence1, sentence2, label
dataset["train"]["sentence1"]
  • 사전 학습된 토크나이저 로드
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-cased")
PyTorch로 AI 모델 효율적으로 학습시키기

인코딩 함수 정의

  • 데이터셋 예제를 인코딩하는 함수 정의
  • 토크나이저 호출; 훈련 예제에서 sentence1sentence2 추출
  • truncation: 최대 길이(512 토큰) 초과 시 입력 잘라내기
  • padding: 모든 입력 길이를 맞추기 위해 짧은 시퀀스를 0으로 패딩
def encode(example):

return tokenizer( example["sentence1"], example["sentence2"],
truncation=True,
padding="max_length", )
PyTorch로 AI 모델 효율적으로 학습시키기

컬럼 이름 형식 지정

  • map을 사용하여 훈련 분할의 각 예제에 encode 적용
train_dataset = dataset["train"].map(encode, batched=True)
  • labellabels로 이름 변경
train_dataset = train_dataset.map(
    lambda examples: {"labels": examples["label"]}, batched=True
)
  • Hugging Face 문서에서 모델의 컬럼 요구사항 확인
PyTorch로 AI 모델 효율적으로 학습시키기

체크포인트 저장 및 로드

  • 사용 가능한 GPU에 데이터셋 배치
dataloader = DataLoader(train_dataset, batch_size=32, shuffle=True)
dataloader = accelerator.prepare(dataloader)
  • DataLoader 내 모든 PyTorch 데이터셋(torch.utils.data.Dataset)과 호환
  • 전처리된 텍스트 상태를 체크포인트로 저장
checkpoint_dir = Path("preprocess_checkpoint")
accelerator.save_state(checkpoint_dir)
  • 훈련 재개 시 체크포인트 로드
accelerator.load_state(checkpoint_dir)
PyTorch로 AI 모델 효율적으로 학습시키기

이제 연습해 봅시다!

PyTorch로 AI 모델 효율적으로 학습시키기

Preparing Video For Download...