기술공부/LLM

오픈소스 LLM(Llama2): 파인튜닝

넹넹선생님 2024. 4. 17. 14:07
728x90
반응형

이 내용은 Sionic AI 블로그의 글을 시도해본 경험에 대한 글입니다.

( Sionic AI 블로그: https://blog.sionic.ai/Finetuning_Llama)

 

개인화된 LLM 만드는 방법:

- 파인튜닝: 언어모델을 커스터마이징해서 사용하는 방법; 특정 작업에 맞는 추가학습(미세 조정)

- RAG: 사용자 쿼리에 맞는 문서 스니펫을 적절히 가져와 프롬프트에 추가; 프롬프트 엔지니어링

             관련 개발자 도구: LlamaIndex, Langchain

             관련 전처리 SDK: unstructured.io

             관련 상업용 벡터 서치 DB: Milvus

 

두 방법의 추천 Case (By OpenAI):

- 모델이 어떻게 답변하고 추론하는지 수정하는 경우 -> 파인튜닝

   1. 상용화된 모델의 클라우드 서비스(파인튜닝 API)를 통해

   2. 공개모델 + 데이터셋 => private 환경에서 파인튜닝

- 모델의 지식적인 측면 수정 -> RAG

LLM 성능 개선 방향

 

이번 글에서는 오픈소스 llm으로 파인튜닝 방법을 진행해보기로 한다.

( 이 모델의 inference를 WebGPU를 활용하여 로컬에서 수행하기에 정보 유출 위험 없음, 로컬에서 구동)

 

파인튜닝 방법:

- 체크포인트 기법

- PEFT(Parameter Efficient Fine-tuning):

   일부 파라미터를 튜닝해서 모델의 성능을 적은 자원으로 튜닝할 수 있도록 하는 방법

   - LoRA(Low Rank Adapation):

      고정 가중치를 가지고 있는 pretrained 모델을 기반으로 추가 학습이 가능한 Rank Decomposition 행렬을 트랜스포머 아키텍쳐의 각 레이어에 붙이는 것

      = 훈련 가능한 레이어를 별도의 훈련을 통해 학습시킨 것

      (장점) Low Data Regime처럼 데이터가 적은 상황에서도 파인튜닝하기 용이, 도메인 외부의 데이터를 일반화할 때 좋은 것으로 알려짐- LoRA로 학습된 가중치는 사전학습된 LLM 모델 레이어의 맨 윗부분 차지(다른 파라미터에 영향력은 하이퍼파라미터로 결정-> 모델 성능 결정됨)

      ex. QLoRA

            4비트 양자화 기법 (적은 비트의 포멧으로 설정하여 큰 메모리의 GPU 없이도 파인튜닝 가능)

            LoRA의 가중치를 NormalFloat이라는 FP4를 변형한 자료형을 사용하여 4비트 양자화

 

실험환경:

- 맥북 m1

- Llama 7B Chat

- QLoRA 기법

728x90
반응형

'기술공부 > LLM' 카테고리의 다른 글

RAG ChatBot 만들기: Upstage, Solar LLM  (0) 2024.06.28
Customized ChatGPT 만들기: 개인 비서  (0) 2024.06.28
LLM 할루시네이션 신뢰성 검토  (1) 2024.06.27
LLM, RAG  (0) 2024.05.03
Ollama  (0) 2024.04.17