인공지능

[Google MLB] Gemma sprint 후기

LimeCoding 2024. 10. 3. 12:36

이번에 구글 머신러닝 부트 캠프를 진행하면서 Gemma2를 파인튜닝하는 프로젝트를 진행했다.

 

아이디어 선정

 아이디어를 선정할 때 처음에는 크게 떠오르는 것들이 없었는데 다른 분들 하신 것을 보다보니 옛날에 해보고 싶었던 것들이나 재미있는 것들이 떠올랐지만 주제가 겹치거나 너무 간단한 것들이 떠올라서 팀원분과 의논을 했다. 그러다 마침 팀원분이 특허 관련해서 공부하신 분이라 특허와 LLM을 합쳐 특허 명세서 작성을 도와주는 모델을 만들면 좋겠다는 생각이 들었다. 나도 예전에 특허 명세서를 작성하면서 어려움을 겪은 적이 있어서 조금 더 마음이 갔다.

 

데이터 셋

 특허 명세서를 작성하기 위해선 특허 명세서에 대한 데이터 셋이 필요했다. 해당 데이터 셋은 AI-Hub에서 가져오기로 했다. 특허 명세서를 작성하는데 있어서 중요한 항목들이 있는데 그중 하나인 청구항 내용이 우리가 구한 데이터 셋에는 없었다. 그래서 키프리스 크롤링을 통해 데이터 셋을 크롤링하고 있었는데 팀원분께서 robot.txt에서 네이버, 구글과 같은 봇만 허용되고 다른 크롤링은 막아놓았다는 얘기를 듣고 아차! 싶었다. 그래서 다시 문서에 대한 정보를 찾아보고 며엣서 문서가 오픈된 문서라서 손으로 직접 가져가는 것에는 문제가 없을 것이라고 판단되어 팀원분과 같이 데이터를 모아서 약 1000개 정도 데이터를 모았다.

 

모델 학습

 파인 튜닝이 처음이라 어떻게 하는지 잘 몰라서 처음에는 인터넷을 찾아다니며 어떻게 파인 튜닝을 하는지 튜토리얼들을 찾아다녔다. 대강 감을 잡은 뒤 gemma2-2b-it를 기본 모델로 사용해 파인튜닝을 진행했다. 처음에서 huggingface의 Transformer를 이용해서 했으나 특허 명세서 작성을 위해 필요한 학습 문장 길이가 너무 길어 입력 길이를 늘리니 메모리가 터지고 메모리가 터지지 않게 길이를 제한하려고 보니 중간에 짤리는 현상이 발생했다. 이걸 어떻게 해결할까 생각하다가 unsloth라는 것을 찾게 되었고 unsloth가 효율적으로 메모리를 관리하여 한정된 자원에서 더 큰 모델을 학습시킬 수 있다는 것을 보고 unsloth를 이용해 학습을 진행했다.

 unsloth를 가지고 기본 모델을 LoRA로 학습했다. unsloth를 이용해서 가지고 있는 GPU를 최대한 끌어내서 학습시킬 수 있는 설정을 찾아 학습을 시켰다. 그러나 대부분의 파라미터들은 추천하는 값들이나 unsloth가 자동으로 최적화를 해줘서 크게 만질 부분이 없었다. 

 학습을 시키고 난 후 모델을 배포하는 과정에서 문제가 있었다 adapter는 배포까지 문제가 없었는데 adapter를 기본 모델과 합치는 과정에서 문제가 있었다. 기본 모델이 4비트로 양자화된 모델을 가져와서 adpater를 학습했는데 배포할 떄는 16비트로 배포해서 모델 결과가 이상하게 나왔다. 그걸 인지하고 4비트로 다시 배포하려고 했는데 오류를 만났고 이 부분은 해결하지 못해 다른 방법으로 16비트 모델을 불러와 adapter를 합쳐 배포하니 문제가 없어졌다. 

 그래도 찜찜한 부분은 adapter를 4비트로 양자화된 모델에서 학습시켰는데 이걸 16비트 모델에 병합한다는 게 정확도에서 문제가 생길 가능성이다. 해당 부분은 조금 더 알아본 후 4비트 모델로 다시 배포할 생각이다.

 

어플리케이션

 모델을 학습하고 난 후 간단하게 streamlit을 어플리케이션을 만들어서 runpod에 배포까지 진행을 해봤다. 예전부터 GPU 서버를 이용해서 서비스를 만들어보고 싶었는데 이번 기회에 만들 수 있게 되어 좋은 경험이 되었다.

 

후기

 이번에 회사를 다니면서 부트캠프를 진행했는데 내가 원하는 수준의 퀄리티를 만들기 위해서는 많은 시간 투자와 지식이 필요한데 시간 관계상 이 부분을 만족하는 수준까지 채우지 못해서 아쉬웠다. 그러나 파인튜닝에 대한 전반적인 감을 잡았고 모델을 학습하고 배포하면서 발생하는 문제들이나 고려 사항들을 알 수 있었기 다음에 더 계획된 프로젝트로 단단하게 준비할 수 있는 밑거름이 되었다. 구글 부트 캠프를 통해 AI 엔지니어에 대한 꿈을 한 발자국 더 나아갈 수 있어서 좋았다. 이번에 진행한 파인튜닝은 계속 다듬어서 원하는 수준까지 끌어 올려볼 예정이다. 계속 공부해보자!

 

관련 링크

 

 

limecoding/gemma2-2b-it-finetuned-patent · Hugging Face

Uploaded model Developed by: limecoding License: apache-2.0 Finetuned from model : fine-tuned-model This gemma2 model was trained 2x faster with Unsloth and Huggingface's TRL library.

huggingface.co

 

 

limecoding/gemma2-2b-it-finetuned-patent-lora · Hugging Face

Uploaded model Developed by: limecoding License: apache-2.0 Finetuned from model : unsloth/gemma-2-2b-it-bnb-4bit This gemma2 model was trained 2x faster with Unsloth and Huggingface's TRL library.

huggingface.co

 

GitHub - LimeTree0/patent-attorney

Contribute to LimeTree0/patent-attorney development by creating an account on GitHub.

github.com

 

'인공지능' 카테고리의 다른 글

[AI] roboflow 사용법  (2) 2023.09.26