EKS에 ML 모델을 배포하려면 GPU 또는 Neuron 인스턴스에 대한 액세스가 필요합니다. 배포가 작동하지 않는 경우 이러한 리소스에 대한 액세스가 누락되어 있기 때문인 경우가 많습니다. 또한 일부 배포 패턴은 Karpenter 오토스케일링 및 정적 노드 그룹에 의존합니다. 노드가 초기화되지 않으면 Karpenter 또는 노드 그룹의 로그를 확인하여 문제를 해결하십시오.
이 예제 블루프린트는 EKS 클러스터에서 워커 노드로 실행되는 Inferentia2 인스턴스에 stable-diffusion-xl-base-1-0 모델을 배포합니다. 모델은 RayServe를 사용하여 서빙됩니다.
Inferentia, Ray Serve 및 Gradio를 사용한 Stable Diffusion XL Base 모델 서빙
Ray Serve를 사용하여 Amazon Elastic Kubernetes Service (EKS)에 Stable Diffusion XL Base 모델을 배포하는 포괄적인 가이드에 오신 것을 환영합니다.
이 튜토리얼에서는 Stable Diffusion 모델의 강력한 기능을 활용하는 방법뿐만 아니라 대규모 언어 모델(LLM)을 효율적으로 배포하는 복잡한 과정에 대한 통찰력을 얻을 수 있습니다. 특히 대규모 언어 모델 배포 및 확장에 최적화된 inf2.24xlarge 및 inf2.48xlarge와 같은 trn1/inf2 (AWS Trainium 및 Inferentia 기반) 인스턴스에서의 배포를 다룹니다.
Stable Diffusion이란?
Stable Diffusion은 몇 초 만에 멋진 아트를 만들 수 있는 텍스트-이미지 모델입니다. 현재 사용 가능한 가장 크고 강력한 LLM 중 하나입니다. 주로 텍스트 설명에 조건화된 상세한 이미지를 생성하는 데 사용되지만 인페인팅, 아웃페인팅 및 텍스트 프롬프트에 의해 안내되는 이미지-이미지 번역 생성과 같은 다른 작업에도 적용할 수 있습니다.
Stable Diffusion XL(SDXL)
SDXL은 텍스트-이미지 합성을 위한 잠재 확산 모델입니다. 이전 버전의 Stable Diffusion과 비교하여 SDXL은 잠재 확산 및 노이즈 감소를 위한 파이프라인을 사용합니다. SDXL은 또한 더 많은 어텐션 블록과 SDXL이 두 번째 텍스트 인코더를 사용하기 때문에 더 큰 교차 어텐션 컨텍스트를 갖는 더 큰 UNet을 사용하여 이전 Stable Diffusion 모델에 비해 생성된 이미지의 품질을 향상시킵니다.
SDXL은 여러 새로운 컨디셔닝 체계로 설계되었으며 여러 종횡비로 훈련되었습니다. 또한 이미지-이미지 기술을 사용하여 SDXL에서 생성된 샘플의 시각적 충실도를 개선하는 데 사용되는 정제 모델을 사용합니다.
이 프로세스를 통해 Amazon EKS와 Ray Serve에서 효과적으로 배포하고 활용할 수 있도록 안내하는 고도로 유능하고 미세 조정된 언어 모델이 생성됩니다.
Trn1/Inf2 인스턴스에서의 추론: Stable Diffusion LLM의 잠재력 극대화
Stable Diffusion XL은 다양한 하드웨어 플랫폼에 배포할 수 있으며, 각각 고유한 장점이 있습니다. 그러나 Stable Diffusion 모델의 효율성, 확장성 및 비용 효율성을 최대화하는 데 있어 AWS Trn1/Inf2 인스턴스가 최적의 선택입 니다.
확장성 및 가용성
StableDiffusion XL과 같은 대규모 언어 모델(LLM)을 배포할 때 주요 과제 중 하나는 적절한 하드웨어의 확장성과 가용성입니다. 기존 GPU 인스턴스는 높은 수요로 인해 부족한 경우가 많아 리소스를 효과적으로 프로비저닝하고 확장하기가 어렵습니다.
반면 trn1.32xlarge, trn1n.32xlarge, inf2.24xlarge 및 inf2.48xlarge와 같은 Trn1/Inf2 인스턴스는 LLM을 포함한 생성형 AI 모델의 고성능 딥러닝(DL) 훈련 및 추론을 위해 특별히 구축되었습니다. 확장성과 가용성을 모두 제공하여 리소스 병목 현상이나 지연 없이 필요에 따라 Stable-diffusion-xl 모델을 배포하고 확장할 수 있습니다.
비용 최적화: 기존 GPU 인스턴스에서 LLM을 실행하면 GPU의 부족과 경쟁적인 가격으로 인해 비용이 많이 들 수 있습니다. Trn1/Inf2 인스턴스는 비용 효율적인 대안을 제공합니다. AI 및 기계 학습 작업에 최적화된 전용 하드웨어를 제공함으로써 Trn1/Inf2 인스턴스를 통해 비용의 일부로 최고 수준의 성능을 달성할 수 있습니다. 이러한 비용 최적화를 통해 예산을 효율적으로 할당하여 LLM 배포를 접근 가능하고 지속 가능하게 만들 수 있습니다.
성능 향상 Stable-Diffusion-xl은 GPU에서 고성능 추론을 달성할 수 있지만, Neuron 가속기는 성능을 한 단계 더 끌어올립니다. Neuron 가속기는 기계 학습 워크로드를 위해 특별히 구축되어 Stable-diffusion의 추론 속도를 크게 향상시키는 하드웨어 가속을 제공합니다. 이는 Trn1/Inf2 인스턴스에 Stable-Diffusion-xl을 배포할 때 더 빠른 응답 시간과 개선된 사용자 경험으로 이어집니다.
예제 사용 사례
디지털 아트 회사가 프롬프트를 기반으로 가능한 아트를 생성하는 데 도움이 되는 Stable-diffusion-xl 기반 이미지 생성기를 배포하려고 합니다. 텍스트 프롬프트 선택을 사용하여 사용자는 다양한 스타일의 아트워크, 그래픽 및 로고를 만들 수 있습니다. 이미지 생성기를 사용하여 아트를 예측하거나 미세 조정할 수 있으며 제품 반복 주기에서 상당한 시간 절약을 가져올 수 있습니다. 회사는 대규모 고객 기반을 보유하고 있으며 모델이 높은 부하에서 확장 가능하기를 원합니다. 회사는 높은 요청량을 처리하고 빠른 응답 시간을 제공할 수 있는 인프라를 설계해야 합니다.
회사는 Inferentia2 인스턴스를 사용하여 Stable diffusion 이미지 생성기를 효율적으로 확장할 수 있습니다. Inferentia2 인스턴스는 기계 학습 작업을 위한 특수 하드웨어 가속기입니다. 기계 학습 워크로드에 대해 GPU보다 최대 20배 더 나은 성능과 최대 7배 더 낮은 비용을 제공할 수 있습니다.
회사는 또한 Ray Serve를 사용하여 Stable diffusion 이미지 생성기를 수평으로 확장할 수 있습니다. Ray Serve는 기계 학습 모델을 서빙하기 위한 분산 프레임워크입니다. 수요에 따라 모델을 자동으로 확장하거나 축소할 수 있습니다.
Stable diffusion 이미지 생성기를 확장하기 위해 회사는 여러 Inferentia2 인스턴스를 배포하고 Ray Serve를 사용하여 인스턴스 간에 트래픽을 분산할 수 있습니다. 이를 통해 회사는 높은 요청량을 처리하고 빠른 응답 시간을 제공할 수 있습니다.
솔루션 아키텍처
이 섹션에서는 Amazon EKS에서 Stable diffusion xl 모델, Ray Serve 및 Inferentia2를 결합한 솔루션의 아키텍처를 자세히 살펴봅니다.

솔루션 배포
Amazon EKS에 stable-diffusion-xl-base-1-0를 배포하려면 필요한 사전 요구 사항을 다루고 배포 프로세스를 단계별로 안내합니다.
여기에는 인프라 설정, Ray 클러스터 배포 및 Gradio WebUI 앱 생성이 포함됩니다.
사전 요구 사항
👈Stable Diffusion XL 모델이 있는 Ray 클러스터 배포
Trainium on EKS 클러스터가 배포되면 kubectl을 사용하여 ray-service-stablediffusion.yaml을 배포할 수 있습니다.
이 단계에서는 Karpenter 오토스케일링을 사용하는 x86 CPU 인스턴스의 Head Pod 하나와 Karpenter에 의해 오토스케일링되는 Inf2.48xlarge 인스턴스의 Ray 워커로 구성된 Ray Serve 클러스터를 배포합니다.
배포를 진행하기 전에 이 배포에서 사용되는 주요 파일을 자세히 살펴보고 기능을 이해해 봅시다:
- ray_serve_stablediffusion.py: 이 스크립트는 FastAPI, Ray Serve 및 Hugging Face Optimum Neuron 도구 라이브러리를 사용하여 Neuronx model for stable-diffusion-xl-base-1-0-1024x1024 언어 모델을 사용한 효율적인 텍스트-이미지 생성기를 생성합니다.
이 예제 블루프린트에서는 AWS Neuron에서 실행되도록 컴파일된 사전 컴파일 모델을 사용합니다. 원하는 stable diffusion 모델을 사용하고 추론을 수행하기 전에 AWS Neuron에서 실행되도록 컴파일할 수 있습니다.
- ray-service-stablediffusion.yaml:
이 Ray Serve YAML 파일은
stable-diffusion-xl-base-1.0모델을 사용한 효율적인 텍스트 생성을 용이하게 하는 Ray Serve 서비스를 배포하기 위한 Kubernetes 구성 역할을 합니다. 리소스를 분리하기 위해stablediffusion