3 분 소요

자! 이제 본격적으로 워크삽을 시작하겠다. 이 워크삽은 AWS Trainium/Inferentia 인스턴스와 Amazon EKS의 vLLM을 사용해 Large Language Model을 엔터프라이즈 규모로 배포하는 방법을 보여준다. 이 아키텍처는 AWS AI Chip과 고급 최적화 기법을 활용해 비용 효율적인 고성능 LLM 추론을 제공한다.

1. 아키텍처 다이어그램

Figure 1. 워크숍 아키텍처 Figure 1. 워크숍 아키텍처

2. 핵심 아키텍처 구성 요소

2-1. 워크숍 인프라 계층

  • EC2 워크숍 인스턴스: 개발 환경으로 사용하는 t3.2xlarge Ubuntu 22.04 인스턴스다.
  • VPC 구성: Public Subnet(10.0.1.0/24)과 Internet Gateway를 포함하는 Custom VPC(10.0.0.0/16)다.
  • Security Group: 전체 Outbound 연결과 SSH(22), HTTP(8000, 8080) 접근을 허용한다.
  • IAM Role: EKS, ECR, S3 및 CloudFormation 작업에 필요한 포괄적인 권한을 제공한다.

2.2 Amazon EKS 클러스터 아키텍처

  • Control Plane: VPC CNI와 OIDC가 활성화된 Kubernetes 1.33을 사용한다.
  • Managed Node Group:
    • 인스턴스 유형: trn1.2xlarge(AWS Trainium 인스턴스)
    • AMI: ami-08695d32a8bb6c5a5(Neuron 최적화)
    • 스토리지: 100GB GP2 Volume
    • 네트워킹: Trainium을 지원하는 가용 영역에 Multi-AZ로 배포한다.

2.3 AWS Trainium/Inferentia 통합

  • Neuron Device Plugin: Trainium 장치를 할당 가능한 리소스로 노출하는 Kubernetes DaemonSet이다.
  • Neuron Scheduler Extension: Neuron 워크로드에 맞게 Pod 스케줄링을 최적화한다.
  • NeuronCore 할당: 각 trn1.2xlarge는 여러 NeuronCore-v2 유닛을 제공한다. 성능은 380 INT8 TOPS와 190 FP16/BF16 TFLOPS다.
  • Device Memory: 칩당 32GB High-Bandwidth Memory와 820GB/s 대역폭을 제공한다.

2.4 vLLM 배포 아키텍처

1) 컨테이너 전략

  • Base Image: public.ecr.aws/neuron/pytorch-inference-vllm-neuronx:0.9.1-neuronx-py310-sdk2.25.0-ubuntu22.04
  • Init Container 패턴: Main Container가 시작되기 전에 모델을 컴파일하고 캐싱한다.
  • 리소스 할당:
    • NeuronCore: 컨테이너당 1~2개
    • Ephemeral Storage: 50GB
    • Tensor Parallelism: 2-Way 분산

2) 모델 관리

  • 대상 모델: TinyLlama-1.1B-Chat-v1.0(데모 모델)
  • Compilation Cache: 컴파일된 Neuron Artifact를 위해 S3 기반 영구 스토리지를 사용한다.

2.5 스토리지 및 캐싱 아키텍처

1) S3 모델 캐시

  • Bucket: ai-infra-summit-vllm-models-cache-{ACCOUNT_ID}
  • 목적: 컴파일된 모델 Artifact를 영구적으로 저장한다.
  • 접근 패턴: 모델 배포를 가속하기 위해 Write-Once, Read-Many 방식을 사용한다.

2) Kubernetes 스토리지

  • S3 CSI Driver: Mountpoint for Amazon S3 통합에 사용한다.
  • Persistent Volume: ReadWriteMany 접근 방식을 지원하는 100GB 용량을 제공한다.
  • Local Caching: 모델 컴파일 작업 공간에 Ephemeral Storage를 사용한다.

2.6 네트워크 및 Ingress 아키텍처

1) Service 계층

  • Kubernetes Service: 8080 포트에서 vLLM API를 노출하는 LoadBalancer 유형을 사용한다.
  • 내부 접근: Pod 간 통신에 ClusterIP를 사용한다.
  • 외부 접근: Public API Endpoint에 AWS Load Balancer를 사용한다.

2) Ingress 관리

  • NGINX Ingress Controller: 고급 트래픽 라우팅과 SSL Termination을 제공한다.
  • 경로 기반 라우팅: / Prefix를 vLLM Service로 라우팅한다.
  • Load Balancing: 요청을 여러 vLLM Pod에 자동으로 분산한다.

2.7 최적화 기술

1) vLLM 기능

  • Continuous Batching: 처리량을 높이기 위해 요청을 동적으로 배치한다.
  • OpenAI API 호환성: 쉽게 통합할 수 있는 표준 API Interface를 제공한다.

2) NeuronX Distributed(NxD) 통합

  • Tensor Parallelism: 모델을 여러 NeuronCore에 분산한다.
  • Pipeline Parallelism: 대규모 모델을 지원하기 위해 계층을 분산한다.
  • Memory Pooling: 여러 Trainium Chip에서 메모리를 효율적으로 사용한다.
  • Speculative Decoding: 토큰 생성 성능을 최적화한다.

2.8 모니터링 및 관측 가능성

1) Kubernetes 기본 기능

  • 리소스 모니터링: CPU, 메모리 및 Neuron 장치 활용률을 모니터링한다.
  • Pod 상태 점검: vLLM Container에 Readiness Probe와 Liveness Probe를 적용한다.
  • 클러스터 Metric: Node 및 Pod 수준의 성능을 모니터링한다.

3. 사용되는 주요 AWS 서비스

1) 핵심 컴퓨팅 및 컨테이너 서비스

  • Amazon EKS: 컨테이너 오케스트레이션을 위한 관리형 Kubernetes 서비스다.
  • Amazon EC2: ML 가속에 Trainium 인스턴스(trn1.2xlarge)를 사용한다.
  • Amazon ECR: vLLM 및 Neuron 최적화 Image를 저장하는 Container Registry다.

2) 스토리지 및 데이터 서비스

  • Amazon S3: 모델 Artifact 캐싱과 영구 스토리지에 사용한다.
  • EBS: Node Group 및 워크숍 인스턴스에 Block Storage를 제공한다.

3) 네트워킹 및 보안

  • VPC: Custom CIDR Block을 사용하는 격리된 네트워크 환경을 제공한다.
  • Internet Gateway: Public Internet 연결을 제공한다.
  • Security Group: 세분화된 네트워크 접근 제어를 제공한다.
  • IAM: 포괄적인 Policy 관리와 Role 기반 접근 제어를 제공한다.

4) 머신러닝 인프라

  • AWS Trainium: ML 학습과 추론을 위한 AWS AI Chip이다.
  • AWS Neuron SDK: Trainium/Inferentia 최적화를 위한 소프트웨어 Stack이다.
  • Neuron Runtime: 장치 관리를 위한 Low-Level Driver와 Runtime이다.

4. 배포 패턴

4-1. 워크숍 구성 흐름

  1. CloudFormation Stack을 배포해 기본 인프라를 생성한다.
  2. 사전 설치된 도구(kubectl, eksctl, Docker)를 포함한 EC2 인스턴스를 프로비저닝한다.
  3. Trainium Node Group을 포함한 EKS 클러스터를 생성한다.
  4. Neuron Device Plugin과 Scheduler Extension을 설치한다.
  5. Init Container 패턴을 사용해 vLLM을 배포한다.

4-2. 확장 아키텍처

  • Horizontal Pod Autoscaler: CPU 및 메모리 Metric을 기반으로 자동 확장한다.
  • Node Group 확장: 동적 Capacity 관리를 위해 EC2 Auto Scaling을 사용한다.
  • Multi-Model Serving: 클러스터당 여러 LLM 배포를 지원한다.

4-3. 프로덕션 고려 사항

  • 고가용성: 자동 Failover를 지원하는 Multi-AZ 배포를 사용한다.
  • 보안: IAM Role, Security Group 및 암호화된 Storage를 사용한다.
  • 비용 최적화: Spot Instance를 지원하고 리소스를 효율적으로 활용한다.
  • 모니터링: CloudWatch와 통합된 포괄적인 Observability Stack을 사용한다.

5. 참고자료

댓글남기기