[워크삽] 워크삽 아키텍처
자! 이제 본격적으로 워크삽을 시작하겠다. 이 워크삽은 AWS Trainium/Inferentia 인스턴스와 Amazon EKS의 vLLM을 사용해 Large Language Model을 엔터프라이즈 규모로 배포하는 방법을 보여준다. 이 아키텍처는 AWS AI Chip과 고급 최적화 기법을 활용해 비용 효율적인 고성능 LLM 추론을 제공한다.
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. 워크숍 구성 흐름
- CloudFormation Stack을 배포해 기본 인프라를 생성한다.
- 사전 설치된 도구(
kubectl,eksctl, Docker)를 포함한 EC2 인스턴스를 프로비저닝한다. - Trainium Node Group을 포함한 EKS 클러스터를 생성한다.
- Neuron Device Plugin과 Scheduler Extension을 설치한다.
- 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을 사용한다.
댓글남기기