ChatGPT의 등장으로 대규모 언어 모델, LLM(Large Language Model)이 주목받으면서 LLM 관련 공모전과 사이드 프로젝트가 점차 많아지고 있다. LLM에 대한 관심은 DACON 기준 참여인원수를 통해서도 확인할 수 있다. 정형데이터를 이용한 회귀와 분류모델 관련 공모전에도 보통 1,000~1,500여 명 정도 참가하는데, 2024년 진행했던 '도배 하자 질의 응답 처리 : 한솔데코 시즌2 AI 경진대회'에는 1,454명이 참여하였고, '재정정보 AI 검색 알고리즘 경진대회'도 1,060명이 참여하였다. 이러한 수치는 새로운 기술에 대한 관심이 그만큼 뜨겁다는 것을 보여준다.
올해 LLM에 관심이 생겨 위에 언급된 두 공모전에 참가하게 되었는데, 그때마다 LLM을 Fine-tuning 할 수 있는 서버를 구축하고 실험하는 게 일이었다. 로컬에 빵빵한(?) GPU 서버가 이미 구축되어 있다면 실험을 할 때도 부담 없이 할 수 있고, 추가 비용도 들지 않겠지만 대부분의 사람들이 LLM을 학습할 만큼의 개인 서버를 구축해 놓기란 쉽지 않다.
첫 번째 공모전에서는 회사에 도움을 받아 회사 서버를 이용할 수 있게 도움을 받았지만, 두번째 공모전 때는 이전 회사를 퇴사한 후라 공모전을 시작하기에 앞서 서버 확보가 가장 큰 문제였다. 클라우드 GPU 서버를 회사에서 사용해 본 경험이 있는 필자는 그때 한 달에 천만 원씩 요금이 부과되었다는 얘기를 들은 적이 있어 비용에 대한 두려움도 컸다. 그래서 서버 사용에 있어 비용 부담이 되지 않는 LLM 모델을 fine-tining 할 수 있는 최소한의 사양을 기준으로 서버 환경을 구축하였다.
GCP와 Google Colab 환경이 접근성이 뛰어나고 금액 부담이 적었기에 공모전 팀원들은 각자의 기호에 따라 두 플랫폼을 나눠서 사용하였다. GCP의 경우, 90일 동안 $300 크레딧이 제공되어 무료로 구글 클라우드 환경에서 Compute Engine, Cloud Storage, BigQuery등을 사용할 수 있다. (Google Cloud 무료 프로그램) 구글 코랩의 경우 자비 부담이 있었기에 300 달러 무료 크레딧을 주고, 클라우드 환경을 경험해볼 수 있는 GCP를 선택하여 사용해보았다.
서버 구축 방법
1. 구글 로그인
구글 클라우드 페이지에서 무료로 시작하기 버튼을 누르면 구글 로그인 창이 뜬다. 갖고 있는 구글 아이디를 이용해 로그인을 진행한다.
2. 프로젝트 만들기
구글 클라우드 서비스는 프로젝트 단위로 금액이 청구되고 공동작업자 추가 및 삭제와 리소스 권한 관리가 이루어진다. 무료 계정이라도 여러 프로젝트를 만들 수 있기 때문에 여러 프로젝트를 진행 중이라면 프로젝트를 여러 개 만들어서 따로 관리가 가능하다. '프로젝트 만들거나 선택'을 누른 후, 프로젝트 명을 입력해 주면 된다. 만들기를 누르면 대시보드 화면이 나타난다.
3. VM 인스턴스 만들기
왼쪽 상탄 탐색 메뉴에서 Compute Engine > VM 인스턴스를 누른다. 제품 설치 페이지가 나오고, 설치 버튼을 누르면1분 정도 후에 VM 인스턴스 화면이 나타나게 된다.
인스턴스 설정하기
인스턴스 만들기 버튼을 누르면 어떻게 VM 인스턴스를 구성할 건지 설정하는 화면이 나타난다. 인스턴스 이름과 리전, 영역을 지정해준다. 여기서 리전은 낮은 CO2라고 명시된 리전을 선택하면 요금이 좀 더 저렴해진다. 모든 리전을 사용할 수는 있지만, 내가 사용하고 싶은 머신이 모든 리전에 있는 것은 아니기에 머신에 따라서 리전을 결정해야 할 수 있다. 리전에 없는 머신을 선택할 경우, 사용할 수 없다고 문구가 나타난다.
머신 구성은 각자가 원하는 서버의 사양에 맞춰서 구성을 자유롭게 할 수 있는데, 7B 모델 기준 Fine-tuning이 문제없이 가능하려면 NVIDIA A100 40GB 로는 설정을 해야 한다. 더 높은 사양을 원하면 GPU 수를 늘리거나 더 좋은 사양으로 변경해서 설정하면 되지만 그만큼 가격이 두 배, 세배 늘어난다. 오른쪽에 월별 예상 가격이 나타나므로 본인의 예산 안에서 사용하면 좋을 것 같다.
머신 유형을 선택한 후, 300 크레딧 안에서 사용하고 싶었기에 가용성 정책을 스팟으로 설정해 주었다. 스팟이란 쉽게 말해 리전에서 남는 리소스를 쓰는 거라고 보면 되는데 자원의 수요에 따라 중단될 수 있기 때문에 운영에서는 쓰면 안 된다. 하지만 스팟을 설정하면 비용을 50% 넘게 줄일 수 있기 때문에 실험 용도로 사용할 거라면 스팟으로 사용해도 충분하다고 생각한다.
그리고 부팅디스크의 설정도 기존 10GB로 설정되었지만, 모델 학습하고 저장하기에는 부족한 용량이라 변경이 필요하다. 변경 버튼을 통해 부팅디스크 설정 페이지에서 크기를 50GB로 늘려주었다. 이 또한 최소한으로 잡은거라 필요에 따라 크기를 넉넉하게 잡아 사용할 필요가 있다. 그리고 부팅디스크 안내메시지에 나와 있는 것처럼 부팅디스크의 이미지를 기본 이미지가 아니라 CUDA가 설치되어 있는 딥러닝 이미지로 전환하면 손쉽게 CUDA 버전이 안 맞아서 골머리를 앓지 않아도 된다.
만들기 버튼을 최종적으로 누르고 나면, 3~5분 정도 후 VM 인스턴스가 생성되는데 현재 GPU 서버는 따로 할당량을 요청해야 하기 때문에 제대로 생성이 완료되지 않고 아래와 같이 빨간색 느낌표가 뜨게 된다. 느낌표를 클릭하여 원하는 할당량을 설정하고 연락처를 작성하면 요청이 완료된다.
할당량 상향을 요청하면 메일로 2일 걸릴 것이다 라는 메일을 받는다. 하지만 1일에서 빠르다면 바로 요청이 승인되기도 한다. 상향 조정이 완료되면 완료되었다고도 메일로 안내되니 메일을 참고하면 좋을 것 같다.
4. Nvidia driver 설치
VM 인스턴스를 생성한 후, 마지막으로 해당 서버에서 nvidia-driver를 설치하면 LLM을 활용한 프로젝트를 진행하는 기본적인 환경은 만들어진다. 브라우저 창으로 해당 서버에 접근하게 되면 driver를 설치할 것이냐는 문구나 나타나고 'y'를 입력하면 바로 설치가 진행된다.
설치가 완료된 후, nvidia-smi 명령어를 입력하여 정상적으로 driver가 설치되었는지 해당 GPU 사양이 맞는지 확인해 본다.
지금까지 간단하게 GCP를 이용해 LLM 프로젝트를 할 수 있는 환경을 구축해보았다. 처음 클라우드 환경에서 진행해 본 것이라 나름 우여곡절이 있었기에 다른 분들이 같은 고민을 가지고 환경을 구축한다고 했을 때 이 글이 조금이나마 도움이 되길 바란다.
'MLOps' 카테고리의 다른 글
파이썬 프로젝트를 위한 가상환경 설정 1 : conda, venv (0) | 2025.01.19 |
---|