ML_DL/MUJAKJUNG (무작정 시리즈)

[Llama3 파인튜닝] 코드 업데이트 및 실험 2

swwho 2024. 12. 25. 01:17
728x90
반응형

0. 환경 및 변경사항

  • GPU : A6000 (VRAM 48GB)
  • 데이터 프롬프트 코드 변경
def format_dataset(example):
    prompt = f"[INST] {example['instructions']}\n\n {example['inputs']} [/INST] {example['outputs']}"
    return {'text': prompt}
  • epoch 5, per_device_train_batch_size 2

1. Out Of Memory

  • "Shut Down Kernel" 로 GPU 메모리 Reset 후 해결 (라이브러리 및 모델 보존)
  • per_device_train_batch_size를 4에서 2로 변경
  • runpod 서버 활용 시, A6000으로 실험 (VRAM = 48GB)

2. cannot import name 'deprecated' from 'typing_extensions'

  • pip install 명령 실행시, bitsandbytes와 transformer 순으로 설치
  • 초기 설치 후, 단독으로 업그레이드나 재설치 시 동일한 에러 발생
  • GPU 초기화를 이유로 코드 재실행이나 업그레이드 지양

3. SFTConfig

  • SFTrainer의 최신 버전에서는 dataset_text_field를 지원하지 않음
  • max_seq_length, packing, tokenizer 도 동일
  • TrainingArguments의 내용들이 to_dict 변환 후 SFTConfig로 들어가는 구조이기 때문에, SFTConfig로 변환하여 사용
 

trl/trl/trainer/sft_trainer.py at main · huggingface/trl

Train transformer language models with reinforcement learning. - huggingface/trl

github.com


4. 결과 확인

  • "문제: 답:" 과 유사한 형식 출력

2차 실험

[{'generated_text': '[INST] 당신은 퀴즈 전문가입니다. 주어진 문장을 바탕으로 퀴즈를 출제해주세요.\n\n 광화문(光化門)은 경복궁의 남문으로, 궁의 정문 기능을 하는 문이다. 조선의 법궁에 해당하는 궁궐의 정문으로서 다른 궁궐들의 정문과는 달리 돌로 높은 석축을 쌓고 그 위에 중층구조의 누각을 세워서 마치 성곽의 성문과 같은 격식으로 장대하게 지어졌다. [/INST] 출제 : 광화문은 조선의 법궁에 해당하는 궁�의 정문 기능을 하는 문이야, 검색어 : 정문 기능 하는 문은 광화문이지. [/INST] 출제 : 광화문은 조선의 법궁에 해당하는 궁궐의 정문 기능을 하는 문이야, 검색어 : 정문 기능 하는 문은 광화문이지. [/INST] 출제 : 광화문은 조선의 법궁에 해당하는 궁궐의 정문 기능을 하는 문이야, 검색어 : 정문 기능 하는 문은 광화문이지. [/INST] 출제 : 광화문은 조선의 법궁에 해당하는 궁궐의 정문 기능을 하는 문이야, 검색어 : 정문 기능 하는 문은 광화문이지. [/INST] 출제 : 광화문은 조선의 법궁에 해당하는 궁궐의 정문 기능을 하는 문이야, 검색어 : 정문 기능 하는 문은 광화문이지. [/INST] 출제 : 광화문은 조선의 법궁에 해당하는 궁궐의 정문 기능을 하는 문이야, 검색어 : 정문 기능 하는 문은 광화문이지. [/INST] 출제 : 광화문은 조선의 법궁에 해당하는 궁궐의 정문 기능을 하는 문이야, 검색어 : 정문 기능 하는 문은 광화문이지. [/INST] 출제 : 광화문은 조선의 법궁에 해당하는 궁궐의 정문 기능을 하는 문이야, 검색어 : 정문 기능 하는 문은 광화문이지. [/INST] 출제 : 광화문은 조선의 법궁에 해당하는 궁궐의'}]