LLM을 실행하려면 정말 모델을 다운로드하기만 하면 될까요? 답은 ‘아직 아닙니다’입니다. GPU 리소스를 어떻게 할당할지, 어떤 추론 엔진을 선택할지, 모델을 어떻게 저장할지뿐만 아니라 Hugging Face의 모델 라이선스와 Token도 배포 과정에서 장애물이 될 수 있습니다.

INFINITIX 의 AI-Stack 플랫폼은 기업이 GPU 컴퓨팅 자원을 통합적으로 스케줄링하고 AI 인프라를 관리할 수 있도록 지원합니다. 그중 빠른 컨테이너 서비스(RCS) 기능을 사용하면 환경을 다시 구축할 필요 없이 모델과 애플리케이션 서비스를 빠르게 배포할 수 있습니다.

이 글에서는 AI-Stack에서 RCS 기능과 vLLM을 사용해 google/gemma-3-1b-it 언어 모델을 배포하는 방법을 단계별로 보여드리겠습니다. 또한 Hugging Face의 제한 모델(Gated model)을 사용할 때 라이선스 승인과 Token 설정을 완료하는 방법도 실제로 보여드리겠습니다.

실습: RCS로 vLLM을 배포하여 Gemma-3-1B 실행하기 

관리자 플랫폼에서 스토리지 클러스터 설정하기

먼저 배포할 때마다 모델을 반복해서 다운로드하지 않도록 모델 파일을 저장할 스토리지 클러스터를 구성해야 합니다. AI-Stack 관리자 플랫폼에 로그인한 후 [설정] > [스토리지 클러스터] > [스토리지 클러스터 관리] 페이지로 이동하여 스토리지 클러스터를 새로 생성합니다.

스토리지 클러스터를 생성한 후 상태가 ‘활성화’로 표시되는지 확인합니다. 그러면 해당 스토리지 클러스터에 스토리지 공간을 생성하여 이후 vLLM 배포 시 사용할 수 있습니다.

다음으로 AI-Stack 사용자 플랫폼에 로그인합니다. 왼쪽 메뉴에서 ‘머신러닝 프로젝트’ > ‘프로젝트 목록’으로 이동한 후 모델 배포에 사용할 프로젝트를 선택합니다. 이 예시에서는 Project 1을 선택합니다.

RCS 컨테이너 생성하기

이제 ‘빠른 컨테이너 서비스’ > ‘애플리케이션 배포’로 이동하여 다음 항목을 설정합니다.

  1. ‘이름’: 사용자가 직접 지정합니다. 이 예시에서는 demo를 입력합니다.
  2. ‘이전 버전 기록 상한’: 나중에 필요할 때 복원할 수 있도록 보관할 버전 수를 결정합니다.
  3. ‘컨테이너 세트 수’: 외부에 서비스를 제공하기 위해 동시에 실행할 컨테이너 복제본 수를 설정합니다. 수량이 많을수록 더 많은 동시 요청을 처리할 수 있습니다. 이번에는 기능 시연이므로 1로 설정하면 됩니다.

설정을 완료한 후 ‘컨테이너 추가’를 클릭합니다.

이제 컨테이너를 추가할 수 있습니다. [컨테이너 추가]를 클릭하고 [이름]을 지정한 후 [이미지를 선택하세요]를 클릭합니다.

이미지 선택 페이지에서 ‘수동 다운로드’를 선택하고 ‘이미지 경로’에 vLLM 공식 이미지를 입력합니다. 이 예시에서는 다음 이미지를 사용합니다.
vllm/vllm-openai:v0.26.0-cu129-ubuntu2404

이미지를 선택한 후 컨테이너 추가 설정 페이지로 돌아갑니다.
다음으로 컨테이너의 기본 리소스를 설정합니다.

  1. ‘사양’: 모델 크기에 따라 적절한 GPU 리소스를 선택합니다. 먼저 모델 자체에 필요한 GPU 메모리를 추산한 후 vLLM 연산에 사용할 공간을 추가로 확보할 수 있습니다. 예를 들어 모델에 약 6GB의 GPU 메모리가 필요한 경우, 일정한 여유 공간을 확보하기 위해 8~9GB GPU 사양을 선택하는 것이 좋습니다.
  2. ‘포트’: 기본 포트 번호인 8000을 입력합니다. vLLM은 기본적으로 이 포트를 통해 API 서비스를 제공합니다.

Hugging Face 모델 접근 권한 얻기

다음은 이번 배포에서 비교적 특별한 부분입니다. gemma-3-1b-it은 제한 모델이므로 먼저 모델 접근 권한을 얻어야 합니다. Hugging Face 계정에 로그인한 후 새 탭을 열어 배포하려는 모델 페이지로 이동합니다. 여기서는 huggingface.co/google/gemma-3-1b-it을 사용하며, ‘Acknowledge license’를 클릭하여 라이선스 승인을 완료합니다.

이 단계는 매우 중요합니다. 모델 라이선스 승인을 완료해야만 계정에 해당 모델의 접근 권한이 부여되기 때문입니다.

(그림 1: 주소창에 원하는 모델의 URL 입력)

모델 접근 권한을 얻은 후에는 Hugging Face Token을 생성해야 합니다. 이후 생성할 vLLM 컨테이너는 이 Token을 사용하여 신원을 인증하고 모델을 다운로드할 수 있습니다. (https://huggingface.co/settings/tokens 페이지로 이동한 후) ‘Create new token’을 클릭합니다.

Token을 생성할 때는 주로 다음 두 항목을 설정해야 합니다.

  • Token name: 사용자가 직접 지정합니다. 이 예시에서는 demo를 입력합니다.
  • Token Type: vLLM이 모델을 다운로드하는 용도로만 사용한다면 Read를 선택하면 됩니다.

설정을 완료한 후 ‘Create Token’을 클릭하면 시스템에서 hf_로 시작하는 Token 문자열을 생성합니다.

여기서 특별히 주의해야 할 점이 있습니다. Token의 전체 내용은 생성할 때 단 한 번만 표시됩니다. 따라서 이 단계에서 반드시 옆에 있는 복사 버튼을 즉시 클릭해야 합니다.

Token 복사를 완료한 후 AI-Stack의 컨테이너 설정 페이지로 돌아가 ‘환경 변수’를 찾은 다음 환경 변수를 하나 추가합니다.

  • Key: HF_TOKEN(Hugging Face 라이브러리가 기본적으로 읽는 환경 변수 이름)
  • Value: 앞에서 복사한 hf_로 시작하는 Token을 붙여 넣습니다.

모델 스토리지 공간 마운트하기

다음으로 ‘마운트’ > ‘볼륨 마운트’를 클릭합니다.

앞에서 생성한 스토리지 볼륨을 선택합니다. ‘마운트 경로’에는 다음을 입력합니다.
/root/.cache/huggingface

Hugging Face의 캐시 디렉터리를 스토리지 공간에 마운트하면 다운로드한 모델을 보관할 수 있습니다. 이후 컨테이너를 다시 생성하거나 실행할 때마다 모델을 다시 다운로드할 필요가 없습니다.

vLLM 실행 명령 설정하기

다음으로 컨테이너 추가 페이지로 돌아가 ‘실행 명령’을 찾은 후 다음을 입력합니다.

vllm serve --model google/gemma-3-1b-it --served-model-name gemma3-1b --gpu-memory-utilization 0.7 --enforce-eager

이 명령은 vLLM을 실행하고 지정된 모델을 불러옵니다. 각 항목의 의미는 다음과 같습니다.

  • –model google/gemma-3-1b-it: –model은 불러올 모델을 지정하는 데 사용하며, 뒤의 google/gemma-3-1b-it은 Hugging Face에 등록된 모델 이름입니다.
  • –served-model-name gemma3-1b: API에서 외부에 제공할 모델 이름을 설정합니다. 이후 API를 호출할 때 gemma3-1b을 사용할 수 있습니다.
  • –gpu-memory-utilization 0.95: vLLM이 사용할 GPU 메모리 비율을 설정합니다. 이 예시에서는 95%로 설정합니다.

공유 메모리 설정하기

다음으로 [공유 메모리] 항목에서 모델과 추론 요구 사항에 따라 공유 메모리를 활성화할지 결정합니다. 이 예시에서 사용하는 google/gemma-3-1b-it 모델은 비교적 작으므로 별도로 구성할 필요가 없습니다. 더 큰 모델을 사용하는 경우 실제 요구 사항에 따라 늘릴 수 있습니다.

위의 설정을 모두 완료한 후 오른쪽의 ‘배포’ 버튼을 클릭하면 vLLM 컨테이너가 정식으로 실행됩니다.

vLLM이 성공적으로 실행되었는지 확인하기

배포를 완료한 후 왼쪽의 ‘Pod’ 메뉴를 클릭하고 상태가 Running으로 변경될 때까지 기다립니다. Pod가 정상적으로 실행되면 해당 Pod를 선택하고 ‘컨테이너’를 선택한 다음, 해당 컨테이너를 선택하고 ‘로그’를 클릭합니다.

로그 화면에서 vLLM 컨테이너의 현재 실행 상태를 확인할 수 있습니다. 로그 내용을 계속 새로 고침하다가 다음 문구가 표시되면 됩니다. Application startup complete.

이 문구가 표시되면 vLLM이 성공적으로 실행되었고 모델 로딩도 완료되었다는 의미입니다. 이제 API가 정상적으로 추론 서비스를 제공하는지 추가로 테스트할 수 있습니다.

서비스 설정

vLLM 컨테이너가 성공적으로 실행된 후에는 다른 애플리케이션에서 해당 모델을 호출할 수 있도록 외부에 서비스 포트를 개방해야 합니다. 다음으로 「서비스」 기능에서 외부에서 접근할 수 있는 API Endpoint를 설정합니다.

「서비스」 페이지로 이동하여 “서비스 추가”를 클릭한 후, 다음 항목을 순서대로 설정합니다.

  1. 「이름」: 자유롭게 지정할 수 있으며, 향후 관리 및 식별이 쉽도록 앞서 배포한 컨테이너 이름과 동일하게 설정하는 것을 권장합니다.
  2. 「유형」: NodePort를 선택합니다.
  3. 「Port」: 8000을 입력합니다. 이는 vLLM이 기본적으로 API 서비스를 제공하는 Port입니다.
  4. 「프로토콜」: TCP를 선택합니다.

설정을 완료한 후 ”추가“를 클릭하면 서비스 생성이 완료됩니다.

추가가 완료되면 해당 서비스를 클릭하여 연결된 Endpoint 주소를 확인할 수 있습니다. 이 주소를 복사하여 Agent 애플리케이션과 연동하면, Gemma-3-1B 모델을 외부에서 호출하여 추론 서비스를 이용할 수 있습니다!

이상으로 AI-Stack에서 RCS를 통해 모델을 배포하는 과정을 살펴보았습니다. 이번에는 vLLM 컨테이너를 생성하고 GPU와 스토리지 공간을 구성하는 방법뿐만 아니라 Gated model의 모델 라이선스 승인과 Token 설정도 실제로 살펴보았습니다. AI-Stack의 RCS를 활용하면 개발자는 필요한 LLM 모델을 더욱 유연하게 배포하고 전용 AI 추론 서비스를 빠르게 구축할 수 있습니다.