[논문] Platypus: Quick, Cheap, and Powerful Refinement of LLMs

잉송·2023년 9월 16일
0

Paper

목록 보기
3/4

Paper: Lee, Ariel N., Cole J. Hunter, and Nataniel Ruiz. "Platypus: Quick, Cheap, and Powerful Refinement of LLMs." arXiv preprint arXiv:2308.07317 (2023).


성능

Platypus은 fine-tuning 및 merge LLM중에서 가장 높은 성능 달성. (Platypus 출시일 기준)
HuggingFace의 Open LLM 리더보드에서 1위


Platypus 주요 방식

(1) 다른 공개 데이터 중에서 선별한 데이터 사용 (다른 공개 데이터 세트의 하위 집합)
(2) LoRA로 fine-tuning하고 merging 하는 process
(3) test dataset leak 및 train dataset 오염 check


Curating Open-Platypus

  • 특정 도메인의 깊이, 입력 프롬프트의 다양성, train dataset의 크기를 작게 유지함으로써 모델의 정확도와 관련성을 극대화하는 것을 목표로 한다.
  • 다양한 오픈 소스 데이터 세트에서 가져온 콘텐츠 필터링 및 instruction tuning dataset를 curating
  • 콘텐츠 필터링: train dataset의 관심 분야인 STEM과 관련된 데이터만 포함하도록 선택

Removing similar & duplicate questions

  • 중복 제거
  • word-for-word 단위로 중복되는 모든 instructions 제거
  • train dataset 속에서 SentenceTransformers 임베딩과 코사인 유사도가 80%인 instructions 제거

Contamination Check

  • test dataset이 train dataset에 leak 하지 않도록 하기
  • test dataset의 암기로 벤치마크 결과가 왜곡되는 것 방지
  • 벤치마크 질문과 유사도 80% 이상의 점수를 받은 Open-Platypus의 질문을 수동으로 필터링
  • 잠재적 유출: duplicate, gray-area, similar but different (본 논문은 세 가지 모두 train dataset에서 제거)

    duplicate: 완전 중복이나 단어가 하나 더 추가되거나 약간 재배열된 문제도 포함.
    gray-area: 정확한 중복이 아닌 동의어나 유사한 것들.
    similar but different: 코사인 유사도 점수가 높지만 답변이 매우 다른 질문.

Fine-tuning & merging

  • lora 사용
  • lora target: v_proj, q_proj, k_proj, o_proj → gate_proj, down_proj, up_proj (Towards a unified view of parameter-efficient transfer learning 논문 참고)
  • Alpaca prompt template 사용
  • Model merge: code 속 merge.py을 보면 알 수 있음. model.merge_and_unload() 함수 활용.
  • 병합 모델은 추론 능력을 향상시키기보다는 지식 기반을 효과적으로 확장시켜줌. (본 논문을 통해서는)
  • 모델이 포화 상태에 도달하지 않았다는 LLaMa-2 논문의 주장은 병합이 모델에 "새로운" 정보를 도입할 수 있다는 생각을 더욱 뒷받침함.
  • 성능 향상 또는 저하가 모든 도메인에서 균일하지 않으므로 병합을 완료하기 전에 도메인별 평가가 필요
    => 즉 정리하면, 자신이 원하는 도메인이 병합이 좋을지 안 좋을지는 미지수라는 말.
profile
NLP 공부하는 사람

0개의 댓글