LLM

파인튜닝 전문가 이승유님 발표 자료 - 테디노트

scone 2024. 8. 4. 17:45

https://www.youtube.com/live/ejZ9XAm7jck

발표자 : 이승유님

LLM API 를 어디서 쓰시는지

  • Deep Infra
  • Together AI

 

LLM에서 Validation 전략

  • 다양한 도메인에서, 다양한 테스크를 직접 선택하여 validation을 가져감
  • Lora 기준 1000개 정도. 충분히 수많은 도메인, 어려운 테스크 담을 수 있어서
  • Val Loss 정보 가지고 감을 잡을 수 있다.
  • 30만개를 학습시킨다고 하면, 만 개 정도 쓰면 될 것 같은데, 저라면 하이퀄리티로 천개 만들어 쓸것 같아요.
  • 평가 내용
더보기
  • Comprehensive Korean Benchmarks
    • KMMLU, HAERAE-Bench
  • Common Reasoning
    •  Hellaswag, Winogrande, PIQA, ARC, CommonsenseQA
  • World Knowledge and Facutuality
    •  Hellaswag, Winogrande, PIQA, ARC, CommonsenseQA
  • Mathmatics
    • GSM8k, MATH
  • Coding Capabilities
    • HumanEval, MBPP
  • Instruction Following and Chatting Abilities
    • MT-Bench
  • Harmlessness
    • TruthfulQA, BOLD

 

LLM 생태계는?

  • sLLM 위주의 모델의 한계점을 넘어 거대한 Foundation 모델들이 공개되어 나오고 있음.
  • 중형 및 대형 사이즈 크기의 모델들이 SOTA급 성능을 자랑하며, 다국어 및 다양한 모델들로 개발
  • 따라서 선택지가 많아졌고, GPU 자원을 적절하게 활용하는 기술 확보와 목적에 맞게 튜닝하는 기술이 중요해짐.
  • 특히 sLLM의 방향은 on-device로 적용되는데 초점을 맞출 것으로 예상
  • 파운데이션 모델을 잘 활용하여, 특정 목적에 맞추어 Fine-Tuning 혹은, 프롬포트 엔지니어링, 데이터 생성기로 활용하는 기술력 확보가 주요할 것으로 사료됨.
  • 중형급 모델을 잘 다루어 효율/효과성을 다 잡을 수 있게 진행하는 방법론도 주요할 것으로 사료 됨.
    • 27B Gemma, 70B Llama 3.1 등 사용해서 Knowledge distilation 으로 8B 짜리를 중형급 모델 만큼 성능을 내게 해서 쓴다던가.

 

 

 

LLM 한 줄 평

  • Llama 3.1 8B, 70B 405B의 등장
    • 거대한 Pretraining 이 성능을 이끌어낸다. (15조 개의 다국어 토큰, 128,256 vocab size)
  • Nvidia의 Nemotron 4-340의 등장
    • RoPE를 활용한 훈련 ( 시퀀스를 좀 더 길게 가져갈 수 있음, 근데 4k의 sequence length ... )
  • Mistral AI도 12B의 Nemo와 128B의 mistral Large 모델 공개
    • mistral과 nvidia의 공동 개발 작품, Fp8 추론 방식 활용시 효과적, 속도가 진짜 빠름(131,072 / 32,768 의 vocab 사이즈)
  • Gemma2 2.6B & 9B & 27B(4~6장의 GPU)
    • GQA와 LocalGlobal Attention, 2조에서 13조 개의 토큰을 사용한 훈련 ( 조 단위 토큰, Exponential 하게 성능 올라갈 수 밖에)

 

Service 한 줄 평

  • Open AI - GPT4 omni / mini
    • LLM을 넘어 LMM으로!
  • Google의 Gemini
    • 바닥부터 Multi-modal -> On Device 모델로 간다.

 

Finetuning에 대한 평가

1. Sota LLM을 활용하여 평가

  • GPT4, 하이퍼클로바 X, Gemini 등을 활용하여 Insturction에 대한 답변의 적절성을 평가
  • 가장 간편한 평가 방법 중 하나로 논문, 연구에서 진행되고 있는 방식
  • 다만, 이 방식은 시행마다 같은 Instruction과 같은 답변이지만, 점수가 매번 다르게 측정된다는 문제점이 있음. ( N을 키우자 )
  • 시행 횟수를 충분히 키우고, 지표의 변동성을 고려, 신뢰구간을 설정, 실제 값이 포함될 신뢰 가능 범위를 구해서 추정

 

API로 안하고, 문서 업로드 해서 평균 알려달라 이렇게 써도 괜찮더라

 

2. Human Evaluation

  • 인간의 선호도 기반으로 평가를 진행하는 방식
  • 대표적으로 Chatbot Arena와 같은 평가 방식을 활용 가능
    • Pairwise Comparison: 두 개의 익명의 비교군 모델에 질문을 한 후 둘 중 선호되는 답변을 채택
    • Elo 레이팅: 경쟁게임에서 가장 많이 사용되는 Elo 레이팅 시스템 활용하여, Pairwise Comparison 결과 기반으로 모델의 점수를 부여하여 순위화 시키는 방식
    • 다만, 모델의 템플릿이나 답변 형식에 따라 익명성이 오염될 수 있으며, 시간과 비용이 상대적으로 많이 소요됨.
  • 대표적인 핵심 질문을 샘플링 한 후, 익명으로 Human evaluator가 점수를 매기는 방식으로 진행할 수 있음.
    • 위와 같은 방식도, 특정 도메인의 경우, 전문가 수준의 평가자 필요, 노동과 시간이 필요함.

3. Multiple-choice

  • 객관식  평가로 모델의 답변을 accuracy와 f1-sore로 비교하는 방식
  • Few-shot으로 prompt에 예제 문제와 예제 답변 형식을 준 후, 모델의 답변을 통해서 비교 (위에서 언급한 평가 항목)
  • GT 기준으로 비교를 할 수 있기에 정량화된 평가가 가능

4. Confidence Evaluation

  • LLM 모델을 의사결정을 위한 도구로 활용하였을 때, 대다수의 모델은 over confident 하게 답변
  • 스탠포드에서 이를 Confidently hallucinate 라고 정의함 (Band et al. 2024)
  • 모델의 Output을 확률 기반으로 답변할 수 있게 align 한 이후, 이를 기반으로 의사결정 수행 (Bayesian Optimal Decision)
  • 이러한 기법을 Linguistic Calibration 이라고 한다.
  • 환자의 병명을 알려주세요.
    => 몇 % 확률로 감기이고, 몇 %의 확률로 천식이고, 몇 %의 확률로 폐 결정 입니다.

 

Finetuning Template 선택

  • 원 모델의 템플릿을 최대한 따르려고 합니다.
  • 멀티 턴이면 chat ML Template을 많이 씁니다. (알파카 템플릿은 답변이 애매하고, 장황해질 수 있어서)
    • 질문 4개 답변 4개 받고 뭐 그렇게 한다고 하면, EOS 토큰을 싹다 지워줘야죠. 있으면 훈련이 잘 안돼서

 

오픈소스 모델을 훈련할 때, 적은 데이터 셋으로 특정 도메인에서 효과를 볼 수 있을까요?

  • 50개에서 100개를 가지고만 효과를 보기는 어렵구요. 차라리 General 한 데이터에 포함시켜서, General한 데이터 900개를 만들어서 1000개 가량 만든 다음에 LoRa말고 Full Finetuning을 쓰면 효과를 볼 수 있을 것 같다.
  • LoRa로 1000개를 쓰면  성능 절대 안나옵니다. Adapter라는게 의미없는 가중치를 넣어서 학습시키는것이기 때문에 데이터를 몇 만개를 봐야 가중치가 학습됩니다.
  • 반면에, Full Finetuning은 이미 사전학습이 된 가중치에 대해 데이터를 조금 밀어넣어준 것이기 때문에 1000개의 데이터로도 어느정도 미세 조정이 됩니다.
    • 13B 모델 정도가 A100 3 ~ 4개로 8시간 정도 훈련시켰을 때, Full finetuning이 가능합니다.
    • lr을 무척 적게 가져가다가, 유의하지 않다 싶을 때 좀 바꿔주고, 옵션도 조금씩 변형해가면서 밀어주는게 중요합니다.

 

매우 긴 시퀀스 length에 대한 Eval 은 어떻게 진행되나요

테디님_7월30일.pptx
10.19MB

 

 

 

* GPU N 대 사용하려면.. 런팟

https://jiogenes.github.io/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C/2023/11/08/runpod-1.html