나만을 위한 GPT를 100배 더 강력하게 만들고 싶으신가요? LLM 파인튜닝
이 유튜브영상 인사이트 노트는 LilysAI 로 작성됐어요. LilysAI 에 무료로 가입하고 영상에서 10배 빠르고 깊게 인사이트를 얻으세요
Q: 나만을 위한 GPT를 만들기 위해 LLM 파인튜닝은 어떻게 활용되나요?
나만을 위한 GPT를 만들고 싶다면, LLM 파인튜닝이 답입니다. 기존 모델에 개인 데이터를 학습시켜 특정 분야에 특화된 결과물을 얻을 수 있으며, 이는 프롬프트 엔지니어링보다 비용 효율적이고 정확도가 높습니다.
1. 나만을 위한 GPT 만들기: LLM 파인튜닝의 세계
1.1. LLM 활용을 위한 두 가지 접근 방식
- 개인 맞춤형 GPT를 위한 두 가지 방법
- 기존 GPT를 그대로 사용하면 만족스러운 결과를 얻기 어렵다.
- 자신이 일하는 분야의 지식을 결합하여 만족스러운 결과물을 얻기 위해서는 두 가지 방법이 있다.
- 첫 번째는 언어 모델의 일부를 재학습시키는 파인튜닝 방법이다.
- 두 번째는 놀리지 베이스(Knowledge Base) 방식이다.
- 이 방식은 개인의 지식을 벡터 데이터베이스 형태로 변환하고, 언어 모델이 이 데이터베이스를 찾아보도록 하는 방식이다.
- 각 방식은 특정 분야에서 서로 다른 강점을 보인다.
1.2. 파인튜닝 vs. 놀리지 베이스: 어떤 것을 선택해야 할까?
- 파인튜닝의 강점: 특정 인물이나 스타일의 재현
- 파인튜닝은 특정 인물을 디지털화하는 데 매우 효과적이다.
- 예시: 철학자의 책을 학습시켜 심리 상담을 받는 듯한 GPT를 만들거나, 일론 머스크, 유시민 등 유명인의 어록을 학습시켜 그 사람이 말하는 듯한 언어 모델을 만들 수 있다.
- 놀리지 베이스의 강점: 정확하고 사실 기반의 정보 제공
- 놀리지 베이스 방식은 주식 가격 변동과 같이 사실 기반의 질문에 대해 언어 모델이 상상에 기반한 답변 대신, 저장된 정보를 기반으로 답변하도록 할 수 있다.
- 파인튜닝을 선택하는 이유
- 대부분의 경우 놀리지 베이스 방식이 더 낫다고 생각할 수 있지만, 이 영상에서는 모델 재학습(파인튜닝) 기능의 유용성을 사례와 함께 보여준다.
1.3. 나만의 미드저니 프롬프트 생성 GPT 만들기
- 목표 설정: 글에 맞는 이미지 프롬프트 생성 GPT
- 글을 작성할 때 중간중간 이미지가 들어가면 독자의 몰입도를 높일 수 있다.
- 이미지 생성 AI인 미드저니(Midjourney)를 사용하면 텍스트로부터 이미지를 만들 수 있다.
- 하지만 미드저니에서 좋은 이미지를 얻으려면 일정한 스타일로 프롬프트를 입력해야 한다.
- 일반적인 글쓰기 방식과 미드저니 프롬프트 입력 방식은 다르다.
- 글쓰기에 집중하고 싶으므로, 자동으로 미드저니 프롬프트 스타일에 맞게 글을 변환할 필요가 있다.
- 이 문제를 해결하기 위해 모델의 일부를 재학습시키는 방법(파인튜닝)을 사용할 것이다.
- 파인튜닝이 프롬프트 엔지니어링보다 나은 이유
- 프롬프트 직접 입력 방식(인컨텍스트 러닝)보다 파인튜닝이 더 나은 이유는 세 가지다.
- 첫째, 번거로움 해소
- 매번 구체적인 프롬프트를 준비하는 것이 매우 귀찮다.
- 둘째, 비용 절감
- 긴 프롬프트는 처리해야 할 토큰 수를 늘려 더 많은 비용을 발생시킨다.
- 셋째, 정확도 향상
- 최신 연구에 따르면, 모델 재학습 방식이 프롬프트 입력 방식보다 정확도 측면에서 더 우수하다는 주장이 많다.
1.4. 파인튜닝을 위한 준비 과정
- 파인튜닝 모델 선택
- 허깅 페이스(Hugging Face)에서 베이스 모델을 선택할 수 있다.
- 최근 모델인 라마(Llama)를 사용할 수도 있지만, 메타의 승인 절차가 오래 걸리고 큰 모델은 구글 코랩에 올리기 어렵다.
- 따라서 20억 개(2 billion) 파라미터 이하의 주마(Jamba) 모델을 사용한다.
- 개발 환경 설정
- 필요한 라이브러리를 설치한다.
- 런타임에서 GPU 연결이 잘 되었는지 확인한다.
- 데모 시연을 위해 L4 GPU를 사용한다 (약 1만원 비용 발생).
- 모델 다운로드 및 로드
- 모델 레지스트리에서 모델을 다운로드하기 위해 권한이 있는 토큰을 허깅 페이스에서 가져온다.
- 이 토큰은 외부에 유출되지 않도록 주의해야 한다.
- 모델을 그대로 로드하면 무겁기 때문에 양자화(Quantization)하여 로드한다.
- 바이트(bitsandbytes) 라이브러리를 사용하여 양자화를 진행한다.
- 20억 개 파라미터 모델이라도 크기가 꽤 크므로 로드에 시간이 소요된다.
- 선택한 주마(Jamba) 모델을 로드한다.
- 모델 레지스트리에서 모델을 다운로드하기 위해 권한이 있는 토큰을 허깅 페이스에서 가져온다.
- 모델 성능 테스트 (초기 상태)
- 모델을 불러온 후, 간편하게 실행할 수 있도록 래퍼 함수를 정의한다.
- 정의된 프롬프트를 넣어 모델이 의도대로 작동하는지 테스트한다.
- 초기 상태의 모델은 맥락을 전혀 이해하지 못하고 이상한 답변을 생성한다.
1.5. 데이터 준비: 파인튜닝의 핵심 재료
- 데이터셋 확보 방법
- 허깅 페이스의 데이터셋 탭에서 텍스트 관련 데이터셋을 찾을 수 있다.
- 캐글(Kaggle) 사이트에서도 다양한 데이터셋을 확인할 수 있다.
- 한국의 경우, 정부 단위로 구축된 AI 허브 플랫폼에서 데이터셋을 얻을 수 있다.
- 이 영상에서는 블로그에 작성한 자연어를 미드저니 프롬프트로 생성하는 것을 목표로 하므로, 직접 데이터셋을 수집했다.
- 데이터 수집 과정
- 미드저니 페이지에서 괜찮아 보이는 이미지에 대응되는 프롬프트 약 50개를 수집했다.
- 데이터셋의 퀄리티를 위해 미드저니의 전형적인 프롬프트 형식을 따르는 것들 위주로 선별했다.
- 수집된 데이터셋은 미드저니 프롬프트와 그에 대응되는 자연어 프롬프트 쌍으로 구성된다.
1.6. 자연어 프롬프트를 위한 데이터 가공
- 데이터 쌍 생성: 미드저니 프롬프트 -> 자연어 프롬프트
- 학습을 위해서는 미드저니 프롬프트에 대응되는 자연어 프롬프트가 필요하다.
- 현재 가지고 있는 것은 미드저니 프롬프트뿐이므로, 이를 위한 사용자 입력(자연어 프롬프트)을 생성해야 한다.
- 이를 위해 GPT를 활용하는 스크립트를 준비했다.
- 스크립트는 엑셀에 모아둔 미드저니 프롬프트를 입력받아, 이를 생성하기 위한 사용자 입력(자연어 프롬프트)을 GPT에 추론하도록 한다.
- GPT에게는 해당 텍스트 외 다른 내용은 작성하지 않도록 가이드하고, 인컨텍스트 러닝을 위해 두 개의 예시를 제공한다.
- 스크립트는 데이터셋의 각 행을 순회하며 GPT를 호출하고, 그 결과를 CSV 파일의 '유저 인풋' 컬럼에 저장한다.
- 스크립트 실행 및 결과 확인
- API 키를 담은 파일에서 라이브러리를 로드하고 메인 함수를 실행한다.
- GPT-4 터보 모델을 사용하여 작업을 수행했다.
- 스크립트 실행 결과, CSV 파일의 '유저 인풋' 컬럼에 자연어 프롬프트가 생성되는 것을 확인할 수 있다.
- 약 50개의 데이터셋 생성에 몇 백 원대의 비용이 발생하며, 약 3분 정도 소요되었다.
- 결과물은 미드저니 프롬프트와 그에 대응하는 GPT로 생성된 자연어 프롬프트(가짜 유저 인풋)로 구성된다.
1.7. 파인튜닝 실행: LoRA를 활용한 효율적인 학습
- 데이터셋 로드 및 전처리
- 생성된 CSV 파일을 코랩 파일 창에 업로드한다. (세션 종료 시 파일이 사라지므로 주의)
- CSV 파일을 로드하여 '미드저니 프롬프트'와 '유저 인풋' 두 개의 컬럼을 확인한다.
- 언어 모델이 이해할 수 있는 형태로 변환하기 위해 토크나이저를 적용한다.
- LoRA (Low-Rank Adaptation) 적용
- 언어 모델 전체를 재학습시키는 대신, 작은 모듈을 붙여 해당 부분만 다시 학습시키는 LoRA 기법을 사용한다.
- 이는 거대 언어 모델 파인튜닝 시간을 획기적으로 단축시켜 준다.
- LoRA 외에도 LoRA와 유사한 방법론들이 존재한다.
- LoRA를 적용하기 위해 트랜스포머의 특정 레이어에 붙을 수 있는 모듈들을 찾는다.
- 찾아낸 레이어들에 LoRA 모듈을 적용하여 파인튜닝된 모델을 얻는다.
- SFT 트레이너를 이용한 학습
- 일반적인 트레이너 대신 파인튜닝에 특화된 SFT 트레이너를 사용한다.
- 학습을 진행하며, 약 100 스텝 정도만 학습시켜도 쓸만한 결과물이 나온다.
- L4 GPU 기준, 100 스텝 학습에 약 5분 정도 소요된다.
- 학습이 완료된 모델을 가져와 병합하고 테스트를 진행한다.
1.8. 파인튜닝 결과 및 모델 배포
- 파인튜닝된 모델 테스트 결과
- 파인튜닝 완료 후 모델을 실행하면, 미드저니 프롬프트의 형태를 띄는 결과물이 생성된다.
- 학습 스텝 수를 높이고 데이터를 정제하면 결과물이 훨씬 좋아질 것으로 기대된다.
- 모델을 허깅 페이스 레지스트리에 푸시
- 학습된 모델을 허깅 페이스 레지스트리에 업로드할 수 있다.
- 자신의 계정 아래에 '마이 미드저니 프롬프트 모델'이라는 이름의 저장소를 생성한다.
- 모델을 푸시하여 허브에 등록한다.
- 업로드된 모델을 확인할 수 있다.
1.9. LLM 파인튜닝 기술의 활용 가능성
- 파인튜닝 기술의 무궁무진한 활용
- 이 영상에서는 개인적인 문제를 해결하기 위한 GPT 파인튜닝 방법을 소개하고 시연했다.
- 독자들에게 LLM 파인튜닝 기술을 어떻게 사용하고 싶은지, 어떤 목적으로 어떤 데이터를 학습시키면 좋을지에 대한 질문을 던진다.
방대한 자료를 천재처럼 이해하세요 - LilysAI 와 함께
1,000,000+ 명의 정보 탐색가들이 Lilys AI를 사용하고 있어요.
