본문으로 건너뛰기

AI on EKS 추론 차트

AI on EKS 추론 차트는 GPU와 AWS Neuron(Inferentia/Trainium) 하드웨어 모두에서 AI/ML 추론 워크로드를 배포하기 위한 간소화된 Helm 기반 접근 방식을 제공합니다. 이 차트는 여러 배포 구성을 지원하며 인기 있는 모델을 위한 미리 구성된 값이 포함되어 있습니다.

고급 사용법

자세한 구성 옵션, 고급 배포 시나리오 및 포괄적인 파라미터 문서는 전체 README를 참조하세요.

개요​

추론 차트는 여러 배포 프레임워크를 지원합니다:

  • VLLM - 빠른 시작이 가능한 단일 노드 추론
  • Ray-VLLM - 자동 스케일링 기능이 있는 분산 추론
  • Triton-VLLM - NVIDIA 추론 서버
  • AIBrix - AIBrix 전용 구성이 포함된 VLLM
  • LeaderWorkerSet-VLLM - 대규모 모델을 위한 멀티 노드 추론
  • Diffusers - 이미지 생성을 위한 Hugging Face Diffusers
  • S3 Model Copy - Hugging Face에서 S3 스토리지로 모델 다운로드

GPU와 AWS Neuron(Inferentia/Trainium) 가속기 모두 이러한 프레임워크에서 지원됩니다.

사전 요구 사항​

추론 차트를 배포하기 전에 다음 사항을 확인하세요:

  • GPU 또는 AWS Neuron 노드가 있는 Amazon EKS 클러스터(빠른 시작을 위한 추론 준비 클러스터)
  • Helm 3.0+
  • GPU 배포의 경우: NVIDIA 디바이스 플러그인 설치됨
  • Neuron 배포의 경우: AWS Neuron 디바이스 플러그인 설치됨
  • LeaderWorkerSet 배포의 경우: LeaderWorkerSet CRD 설치됨
  • Hugging Face Hub 토큰(hf-token이라는 Kubernetes 시크릿으로 저장됨)
  • Ray의 경우: KubeRay 인프라
  • AIBrix의 경우: AIBrix 인프라
  • S3 Model Copy의 경우: S3 쓰기 권한이 있는 서비스 계정

빠른 시작​

1. Hugging Face 토큰 시크릿 생성​

Hugging Face 토큰으로 Kubernetes 시크릿을 생성하세요:

kubectl create secret generic hf-token --from-literal=token=your_huggingface_token

2. 미리 구성된 모델 배포​

사용 가능한 미리 구성된 모델 중 선택하여 배포하세요:

경고

이러한 배포에는 GPU/Neuron 리소스가 필요하며, 활성화되어 있어야 하고 CPU 전용 인스턴스보다 비용이 더 많이 듭니다.

# 차트 저장소 추가
helm repo add ai-on-eks https://awslabs.github.io/ai-on-eks-charts/
helm repo update

# GPU에서 vLLM으로 Qwen 3 1.7B 배포
helm install qwen3-inference ai-on-eks/inference-charts \
--values https://raw.githubusercontent.com/awslabs/ai-on-eks-charts/refs/heads/main/charts/inference-charts/values-qwen3-1.7b-vllm.yaml

# GPU에서 Ray-vLLM으로 DeepSeek R1 Distill 배포
helm install deepseek-inference ai-on-eks/inference-charts \
--values https://raw.githubusercontent.com/awslabs/ai-on-eks-charts/refs/heads/main/charts/inference-charts/values-deepseek-r1-distill-llama-8b-ray-vllm-gpu.yaml

지원 모델​

추론 차트에는 다양한 카테고리의 인기 모델을 위한 미리 구성된 값 파일이 포함되어 있습니다:

언어 모델​

  • DeepSeek R1 Distill Llama 8B - 고급 추론 모델
  • Llama 3.2 1B - 경량 언어 모델
  • Llama 4 Scout 17B - 중간 크기 언어 모델
  • Mistral Small 24B - 효율적인 대규모 언어 모델
  • GPT OSS 20B - 오픈소스 GPT 변형
  • Qwen3 1.7B - 컴팩트한 다국어 언어 모델

Diffusion 모델​

  • FLUX.1 Schnell - 빠른 텍스트-이미지 생성
  • Stable Diffusion XL - 고품질 이미지 생성
  • Stable Diffusion 3.5 - 향상된 기능이 있는 최신 SD 모델
  • Kolors - 예술적 이미지 생성
  • OmniGen - 멀티모달 생성

Neuron 최적화 모델​

  • Llama 2 13B - AWS Inferentia에 최적화됨
  • Llama 3 70B - Inferentia에서의 대규모 모델
  • Llama 3.1 8B - 효율적인 Inferentia 배포

각 모델에는 다양한 프레임워크(VLLM, Ray-VLLM, Triton-VLLM 등)를 위한 최적화된 구성이 포함되어 있습니다.

배포 예제​

언어 모델 배포​

# 차트 저장소 추가
helm repo add ai-on-eks https://awslabs.github.io/ai-on-eks-charts/
helm repo update

# GPU에서 vLLM으로 Qwen 3 1.7B 배포
helm install qwen3-inference ai-on-eks/inference-charts \
--values https://raw.githubusercontent.com/awslabs/ai-on-eks-charts/refs/heads/main/charts/inference-charts/values-qwen3-1.7b-vllm.yaml

# GPU에서 Ray-vLLM으로 DeepSeek R1 Distill 배포
helm install deepseek-inference ai-on-eks/inference-charts \
--values https://raw.githubusercontent.com/awslabs/ai-on-eks-charts/refs/heads/main/charts/inference-charts/values-deepseek-r1-distill-llama-8b-ray-vllm-gpu.yaml

# LeaderWorkerSet-VLLM으로 Llama 4 Scout 17B 배포
helm install llama4-lws ai-on-eks/inference-charts \
--values https://raw.githubusercontent.com/awslabs/ai-on-eks-charts/refs/heads/main/charts/inference-charts/values-llama-4-scout-17b-lws-vllm.yaml

Diffusion 모델 배포​

# 이미지 생성을 위한 FLUX.1 Schnell 배포
helm install flux-diffusers ai-on-eks/inference-charts \
--values https://raw.githubusercontent.com/awslabs/ai-on-eks-charts/refs/heads/main/charts/inference-charts/values-flux-1-diffusers.yaml

# Stable Diffusion XL 배포
helm install sdxl-diffusers ai-on-eks/inference-charts \
--values https://raw.githubusercontent.com/awslabs/ai-on-eks-charts/refs/heads/main/charts/inference-charts/values-stable-diffusion-xl-base-1-diffusers.yaml

Neuron 배포​

# Inferentia에서 Llama 3.1 8B 배포
helm install llama31-neuron ai-on-eks/inference-charts \
--values https://raw.githubusercontent.com/awslabs/ai-on-eks-charts/refs/heads/main/charts/inference-charts/values-llama-31-8b-vllm-neuron.yaml

# Inferentia에서 Ray-VLLM으로 Llama 3 70B 배포
helm install llama3-70b-neuron ai-on-eks/inference-charts \
--values https://raw.githubusercontent.com/awslabs/ai-on-eks-charts/refs/heads/main/charts/inference-charts/values-llama-3-70b-ray-vllm-neuron.yaml

S3 Model Copy​

S3 Model Copy 기능을 사용하면 Hugging Face Hub에서 모델을 다운로드하여 S3 스토리지에 업로드할 수 있습니다. 이는 다음과 같은 경우에 유용합니다:

  • 더 빠른 배포를 위해 S3에 모델 사전 준비
  • 프라이빗 S3 버킷에 모델 저장소 생성
  • AWS 내부 네트워크를 활용하여 추론 시작 시간 단축
# Hugging Face에서 S3로 Llama 3 8B 모델 복사
helm install s3-copy-llama3 ai-on-eks/inference-charts \
--values https://raw.githubusercontent.com/awslabs/ai-on-eks-charts/refs/heads/main/charts/inference-charts/values-s3-copy-llama3-8b.yaml

커스텀 S3 Model Copy​

S3에 모든 모델을 복사하기 위한 커스텀 값 파일을 생성하세요:

s3ModelCopy:
namespace: default
model: deepseek-ai/DeepSeek-R1
s3Path: my-models-bucket/ # 모델은 s3://my-models-bucket/deepseek-ai/DeepSeek-R1로 복사됩니다

serviceAccountName: s3-copy-service-account # S3 쓰기 권한이 있는 서비스 계정

S3 복사 작업 배포:

helm install custom-s3-copy ai-on-eks/inference-charts \
--values custom-s3-copy-values.yaml
S3 권한

서비스 계정에는 대상 S3 버킷에 쓰기 위한 IAM 권한이 필요합니다. 서비스 계정에 S3 권한을 부여하려면 Pod Identity 사용을 고려하세요.

구성​

주요 파라미터​

파라미터설명기본값
inference.accelerator가속기 유형(gpu 또는 neuron)gpu
inference.framework프레임워크(vllm, ray-vllm, triton-vllm, aibrix 등)vllm
inference.serviceName추론 서비스 이름inference
inference.modelServer.deployment.replicas레플리카 수1
modelHugging Face Hub의 모델 IDNousResearch/Llama-3.2-1B
modelParameters.gpuMemoryUtilizationGPU 메모리 활용도0.8
modelParameters.maxModelLen최대 모델 시퀀스 길이8192
modelParameters.tensorParallelSize텐서 병렬 크기1
modelParameters.pipelineParallelSize파이프라인 병렬 크기1
s3ModelCopy.namespaceS3 모델 복사 작업의 네임스페이스default
s3ModelCopy.modelS3에 복사할 Hugging Face 모델 ID설정 안 됨
s3ModelCopy.s3Path모델을 업로드할 S3 경로설정 안 됨
serviceAccountName서비스 계정 이름default

커스텀 구성​

커스텀 값 파일을 생성하세요:

inference:
accelerator: gpu # 또는 neuron
framework: vllm # vllm, ray-vllm, triton-vllm, aibrix, lws-vllm, diffusers
serviceName: my-inference
modelServer:
deployment:
replicas: 1
instanceType: g5.2xlarge

model: "NousResearch/Llama-3.2-1B"
modelParameters:
gpuMemoryUtilization: 0.8
maxModelLen: 8192
tensorParallelSize: 1

커스텀 값으로 배포:

helm install my-inference ai-on-eks/inference-charts \
--values custom-values.yaml

API 사용법​

배포된 서비스는 프레임워크에 따라 다른 API 엔드포인트를 노출합니다:

VLLM/Ray-VLLM​

  • /v1/models - 사용 가능한 모델 목록
  • /v1/chat/completions - 채팅 완성 API
  • /v1/completions - 텍스트 완성 API
  • /metrics - Prometheus 메트릭

Triton-VLLM​

  • /v2/models - 사용 가능한 모델 목록
  • /v2/models/vllm_model/generate - 모델 추론
  • /v2/health/ready - 헬스 체크

Diffusers​

  • /v1/generations - 이미지 생성 API

사용 예제​

포트 포워딩으로 서비스에 접근:

kubectl port-forward svc/<service-name> 8000

API 테스트:

# 채팅 완성 (VLLM/Ray-VLLM)
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "your-model-name",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 100
}'

# 이미지 생성 (Diffusers)
curl -X POST http://localhost:8000/v1/generations \
-H 'Content-Type: application/json' \
-d '{"prompt": "A beautiful sunset over mountains"}'

문제 해결​

일반적인 문제​

  1. 파드가 Pending 상태에서 멈춤

    • GPU/Neuron 노드가 사용 가능한지 확인
    • 리소스 요청이 사용 가능한 하드웨어와 일치하는지 확인
    • LeaderWorkerSet 배포의 경우: LeaderWorkerSet CRD가 설치되어 있는지 확인
  2. 모델 다운로드 실패

    • Hugging Face 토큰이 hf-token 시크릿으로 올바르게 구성되어 있는지 확인
    • Hugging Face Hub에 대한 네트워크 연결 확인
    • 모델 ID가 정확하고 접근 가능한지 확인
  3. 메모리 부족 오류

    • gpuMemoryUtilization 파라미터 조정(0.8에서 0.7로 줄여보기)
    • 더 큰 모델의 경우 텐서 병렬화 사용 고려
    • 대규모 모델의 경우 여러 GPU를 사용하는 LeaderWorkerSet 또는 Ray 배포 사용
  4. Ray 배포 문제

    • KubeRay 인프라가 설치되어 있는지 확인
    • Ray 클러스터 상태 및 워커 연결 확인
    • Ray 버전 호환성 확인
  5. Triton 배포 문제

    • Triton 서버 로그에서 모델 로딩 오류 확인
    • 모델 저장소 구성 확인
    • 적절한 헬스 체크 엔드포인트에 접근 가능한지 확인

로그​

프레임워크에 따른 배포 로그 확인:

로그 확인​

# VLLM 배포
kubectl logs -l app.kubernetes.io/component=<service-name>

# Ray 배포
kubectl logs -l ray.io/node-type=head
kubectl logs -l ray.io/node-type=worker

# LeaderWorkerSet 배포
kubectl logs -l leaderworkerset.sigs.k8s.io/role=leader

다음 단계​