최근 조직이 거대 언어 모델(LLM)을 미세 조정(Fine Tuning)하는 것에 관심을 보이고 있습니다. 파인튜닝은 LLM을 미세하게 조정하는 과정으로, 학습한 데이터를 그대로 따라가게 되면 현실적인 답과는 거리가 멀거나 활용하기 어려운 답변이 나올 수도 있기 때문에 쓰임새에 맞게 조정하는 작업 또한 반드시 필요합니다.
* LLM은 방대한 양의 텍스트 데이터를 학습하여 인간의 언어와 유사한 텍스트를 생성하고 이해할 수 있는 인공 신경망 기반의 언어 모델입니다. Gemini, ChatGPT 등 여러 생성형 AI 모델들은 LLM 기술을 기반으로 개발되었LLM 모델은 파라미터라는 연결 강도를 나타내는 수치를 통해 학습됩니다. 파라미터 개수가 많을수록 모델이 더 복잡하고 다양한 텍스트를 처리할 수 있도록 학습될 수 있습니다. 또한, 텍스트를 의미 있는 단위로 나누는 토큰과 특정 작업에 맞게 모델을 조정하는 파인튜닝 과정을 통해 LLM 모델의 성능을 더욱 향상시킬 수 있습니다.
LLM 파인튜닝을 계획할 때 가장 먼저 고려하는 것은 클라우드를 활용하는 것입니다. 구글의 모델 가든이나 유명 모델 리포지토리인 허깅페이스 같은 곳에서 원하는 모델을 가져와 클라우드의 컴퓨팅 자원과 플랫폼 서비스를 활용해 별다른 준비 없이 바로 프로젝트를 수행하고 결과를 확인할 수 있기 때문입니다.클라우드를 활용해 LLM을 미세 조정하고 배포할 경우 개념 검증(PoC)이나 프로토타입 개발에 있어 시간과 비용 측면에서 유리한 점이 많습니다. 그렇다면 어느 정도로 편리하게 작업을 할 수 있을까요? 이번 포스팅에서 데모를 통해 직접 알아보겠습니다. 참고로 본 포스팅에 소개한 데모 구현과 실행에 대한 상세 정보는 깃허브 페이지를 참조 바랍니다.
*데모 구현과 관련한 상세 정보 : https://github.com/gke-demos/next24-gemma-fine-tune-and-deploy
데모에 사용할 LLM
데모에 사용할 LLM은 구글이 공개한 LLM인 Gemma와 대화형 AI 및 챗봇 애플리케이션에 적합하게 사전 최적화를 거친 Dolly Fine-Tune입니다. 이 두 모델을 Google Cloud 환경에서 미세 조정하여 챗봇을 구현하는 방법을 단계별로 알아보겠습니다. 참고로 Gemma와 Dolly Fine-Tune 모델을 모두 사용해 챗봇을 구현하는 이유는 각각의 모델이 제공하는 기능이 다르기 때문입니다.
Gemma 모델은 텍스트 완성을 위해 사용되며, 사용자가 입력한 문장의 나머지를 예측하고 작성하는 데 유용합니다. 반면, Dolly Fine-Tune 모델은 대화형 AI 및 챗봇 애플리케이션에 적합하게 미세 조정되어 있어 자연스럽고 유의미한 대화를 이끌어낼 수 있습니다. 두 모델을 함께 사용함으로써 텍스트 완성과 대화 기능을 모두 제공하는 포괄적인 챗봇 서비스를 구현할 수 있습니다.
미세 조정 작업
가장 먼저 할 일은 Google Cloud Storage 버킷에 모델을 다운로드하는 것입니다. 그 다음 GPU 자원을 할당한 가상 머신을 설정합니다. 다음으로 데모에서 사용할 미세 조정에 적용할 데이터브릭스의 Dolly 데이터 세트를 준비합니다. 여기까지 마친 후 ‘kubectl apply -f fine-tune-job.yaml’ 명령을 실행하여 미세 조정을 합니다. 최적화 작업을 완료하면 체크포인트를 Google Cloud Storage로 전송합니다.
GKE 또는 Cloud Run을 활용해 LLM 배포
미세 조정을 마친 모델을 이제 GKE와 Cloud Run을 이용해 배포합니다. 먼저 알아볼 방법은 GKE를 활용하는 것입니다. 이 경우 먼저 Kubernetes 클러스터를 생성합니다. 이후 ‘kubectl apply -f 7-billion-using-tgi.yaml’ 명령을 실행하여 모델을 배포합니다. 다음으로 로드밸런서를 설정해 트래픽을 관리합니다.
다른 방법으로 Cloud Run을 이용할 수도 있습니다. 이 경우 먼저 Cloud Run에 새로운 서비스를 생성합니다. 이후 사용자가 상호 작용할 수 있는 프론트엔드 애플리케이션을 배포합니다. 그러고나서 서비스에 대한 접근 권한을 설정하여 누구나 사용할 수 있도록 합니다. 살펴본 두 배포 방식을 아키텍처로 도식화하면 다음과 같습니다.
위 아키텍처를 간단히 설명하자면 사용자는 브라우저로 Cloud Run에서 실행되는 LangChain에 접근합니다. 내부 로드 밸런서는 Kubernetes에 배포된 서비스로 연결되어 GKE 내부에서 실행되는 백엔드를 처리합니다. Gemma 모델은 텍스트 완성을 위해 쓰이고, Dolly Fine-Tune 모델은 대화용으로 미세 조정되어 채팅 대화에 사용합니다. 실제 데모를 돌리면 다음과 같은 챗봇 서비스를 실행할 수 있습니다.
이상으로 LLM을 미세 조정하고, 최적화한 모델을 GKE 및 Cloud Run을 활용해 배포해 서비스를 제공하는 과정을 살펴보았습니다. 더 자세한 내용과 코드는 깃허브 페이지를 참조하거나 메가존소프트에 문의 바랍니다.