목차
지난 글에서 llama fine tuning을 위한 첫 번째 준비 작업으로 hugging face에서 다운로드한 llama 3.2 1b 모델을 포멧 변경하여 ollama 플랫폼에 맞게 생성하는 것까지 진행해 봤습니다. 오늘은 두 번째 준비 작업을 진행하기 전 튜닝 목적을 수립하기 위해 기존 모델의 한글 능력을 체크해 보고, llama 모델에 한글을 fine tuning 방법에 대해 정리해 보도록 하겠습니다.
(지난 글 참고: llama fine tuning 방법 #1 – gguf 파일 변환과 Ollama 모델 생성)
튜닝의 목표 설정과 Dataset
llama fine tuning 목표 설정
직관적으로 짧게 생각해 봐도, 기존 llama 모델의 가장 불편한 점은 한글화가 부족하다는 점이었습니다. 이미 3.2 모델까지 나왔음에도 여전히 한글화된 공식 모델은 없습니다. 이점에서 두말할 것 없이 한글 fine tuning의 목표와 목적은 분명할 것입니다.
이제, Docker를 이용하여 웹페이지를 통해 ollama 플랫폼에 설치된 모델의 실행해 보고 한글이 잘되는지 확인해 봐야겠죠? Open WebUI 및 Docker 설치 관련해서는 아래 이전 글을 참고해 주세요.
웹페이지 주소에 http://localhost:3000를 입력하고 아래와 같은 화면이 나오면 “모델 선택“을 클릭합니다.
①은 hugging face에서 다운로드한 모델이고, ②는 ollama에서 직접 다운로드한 모델입니다. 두 모델에 같은 질문을 하여 한글 능력을 살펴보겠습니다. 설치된 경로와 파일 포멧만 다를 뿐 같은 버전의 모델이므로 한글 능력은 거의 비슷해야 합니다. 이제, 아래와 같이 확인해 봅니다.
먼저 .gguf 파일을 Modelfile을 이용하여 설치한 라마 모델입니다. “한글에 대해 설명해줘.”라는 질문으로 대답을 확인합니다.
우선, 단어를 보면 영어도 있고, 어디 언어인지 모르겠지만, 타국 언어들이 섞여 있습니다. 문맥과 내용을 보면 역시 그다지 옳바르지 않습니다. 내용도 맞지 않지만 문맥이나 논리도 정리되지 않았습니다.
다음은 ollama를 통해 설치된 llama 3.2 1b 모델입니다.
단어와 내용 및 논리적인 면에서도 역시 별다른 차이점이 없어 보입니다. 한글 능력은 처참한 수준으로 보입니다.
한글 튜닝용 데이터셋(Dataset)
llama fine tuning을 위해서는 당연히 한글 데이터셋이 필요합니다. hugging face에서 찾아보면 한글 데이터셋이 몇 개 보이기는 하지만, 공식적인 데이터셋 같지는 않더군요.
물론 개인 PC, 그것도 오래된 구형 시스템에서 튜닝 작업을 해야 하는 관계로 성능에 도움이 될 수 있는 규모가 큰 데이터를 사용할 수 없다는 제한 조건도 있지만, 그럼에도 불구하고 어느 정도까지 할 수 있는 최대한 수준까지는 선택해 보고 싶었습니다.
때문에 여기저기 찾아보다가 Ai-Hub라는 사이트를 찾게 되었습니다. 이번 튜닝의 목적은 상업 목적이나 데이터 공개 목적이 아닌 개인 학습 목적이므로 이 곳의 저작권 정책에도 문제가 없어 보였습니다. 참, 이곳의 데이터는 해외 유출 금지 항목이 있더군요. 여러가지 의미가 있어 보였습니다. AI 허브는 인공지능 기술 및 제품·서비스 개발에 필요한 인프라를 지원하는 통합 플랫폼입니다. AI 학습용 데이터, 소프트웨어 API, 고성능 컴퓨팅 관련 정보 등을 제공하여 누구나 활용하고 참여할 수 있다고 합니다.
위 사이트에서 한글 데이터셋을 하나 다운로드해서 보니 training과 validation이 구분되어 있고 라벨링도 정리되어 있어서 사용하기 좋게 구성되어 있었습니다. 종류도 다양해서 이번에는 한글을 사용하지만, 추후 다른 목적으로 강화 학습을 포함한 llama fine tuning도 테스트해 볼만 할 것 같습니다.
원하는 데이터셋을 찾아서 다운로드 받으면 SFTlabel.json과 RMlabel.json파일을 볼 수 있을 거예요. 처음 한글 파인 튜닝을 하는 것이므로 이 파일 중 SFTlabel을 사용하려 합니다. SFT는 Supervised Fine Tuning의 약자로 입력과 출력 쌍으로 초기 모델의 성능 향상을 목표할 때 사용할 수 있는 데이터라고 합니다. 때문에 이후 실제 파인 튜닝 단계에서 training과 validation 단계에 SFTlabel을 사용하여 튜닝을 하도록 하겠습니다.
오늘은 llama 3.2 1b의 한글 파인튜닝을 위한 데이터셋에 대해 간략하게 이야기해 보았습니다. 테스트하다 보니 너무 큰 데이터셋을 사용했나 싶기도 하지만, 일단 정한 것이니 파인 튜닝까지 계속 수행해 보겠습니다. 다음 글에는 실제 파인 튜닝을 위한 코드 구성에 대해 이야기해 보겠습니다.