Notice
Recent Posts
Recent Comments
Link
헬창 개발자
허깅페이스 자주 사용하는 파라미터 본문
Trainer
data = {"input_ids": [],
"attention_mask": [],
"labels": 1}
- input_ids : 토큰화된 Input Text
- attention_mask : 각 토큰이 실제 단어인지(1) 패딩 토큰(0)인지 나타냄
- labels : 입력에 대한 Ground Truth를 저장, 멀티라벨일 경우 배열을 사용하여 표현
허깅페이스의 주요 입력 형식은 위와 같고 이 형식을 지켜서 trainer에 입력해야 한다.
trainer = Trainer(
model = model,
args = args,
train_dataset = train_dataset['train'],
eval_dataset = train_dataset['test'],
compute_metrics = compute_metrics,
data_collator = data_collator,
tokenizer = tokenizer,
formatting_func = formatting_func, # SFTTrainer에만 존재
peft_config = lora_config, # SFTTrainer에만 존재
)
# SFTTrainer: Supervised Fine-Tuning Trainer
Parameter
학습률, 배치, 로깅옵션 등의 설정을 포함하는 파라미터들로 예시는 다음과 같다.
- args
from transformers import TrainingArguments training_args = TrainingArguments( output_dir='./results', # 결과를 저장할 디렉토리 num_train_epochs=1, # 총 훈련 에폭 수 per_device_train_batch_size=1, # 훈련 중 장치별 배치 크기 per_device_eval_batch_size=10, # 평가 시 장치별 배치 크기 warmup_steps=1000, # 학습률 스케줄러의 워밍업 단계 수 weight_decay=0.01, # 가중치 감쇠의 강도 logging_dir='./logs', # 로그를 저장할 디렉토리 logging_steps=200, # 로그를 출력할 빈도 do_train=True, # 훈련 수행 여부 do_eval=True, # 평가 수행 여부 evaluation_strategy="epoch", # 에폭마다 평가 수행 gradient_accumulation_steps=64, # 역전파 전 총 단계 수 fp16=True, # 혼합 정밀도 사용 여부 fp16_opt_level="02", # 혼합 정밀도 모드 run_name="ProBert-BFD-MS", # 실험 이름 seed=3 # 실험 재현성을 위한 시드 )
- train_dataset
아래 형식을 지키는 데이터 셋을 입력으로 넣어주어야 한다.
data = {"input_ids": [], "attention_mask": [], "labels": 1}
tokenizer
- 1. 텍스트 분할
"Hugging Face is great!" -> ["Hugging", "Face", "is", "great", "!"]
- 2. 토큰 변환
분할된 텍스트들을 고유한 숫자 ID로 변환한다.
- 3. 패딩 및 정규화
3.1 문장의 길이를 고정된 길이로 맞춘다.
["Hugging", "Face", "is", "great", "!"]
→
["Hugging", "Face", "is", "great", "!", "[PAD]", "[PAD]"]
3.2 대소문자 변환 등의 정규화 작업을 수행한다.
["Hugging", "Face", "is", "great", "!"]
->
["hugging", "face", "is", "great", "!"]
- 4. 문장 부호 추가(모델의 종류에 따라 사용하는 토큰이 달라진다.)
모델이 문장의 시작과 끝을 인식할 수 있도록 시작 토큰과 종료 토큰을 추가한다.
- 대괄호([]): BERT와 같은 모델에서 주로 사용
[SEP] : 문장의 끝을 나타내는 토큰위
[INST] : 대화형 모델에서 특정 지시를 수행하는 모델에서 사용
[CLS] : 문장의 시작을 나타내는 토큰
- 꺽쇠(<>): BART, GPT-2에서 주로 사용</s> : 문장의 끝을 나타내는 토큰
<<SYS>> : 시스템의 역할이나 메시지를 구분하기 위해 사용
<s> : 문장의 시작을 나타내는 토큰
- 5. Mask 생성
어텐션 마스크를 생성한다.["hugging", "face", "is", "great", "!"] -> ["Hugging", "Face", "is", "great", "!"] [1, 1, 1, 1, 1]
'공부방' 카테고리의 다른 글
LoRA target_modules (0) | 2024.08.08 |
---|---|
중첩된 리스트 평탄화 : python list flattening (0) | 2024.08.07 |
LangChain 문서 분할 종류 (0) | 2024.07.29 |
nvidia-smi, nvcc --version cuda 버전이 다른 경우 (0) | 2024.07.19 |
키워드 검색(Keyword Search)과 의미 검색(Semantic Search)의 차이 (0) | 2024.06.20 |
Comments