Google Cloud는 Hugging Face에서 제공하는 다양한 AI 모델들을 Cloud Run과 GKE라는 서비스를 통해 간편하게 사용할 수 있도록 지원합니다.
관련해 이번 포스팅에서는 Hugging Face의 TGI(Text Generation Inference)를 활용하는 방법을 알아보려 합니다.
*Hugging Face는 인공지능, 특히 자연어 처리(NLP) 분야에서 가장 유명한 오픈 소스 커뮤니티이자 플랫폼입니다. 마치 GitHub이 개발자들에게 코드를 공유하고 협업하는 공간이라면, Hugging Face는 AI 모델을 공유하고 활용하는 중심지라고 할 수 있습니다.
TGI (Text Generation Inference)란?
TGI는 텍스트 생성 추론 작업에 최적화된 독립적인 툴킷이자 서버입니다. TGI는 Hugging Face에서 제공하는 인기있는 오픈 소스 거대 언어 모델(Large Language Model, 이하 LLM)을 쉽고 효율적으로 실행할 수 있도록 돕습니다. 이를 활용하면 Llama, Falcon, BLOOM, GPT-NeoX 같은 다양한 LLM을 빠르게 배포하고, 고성능으로 텍스트를 생성하는 추론 작업을 수행할 수 있습니다.
TGI는 LLM 기반 추론 작업을 실행하는 데 필요한 복잡한 작업을 자동화하고 최적화하여, 사용자가 편리하게 모델을 활용할 수 있도록 합니다.실제로 TGI를 사용하면 Hugging Face의 모델을 직접 가져와 사용하는 것과 비교할 때 편의성이 높습니다. 이는 TGI의 특징에 잘 나타나 있습니다.
TGI는 멀티 GPU 지원과 양자화(Quantization) 기능을 통해 추론 속도를 높이고, 메모리 사용량을 최적화합니다. 이외에도 배치 처리, 로짓 워퍼(Logit Warping), 토큰 스트리밍과 같은 고급 기능도 제공합니다. 이런 특징은 사용자가 Hugging Face 모델을 직접 가져와 사용할 때 해야 하는 여러 사전 최적화 작업의 수고를 덜어 줍니다. 더불어 TGI를 통해 LLM을 Cloud Run이나 GKE 환경에서 사용하면 Google Cloud의 높은 성능과 가용성, 확장성을 통해 대규모 추론 작업도 성능 저하나 장애, 서비스 중단 걱정 없이 원활하게 처리할 수 있습니다.
Cloud Run에서 TGI 활용
먼저 Cloud Run 환경에서 TGI를 활용하여 Hugging Face 모델을 실행하려면, Google Cloud 콘솔에서 Cloud Run으로 이동해 Cloud Shell을 실행하고 프로젝트 ID와 환경 변수를 설정해야 합니다. 이후 Hugging Face Hub로부터 데이터를 가져오는 외부 트래픽을 처리하기 위해 Cloud NAT 라우터를 생성합니다. 다음으로 Hugging Face의 딥러닝 컨테이너 이미지를 사용해 서비스를 배포하며, GPU 및 메모리 리소스를 설정합니다. 또한, Hugging Face Hub에서 모델 다운로드 속도를 높이기 위해 HF_TRANSFER 설정을 활성화할 수 있습니다. 서비스 배포가 완료되면 Cloud Run 개발 프록시를 통해 로컬에서 TGI 서버를 실행하고, localhost를 통해 질문을 전송하며 모델 응답을 테스트합니다.
GKE에서 TGI 활용
다음으로 GKE 환경에서 TGI를 활용하여 Hugging Face 모델을 실행하려면, 먼저 Hugging Face Hub에서 액세스 토큰을 생성하고, GKE Autopilot이나 Standard 클러스터를 생성하며 프로젝트 ID와 배포 지역을 설정합니다. 배포 과정에서는 Hugging Face와 Google이 제공하는 이미지를 사용해 TGI 서버를 설정하고, 배포 매니페스트에서 GPU 수와 리소스 한도를 지정한 뒤 Hugging Face 토큰을 시크릿으로 추가해 모델 파일을 가져옵니다. kubectl apply 명령어를 사용해 TGI를 배포한 후 로그를 통해 상태를 모니터링합니다. 배포가 완료되면 kubectl port-forward 명령어로 서비스를 8080 같은 특정 포트로 연결하고, 모델에 요청을 보내 결과를 확인할 수 있습니다.
Cloud Run vs. GKE 여러 분의 선택은?
살펴본 바와 같이 TGI를 이용하면 고성능 추론을 위한 서비스 구현이 편리합니다. 그렇다면 Cloud Run과 GKE 중 어떤 환경에서 TGI를 이용하는 것이 좋을까요? Cloud Run과 GKE는 각각의 환경에서 적합한 시나리오가 다릅니다. Cloud Run은 간단한 워크로드나 서버리스 아키텍처를 선호하는 경우 적합하며, 요청량에 따라 자동으로 확장 또는 축소되기 때문에 비용 효율성이 뛰어납니다. 특히 사용하지 않을 때 인스턴스를 0으로 줄일 수 있어 리소스 관리가 용이합니다.
반면에 GKE는 복잡한 워크로드에서 사용자 정의가 필요한 경우, 여러 GPU를 활용해 대규모 모델을 분산 처리해야 하는 경우, 또는 클러스터 수준에서 세부적인 제어가 필요한 환경에 적합합니다. GKE는 유연성과 확장성이 뛰어나며, 복잡한 배포 및 관리가 가능하고, 높은 처리량이 요구되는 작업에도 효과적으로 대응할 수 있습니다.
정리하자면 간단한 작업은 Cloud Run을, 복잡하고 장기적인 작업은 GKE를 사용하는 것이 이상적입니다. Hugging Face와 Google Cloud의 연계를 통해 대규모 언어 모델을 효율적으로 배포하고 활용하는 방법이 궁금하다면 메가존소프트가 도움을 드리겠습니다. [ 문의하기 ]