언어모델파이썬

Unsloth 로 언어모델 파인튜닝 하기

Unsloth

Unsloth (깃허브 링크)는 gemma, qwen, llama 등의 언어모델을 학습시켜 파인튜닝 할 수 있는 해주는 도구입니다.

메모리와 학습 시간을 절약시켜 주고 최신 모델을 빠르게 반영하기 때문에 아주 유용합니다. 또한 학습 된 모델을 다양한 형식으로 저장할 수 있습니다. 사용법에 대한 문서도 잘 작성되어 있습니다.

이 글에서는 코랩 T4 환경에서 gemma3 12B가 자신이 Gemini라고 답하도록 파인튜닝 해보겠습니다. unsloth에서 공식적으로 제공하는 노트북 파일의 내용을 약간만 바꿔서 진행했습니다.

실습

라이브러리 설치

unsloth 공식 코랩 주피터 노트북의 내용대로 라이브러리를 설치합니다.

언어모델 로드

gemma3 12b 모델을 4bit로 불러옵니다. unsloth에서 미리 만들어 놓은 파일을 다운로드 받게됩니다.

모델을 학습하기 위한 설정을 합니다. r (rank) 값이 클수록 더 많은 파라미터가 학습됩니다.

데이터 준비

Gemini를 이용해 학습데이터와 검증데이터를 만들었습니다.

템플릿을 적용시키기 위해 불러오고 데이터셋에 적용시킵니다. <bos>가 중복 되는 것을 막기 위해 제거하는 코드도 적용합니다.

학습 준비

학습과 관련된 파라미터를 정하고 학습을 준비합니다

에포크 마다 모델이 저장되도록 했고 마지막에는 validation loss가 가장 낮은 모델을 불러오도록 했습니다.

공식 주피터노트북 파일에 나온대로 AI의 답에 대한 loss로 계산을 하기 위해 아래 코드를 실행합니다.

학습에 쓰이는 데이터를 확인해 보면 아래와 같이 템플릿이 잘 적용된 것을 알 수 있습니다.

학습

학습이 진행되고 에포크마다 training loss와 validation loss를 확인할 수 있습니다.

Loss 값들
Loss 값들

추론

템플릿을 적용하고 토큰화를 해 generate에 넘겨줍니다.

실시간으로 스트리밍 하려면 TextIteratorStreamer와 Thread를 이용합니다.

실시간 출력
실시간 출력

모델 저장

공식 제공 노트북의 아래 부분에 Lora 어댑터만 저장, 전체 모델 저장, gguf로 저장 방법과 불러오는 방법이 나와 있습니다.

여기서는 Lora 어댑터 저장만 살펴보겠습니다.

gemini 디렉토리가 생기고 내부에 파일이 들어있습니다.

lora 디렉토리
lora 디렉토리

아래처럼 디렉토리 명으로 불러오면 되고 원본모델을 불러오고 lora를 적용시킵니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!