AWS 기술 블로그
Amazon EKS에서 Friendli Container로 LLM 추론 최적화하기
FriendliAI는 AI 추론 효율을 크게 개선하는 고성능 서빙 플랫폼을 서비스하는 기업입니다. FriendliAI의 추론 스택은 높은 처리량(Throughput)과 비용 절감 효과를 통해 기업이 생성형 AI 서비스를 효율적으로 운영할 수 있도록 지원합니다.

Figure 1: Friendli Container 개념도
Friendli Container Amazon EKS Add-on은 AWS 인프라를 기반으로 AI 추론 효율을 극대화하는 솔루션입니다. 이 Add-on을 활용하면 기존 Amazon EKS 워크플로우에 Friendli Container를 즉시 통합할 수 있으며, 모든 비용은 AWS 통합 빌링 시스템으로 편리하게 관리됩니다. 이를 통해 추론 비용 절감, 빠른 확장성(Scaling), 그리고 향상된 처리량을 여러분의 워크로드에 바로 적용할 수 있습니다.
지금부터 Friendli Container Add-on을 여러분의 EKS에 손쉽게 추가하는 방법을 알아보겠습니다.
Friendli Container 개요
Friendli Container는 FriendliAI의 고성능 서빙 솔루션을 고객의 환경에 바로 도입할 수 있도록 설계된 도커(Docker) 이미지입니다. FriendliAI의 핵심 최적화 기술이 컨테이너 형태로 제공되어, 고객의 인프라 설정 내에서 현재 가장 빠른 지연 시간(Latency)을 자랑하는 AI 추론 스택을 그대로 사용할 수 있습니다. FriendliAI에서 관리하는 엔드포인트(Friendli Dedicated Endpoint)와 같이 모든 최적화가 포함된 것은 아니지만, 고객의 인프라 내에서 고성능 추론을 수행하는 데 필요한 핵심 기능은 모두 갖췄습니다.
Friendli Container는 지연 시간을 줄이고 GPU 사용량을 최소화하여 비용 효율성을 극대화하도록 최적화된 제품입니다. 또한 AI 모델 배포를 위해 확장 가능하고 격리된 환경을 제공하여 최상의 성능을 달성할 수 있도록 돕습니다.
- GPU 사용량 50% 이상 절감
- 지연 시간 2배 이상 개선
- 처리량 2배 이상 향상
이런 Friendli Container의 역량을 온전히 발휘하려면, GPU 리소스를 효율적으로 관리하고 오케스트레이션(Orchestration)을 지원하는 인프라가 필수적입니다. Amazon EKS와의 통합이 이를 가능하게 합니다.
Amazon EKS 개요
쿠버네티스(Kubernetes, K8S)는 컨테이너화된 애플리케이션 관리를 위한 표준 솔루션으로, 다양한 환경에서 워크로드를 배포, 확장 및 관리할 수 있게 해줍니다. Auto Scaling, Load Balancing, Self-healing과 같은 강력한 기능을 통해 복잡한 애플리케이션 관리를 단순화합니다. 그러나 쿠버네티스를 효율적으로 관리하려면 깊은 전문 지식이 필요한데, 바로 이 지점에서 Amazon EKS와 같은 관리형 서비스가 필요할 수 있습니다.
Amazon EKS는 AWS 환경에서 쿠버네티스를 사용하여 컨테이너화된 애플리케이션을 손쉽게 배포, 관리 및 확장할 수 있게 해주는 완전 관리형 서비스입니다. EKS는 쿠버네티스 클러스터 관리를 단순하게 만들고, 안전하고 확장 가능하며 가용성이 높은 플랫폼을 제공합니다. 또한 다른 AWS 서비스와 긴밀하게 통합되어 클라우드 컨테이너 관리를 위한 최적의 솔루션을 제공합니다.
현재도 많은 기업들이 확장 가능한(Scalable) AI 추론을 위해 Amazon EKS를 도입하고 있습니다.
- Digital Creativity 분야의 선두 기업인 Adobe는 Amazon EKS를 사용하여 생성형 AI 솔루션인 Adobe Firefly를 구축했습니다.
- 자율 주행 기술 기업인 Mobileye는 컴퓨터 비전 및 AI 애플리케이션을 위해 Amazon EKS를 활용합니다.
- AI 기반 3D 렌더링 솔루션 스타트업인 Omi는 Amazon EKS를 사용하여 생성형 AI 모델을 구동하고 있습니다.
Amazon EKS의 주요 이점:
- 완전 관리형 Kubernetes: AWS가 컨트롤 플레인을 직접 관리하므로 수동 설정 및 유지보수 부담이 없습니다. 덕분에 개발팀은 인프라보다 애플리케이션 본연의 기능에 집중할 수 있습니다.
- 원활한 AWS 통합: EKS는 Amazon EC2, AWS IAM, Amazon S3, Amazon CloudWatch와 같은 AWS 서비스와 매끄럽게 연동되어 풍부한 AWS 기능으로 애플리케이션을 강화할 수 있습니다.
- 확장성 및 유연성: 수요에 따라 클러스터와 워크로드를 자동으로 확장합니다. 여러 AWS 가용 영역(AZ)에 걸쳐 애플리케이션을 실행할 수 있어 높은 가용성과 회복탄력성을 보장합니다.
- 강화된 보안: AWS의 보안 인프라를 활용하여 암호화, IAM Role, 네트워크 정책 등을 기본으로 제공해 애플리케이션 접근을 제어하고 보호합니다.

Figure 2: Kubernetes 클러스터 동작 과정
요약하자면, Amazon EKS는 쿠버네티스 관리를 단순화하여 애플리케이션의 기능을 구축하는 일에 집중할 수 있도록 돕습니다.
Friendli Container EKS Add-on 의 이점
AI 추론 서비스 운영 비용은 낮추고 성능은 즉각적으로 높이고 싶다면, Friendli Container를 EKS Add-on으로 추가해보세요. 기존 EKS 워크플로우 내에서 바로 운용할 수 있습니다.
- 즉각적인 비용 절감: Friendli Container의 독자적인 기술을 통해 추론 GPU 비용을 50% 이상 절감하여 투자 수익률(ROI, Return-on-Investment)을 극대화하고 탁월한 성능을 제공합니다.
- 간소화된 청구/결제: AAWS 통합 빌링을 통해 비용 처리가 단순합니다. Friendli Container Add-on을 포함한 모든 AWS 서비스 비용이 하나의 청구서에 합산되어 예산 관리가 쉽습니다.
- 간편한 구독: AWS가 번거로운 구독 관리를 대신 처리해 줍니다.
- 자동 업데이트: Friendli Container Add-on의 정기 업데이트가 자동으로 적용되어 시스템을 항상 최신 상태로 유지하고 보안을 강화할 수 있습니다.
Friendli Container를 Amazon EKS에 배포함으로써, AI 서비스 워크플로우를 신속하게 강화하여 안정적이고 확장 가능한 플랫폼을 구축함과 동시에 즉각적인 비용 절감 효과까지 누릴 수 있습니다.
Friendli Container 사용 방법
이번 챕터에서는 EKS 클러스터 설정부터 Friendli Container 배포까지의 과정을 단계별로 안내합니다. 이 가이드를 마치면 여러분의 EKS 클러스터에서 실제 작동하는 Friendli Container 기반 추론 서비스를 성공적으로 운영할 수 있게 됩니다.

Figure 3: Friendli Container EKS Add-on 설정 워크플로우
1. 준비 사항: EKS 클러스터에 GPU Node Group 추가하기
먼저 활성화된 Amazon EKS 클러스터가 필요합니다. 아직 클러스터가 없다면 Amazon EKS 문서를 참고하여 생성해 주세요.
이미 GPU Node Group을 추가한 경우 이 단계는 건너뛰셔도 좋습니다.
EKS 클러스터에 GPU Node Group 추가하기
참고: Friendli Container EKS Add-on은 Kubernetes 버전 1.28 이상을 요구합니다.
EKS 클러스터의 AWS 리전을 선택할 때 GPU 인스턴스 가용성을 확인하는 것이 중요합니다. 2026년 2월 현재, Friendli Container는 NVIDIA B200, H200, H100, A100, L40S, A10G, L4 디바이스를 지원합니다. 리전별 인스턴스 가용성은 여기에서 확인하실 수 있습니다.
Multi-GPU VM 인스턴스 타입을 사용하는 경우, 적절한 리소스 관리를 위해 NVIDIA GPU Operator 설치를 강력히 권장합니다. NVIDIA GPU Operator 가이드를 참고하실 수 있으며, Helm을 사용하여 GPU Operator를 설치하는 예시는 여기에서 확인하실 수 있습니다.
GPU Node Group 추가하기:
- Amazon EKS 콘솔에서 GPU Node Group을 생성할 대상 클러스터를 선택합니다.
- “Compute” 탭에서 “Add node group”을 클릭합니다.
- 새로운 Node Group의 이름, Node IAM role 등 configuration 정보를 설정합니다. (IAM Role이 없다면 “Create recommended role” 활용 가능) 그리고 ‘Next’를 클릭하세요.
- AMI type으로 “Amazon Linux 2023 (x86_64) Nvidia”를 선택합니다.
- 적절한 GPU Instance Type을 선택합니다.
- 디스크 크기를 설정합니다. 이때 디스크 크기는 사용자가 배포하려는 모델을 다운로드할 수 있을 만큼 충분해야 합니다. (본 가이드에 있는 예시를 따라하기 위해서는 60GB 이상으로 디스크 사이즈를 설정할 것을 권장합니다)
- 원하는 노드 그룹 크기를 설정합니다.
- 나머지 과정을 계속 진행하고, 마지막에 “Create”를 클릭하여 그룹 생성을 완료합니다.
2. Friendli Container EKS Add-on 구성하기
- Amazon EKS 콘솔에서 Add-on을 추가하고 싶은 클러스터를 선택합니다.
- “Add-ons” 탭에서 “Get more add-ons”를 클릭합니다.
- 스크롤을 내려 “AWS Marketplace add-ons” 섹션에서 “Friendli Container”를 검색하여 선택하고 “Next”를 클릭합니다.
- Friendli Container 구독을 진행합니다. 필요한 라이선스 유닛 수는 유저가 사용할 GPU 디바이스 수에 따라 결정됩니다.
- ‘Next’ 버튼을 눌러 설정을 확인하고 “Create”를 클릭합니다.
참고: Friendli Container의 상세 가격 정보는 AWS Marketplace에서 확인 가능하며, 체험판이나 맞춤형 제안은 FriendliAI 공식 홈페이지로 문의해 주세요.
다음으로 Friendli Inference Deployment 활성화를 위해, Kubernetes ServiceAccount와 AWS License Manager를 연결하는 Pod Identity association 설정이 필요합니다.
참고: 계속하기 전에 “Amazon EKS Pod Identity Agent” Add-on이 해당 클러스터에 설치되어 있는지 확인해 주세요. ‘Get more add-ons’ 버튼을 클릭하여 ‘AWS add-ons’ 섹션 아래에 있는 ‘Amazon EKS Pod Identity Agent’ 설정을 켜주시면 됩니다.
Pod Identity Association 설정하기
- Amazon EKS 콘솔에서 설정할 클러스터를 선택합니다.
- Access 탭을 선택합니다.
- Pod Identity associations 섹션에서 Create를 클릭합니다.
- Create Pod Identity association 페이지에서 IAM Role, Kubernetes namespace, 그리고 Kubernetes service account를 설정합니다.
IAM Role:
- ‘Create recommended role’을 클릭합니다.
- Step 1 (Select trusted entity): Use case로는 ‘EKS – Pod Identity’가 선택되어 있어야 합니다. Next를 클릭합니다.
- Step 2 (Add permissions): ‘AWSLicenseManagerConsumptionPolicy’를 검색하여 체크하고 활성화합니다. Next를 클릭합니다.
- Step 3 (Name, review, and create): 적절한 Role 이름을 입력하고 Create를 클릭합니다.
- 다시 Create Pod Identity association 페이지로 돌아와 방금 생성한 IAM Role을 선택합니다.
Kubernetes namespace:
- Friendli Inference Deployment를 생성하려는 Kubernetes namespace를 선택합니다. 어떤 것을 선택할지 확신이 서지 않는다면 default를 선택하세요.
- TIP: 나중에 다른 네임스페이스에 Friendli Inference Deployment를 생성할 계획이라면, 해당 네임스페이스에 대해서도 Pod Identity association을 생성해야 합니다.
Kubernetes service account:
- 대부분의 경우 default를 사용하면 됩니다.
- 나중에 커스텀 서비스 계정(service account)을 사용하도록 Friendli Inference Deployment를 설정한다면, 해당 서비스 계정에 대해서도 Pod Identity association을 생성해야 합니다.
Create를 클릭하면, Pod Identity associations 목록에서 방금 생성한 연결을 확인하실 수 있습니다.

Figure 4: Pod Identity associations 목록 예시
3. Friendli Deployment 생성하기
참고1: EKS 클러스터 접근을 위해 kubectl CLI 도구 사용이 가능해야 합니다. 해당 AWS 가이드를 참조해보세요.
참고2: HuggingFace의 비공개 모델(private/gated model)을 사용하려면 ‘read’ 권한이 부여된 Hugging Face 액세스 토큰이 필요합니다. 토큰이 있다면 아래 명령어로 Kubernetes Secret을 생성해주세요.
$ kubectl create secret generic hf-secret --from-literal token=YOUR_TOKEN_HERE
FriendliDeployment는 쿠버네티스의 pods, services, deployments 등 요소를 일일이 구성하지 않고도 간편하게 추론 서비스를 운영할 수 있게 해주는 쿠버네티스 커스텀 리소스입니다. 아래는 Meta Llama 3.1 8B 모델을 g6.2xlarge 인스턴스 1개에 배포하는 샘플 FriendliDeployment 설정 YAML 파일입니다. 사용 목적에 맞게 이 YAML 파일을 수정해 사용하세요.
apiVersion: friendli.ai/v1alpha1
kind: FriendliDeployment
metadata:
namespace: default
name: friendlideployment-sample
spec:
model:
huggingFace:
repository: meta-llama/Llama-3.1-8B-Instruct
# public 모델인 경우 token 섹션 생략 가능
token:
name: hf-secret
key: token
resources:
nodeSelector:
# 'gpu-l4'를 사용하려는 노드 그룹 이름에 맞게 수정
eks.amazonaws.com/nodegroup: gpu-l4
numGPUs: 1
requests:
cpu: "6"
ephemeral-storage: 30Gi
memory: 25Gi
limits:
cpu: "6"
ephemeral-storage: 30Gi
memory: 25Gi
deploymentStrategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
service:
inferencePort: 6000
spec.model.huggingFace아래의token:섹션은 HuggingFace 액세스 토큰을 저장하기 위해 생성한 Kubernetes Secret을 참조합니다. 모델 접근에 토큰이 필요하지 않은 경우token:섹션 전체를 생략할 수 있습니다.- 위 예시에서
nodeSelector는eks.amazonaws.com/nodegroup: gpu-l4로 설정되어 있습니다. 이는 GPU 노드 그룹의 이름이gpu-l4라고 가정합니다. 실제 노드 그룹 이름과 일치하도록nodeSelector값을 수정해야 합니다. - CPU 및 메모리 리소스 설정 값들은 g6.2xlarge 인스턴스에 맞춰져 있습니다. 다른 타입의 인스턴스를 사용하는 경우 이 값을 수정해야 할 수 있습니다.
참고: 클러스터에 NVIDIA GPU Operator가 설치되어 있다면, requests: 와 limits: 섹션에 nvidia.com/gpu 리소스를 추가해야 합니다. GPU 노드가 일반적인 cpu나 memory와 함께 nvidia.com/gpu 리소스가 있음을 알리기 때문입니다. 이 경우 FriendliDeployment에서 numGPUs는 생략할 수 있습니다. 아래는 NVIDIA GPU Operator가 활성화되었을 때 requests: 와 limits: 섹션에 대한 설정 예시입니다.
resources:
nodeSelector:
eks.amazonaws.com/nodegroup: gpu-l4
requests:
cpu: '6'
ephemeral-storage: 30Gi
memory: 25Gi
nvidia.com/gpu: '1'
limits:
cpu: '6'
ephemeral-storage: 30Gi
memory: 25Gi
nvidia.com/gpu: '1'
해당 YAML 파일을 friendlideployment.yaml로 저장한 후 kubectl apply -f friendlideployment.yaml 명령어를 실행합니다.
$ kubectl apply -f friendlideployment.yaml
friendlideployment.friendli.ai/friendlideployment-sample created
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
friendlideployment-sample-7d7b877c77-zjgqq 2/2 Running 0 3m18s
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
friendlideployment-sample ClusterIP 172.20.95.224 <none> 6000/TCP 18m
이제 port-forward를 통해 로컬 환경에서 서비스에 접속할 수 있습니다.
$ kubectl port-forward svc/friendlideployment-sample 6000
Forwarding from 127.0.0.1:6000 -> 6000
Forwarding from [::1]:6000 -> 6000
다른 터미널에서 curl을 사용하여 추론 요청을 보내 확인해 보세요.
$ curl http://localhost:6000/v1/completions -H 'Content-Type: application/json' --data-raw '{"prompt": "Hi!", "max_tokens": 10, "stream": false}'
{"choices":[{"finish_reason":"length","index":0,"seed":15349211611234757311,"text":" I'm Alex, and I'm excited to share","tokens":[358,2846,8683,11,323,358,2846,12304,311,4430]}],"id":"cmpl-b2e4b4cba711448c847ab89d763588da","object":"text_completion","usage":{"completion_tokens":10,"prompt_tokens":3,"total_tokens":13}}
Friendli Container 에 대해 문의 또는 더 많은 정보를 원하신다면, FriendliAI documentation을 참조하시거나 엔지니어링 팀에 연락해주세요.
4. 리소스 정리
테스트가 끝난 FriendliDeployment는 kubectl CLI tool을 사용해 간편하게 제거할 수 있습니다.
$ kubectl delete friendlideployment friendlideployment-sample
friendlideployment.friendli.ai "friendlideployment-sample" deleted
또한, 비용 절감을 위해 사용하지 않는 GPU 인스턴스는 노드 그룹을 축소(Scale down)하거나 삭제하는 것을 권장합니다.
이제 모든 단계가 완료되었습니다! 지금까지 Amazon EKS에서 Friendli Container를 활용하여 LLM 추론 워크플로우를 최적화하는 방법을 알아보았습니다. 더 자세한 내용이 궁금하시다면 github에 있는 상세 가이드에서 더 깊이 있는 배포 프로세스와 Amazon EKS 활용법을 확인해보세요.
결론
Friendli Container Amazon EKS Add-On은 프로덕션 환경에서 AI 모델을 배포할 때 확장성과 비용 효율성을 모두 보장하는 고성능 솔루션입니다. Amazon EKS와 Friendli Container의 강력한 최적화 기능을 결합하여, 추론 비용을 획기적으로 낮추고 워크로드의 처리량을 개선합니다.
FriendliAI는 Friendli Container 이외에도 Friendli Dedicated Endpoint, Friendli Serverless Endpoint 등의 서비스를 제공하고 있습니다. Friendli 팀에 문의해 주시거나 공식 문서를 확인해 주시기 바랍니다.