Hugging Face 모델 사용해
AWS SageMaker에 배포하기

안녕하세요. 요즘 AI 모델의 표준 저장소는 단연 Hugging Face(허깅페이스)입니다. Llama 3, BERT, Whisper 등 수많은 오픈소스 모델이 공유되고 있죠.

‍

하지만 이 모델을 실제 서비스에 적용(Serving) 하려면 고민이 시작됩니다.

‍

"EC2 띄워서, GPU 드라이버 깔고, PyTorch 버전 맞추고, API 서버(FastAPI) 짜고..."

생각만 해도 머리가 아픕니다.

‍

오늘은 AWS와 Hugging Face가 공식 협력하여 만든 **SageMaker Hugging Face DLC(Deep Learning Containers)**를 이용해, 인프라 관리 없이 코드 몇 줄로 AI 모델을 배포하는 방법을 알아보겠습니다.

‍

1. 아키텍처 및 원리

우리가 구축할 구조는 매우 단순합니다. 복잡한 서버 설정은 AWS가 다 해줍니다.

‍

Hugging Face Hub: 사용할 모델(예: 감정 분석 모델)을 선택합니다.

SageMaker SDK: 로컬 PC나 SageMaker Notebook에서 Python 코드를 실행합니다.

SageMaker Endpoint: AWS가 자동으로 인스턴스를 띄우고, 모델을 다운로드하여 실시간 추론(Inference) API를 생성합니다.

‍

2. 사전 준비 (Prerequisites)

실습을 위해 아래 두 가지가 준비되어 있어야 합니다.

‍

AWS 계정 및 IAM 권한: AmazonSageMakerFullAccess 권한이 있는 IAM 사용자 또는 역할.

Python 환경: boto3, sagemaker 라이브러리가 설치된 환경.

‍

3. 단계별 구축 가이드

오늘은 예제로 가장 대중적인 BERT 기반의 감정 분석 모델(distilbert-base-uncased-finetuned-sst-2-english)을 배포해 보겠습니다.

Step 1. IAM 역할(Role) 가져오기

SageMaker가 리소스를 생성할 수 있도록 권한을 가져옵니다. (로컬에서 실행 시 IAM User의 권한을 사용하거나, SageMaker Notebook일 경우 실행 역할을 가져옵니다.)

‍

import sagemaker import boto3 try: role = sagemaker.get_execution_role() except ValueError: iam = boto3.client('iam') # 로컬에서 실행 시 미리 만들어둔 Role ARN을 입력하세요 role = "arn:aws:iam::ACCOUNT_ID:role/service-role/AmazonSageMaker-ExecutionRole" print(f"Role ARN: {role}")

Step 2. Hugging Face 모델 정의

이제 어떤 모델을 쓸지 정의합니다. 여기서 놀라운 점은 모델 파일을 다운로드할 필요가 없다는 겁니다. Hugging Face Hub의 Model ID만 있으면 됩니다.

‍

from sagemaker.huggingface import HuggingFaceModel # 1. 사용할 모델 ID (Hugging Face Hub에 있는 이름 그대로) hub = { 'HF_MODEL_ID':'distilbert-base-uncased-finetuned-sst-2-english', 'HF_TASK':'text-classification' # 텍스트 분류 작업임을 명시 } # 2. Hugging Face Model 객체 생성 huggingface_model = HuggingFaceModel( transformers_version='4.26.0', # Transformers 라이브러리 버전 pytorch_version='1.13.1', # PyTorch 버전 py_version='py39', # Python 버전 env=hub, # 위에서 정의한 모델 설정 role=role # IAM 권한 )

Step 3. 배포 (Deploy)

이제 deploy() 메서드 한 번이면 AWS가 알아서 인스턴스를 프로비저닝하고 API를 띄웁니다. (약 3~5분 소요)

‍

# SageMaker 엔드포인트로 배포 predictor = huggingface_model.deploy( initial_instance_count=1, instance_type='ml.m5.xlarge' # CPU 인스턴스 (테스트용으로 저렴함) ) # Tip: 무거운 LLM 모델은 'ml.g5.2xlarge' 같은 GPU 인스턴스를 써야 합니다.

Step 4. 추론 테스트 (Inference)

배포가 완료되면, 바로 데이터를 넣어 테스트해 봅시다.

‍

# 긍정적인 문장 테스트 data = { "inputs": "I love using AWS SageMaker! It's so easy." } res = predictor.predict(data) print(res) # 결과 예시: [{'label': 'POSITIVE', 'score': 0.9998}]

‍

놀랍게도 REST API를 직접 구현하지 않았는데도, JSON 입력을 받아 결과를 반환하는 API 서버가 완성되었습니다!

‍

4. (필수) 리소스 정리

SageMaker 엔드포인트는 켜져 있는 시간만큼 비용이 청구됩니다. 실습이 끝나면 반드시 삭제해야 합니다.

‍

predictor.delete_endpoint()

print("Endpoint deleted!")

‍

5. 왜 이 방식을 써야 할까? (EC2 vs SageMaker)

마치며

과거에는 AI 모델 하나 띄우려면 인프라 엔지니어가 하루 종일 매달려야 했습니다. 하지만 이제는 SageMaker와 Hugging Face의 통합 덕분에, 코드 몇 줄로 최신 AI 모델을 내 서비스에 붙일 수 있게 되었습니다.

‍

지금 바로 여러분의 비즈니스 로직에 감정 분석이나 요약 모델을 붙여보세요. "AI 도입"이 생각보다 멀지 않습니다.

  • 아키텍처 및 원리

  • 사전 준비 (Prerequisites)

  • 단계별 구축 가이드

  • (필수) 리소스 정리

  • 왜 이 방식을 써야 할까? (EC2 vs SageMaker)

관련 키워드
클라우드
관련 키워드
클라우드
관련 콘텐츠