파인튜닝 준비

Python으로 배우는 LLM 입문

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

파이프라인 vs Auto 클래스

파이프라인: pipeline()

  • 작업 간소화
  • 모델/토크나이저 자동 선택
  • 제어 범위 제한적

Hugging Face Transformers의 파이프라인

Auto 클래스(AutoModel 클래스)

  • 커스터마이징 가능
  • 수동 조정
  • 파인튜닝 지원

Hugging Face Transformers의 AutoModel 클래스: 커스터마이징 옵션 표시

Python으로 배우는 LLM 입문

LLM 수명주기

LLM 수명주기

사전 학습

  • 광범위한 데이터
  • 일반 패턴 학습
Python으로 배우는 LLM 입문

LLM 수명주기

LLM 수명주기

사전 학습                                                             파인튜닝

  • 광범위한 데이터                                               도메인 특화
  • 일반 패턴 학습                                       특정 작업 최적화
Python으로 배우는 LLM 입문

파인튜닝용 데이터셋 로드

from datasets import load_dataset


train_data = load_dataset("imdb", split="train")
train_data = data.shard(num_shards=4, index=0)
test_data = load_dataset("imdb", split="test")
test_data = data.shard(num_shards=4, index=0)
  • load_dataset(): Hugging Face Hub에서 데이터셋 로드
    • imdb: 리뷰 분류
Python으로 배우는 LLM 입문

Auto 클래스

from transformers import AutoModel, AutoTokenizer

from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
Python으로 배우는 LLM 입문

토크나이징

from transformers import AutoTokenizer, AutoModelForSequenceClassification
from datasets import load_dataset

train_data = load_dataset("imdb", split="train")
train_data = data.shard(num_shards=4, index=0)
test_data = load_dataset("imdb", split="test")
test_data = data.shard(num_shards=4, index=0)

model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")


# Tokenize the data tokenized_training_data = tokenizer(train_data["text"], return_tensors="pt", padding=True, truncation=True, max_length=64) tokenized_test_data = tokenizer(test_data["text"], return_tensors="pt", padding=True, truncation=True, max_length=64)
Python으로 배우는 LLM 입문

토크나이징 출력

print(tokenized_training_data)
{'input_ids': tensor([[  101,  1045, 12524,  1045,  2572,  8025,  1011,  3756,  
2013,  2026, 2678,  3573,  2138,  1997,  2035,  1996,  6704,  2008,  5129,  2009, 
2043,  2009, 2001,  2034,  2207,  1999,  3476,  1012,  1045,  2036, ...
Python으로 배우는 LLM 입문

행 단위 토크나이징

def tokenize_function(text_data):
    return tokenizer(text_data["text"], return_tensors="pt", padding=True, truncation=True, max_length=64)

# Tokenize in batches
tokenized_in_batches = train_data.map(tokenize_function, batched=True)

# Tokenize row by row tokenized_by_row = train_data.map(tokenize_function, batched=False)
Dataset({
    features: ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
    num_rows: 1563
})
Python으로 배우는 LLM 입문

서브워드 토크나이징

  • 최신 토크나이저에서 일반적
  • 단어를 의미 있는 하위 단위로 분할

 

Unbelievably

Python으로 배우는 LLM 입문

서브워드 토크나이징

  • 최신 토크나이저에서 일반적
  • 단어를 의미 있는 하위 단위로 분할

 

Unbelievably가 un, believ, ably로 토크나이즈됨.

Python으로 배우는 LLM 입문

연습해 봅시다!

Python으로 배우는 LLM 입문

Preparing Video For Download...