Yolo 비전 선전
선전
지금 참여하기
용어집

Kubernetes

쿠버네티스가 AI 모델의 배포 및 확장을 자동화하는 방식을 살펴보세요. 고성능 컴퓨터 비전을 위해 K8s에서 Ultralytics 오케스트레이션하는 방법을 배워보세요.

쿠버네티스(Kubernetes, 흔히 K8s로 불림)는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위해 설계된 오픈소스 플랫폼입니다. 원래 Google 개발되었으며 현재는 클라우드 네이티브 컴퓨팅 재단(CNCF)에서 유지 관리하는 쿠버네티스는 클라우드 환경에서 소프트웨어 오케스트레이션을 위한 표준으로 자리 잡았습니다. 인공지능(AI)머신러닝(ML) 분야에서 쿠버네티스는 엔지니어링 팀이 분산 훈련부터 고가용성 프로덕션 추론에 이르는 복잡한 워크플로를 관리할 수 있도록 하는 핵심 인프라 계층 역할을 합니다. 기반 하드웨어를 추상화함으로써 쿠버네티스는 애플리케이션이 온프레미스 환경이든 퍼블릭 클라우드 제공업체를 통해서든 호스팅되든 관계없이 안정적이고 효율적으로 실행되도록 보장합니다.

핵심 아키텍처 및 개념

쿠버네티스는 CUDA 적으로 클러스터 아키텍처로 운영되며, 이는 노드라고 불리는 일련의 작업자 머신으로 구성됩니다. 이 노드들은 컨테이너화 워크로드를 실행하는 반면, 제어 평면은 클러스터의 전체 상태를 관리합니다. 쿠버네티스에서 배포 가능한 최소 단위는 "포드(Pod)"로, 저장소 및 네트워크 리소스를 공유하는 하나 이상의 컨테이너를 캡슐화합니다. 이 추상화는 컴퓨터 비전 애플리케이션에 매우 중요합니다. 개발자가 일관된 환경으로 패키징할 수 있게 합니다. Amazon Elastic Kubernetes Service(EKS), Azure Kubernetes Service(AKS), Google Engine(GKE) 와 같은 주요 클라우드 서비스는 이 아키텍처의 관리형 버전을 제공하여 데이터 사이언스 팀의 유지 관리 부담을 단순화합니다.

쿠버네티스가 AI에 중요한 이유

머신 러닝 운영(MLOps)에서 쿠버네티스의 주요 가치는 동적 워크로드를 처리하는 능력에 있습니다. AI 모델은 훈련 시에는 막대한 연산 능력이 필요하고 배포 시에는 낮은 추론 지연 시간이 요구되는 경우가 많습니다.

  • 확장성: 쿠버네티스는 자동 확장 기능을 활용하여 리소스를 자동으로 조정합니다. 트래픽이 급증할 경우 수평 포드 자동 확장기(Horizontal Pod Autoscaler)가 추론 포드 수를 증가시켜 수동 개입 없이 확장성을 유지할 수 있습니다.
  • 자원 최적화: 고가의 하드웨어를 효율적으로 할당하는 것이 중요합니다. 쿠버네티스는 부분적 GPU 및 노드 어피니티를 지원하여, 딥러닝 모델이 활성 작업이 자원을 필요로 할 때에만 자원을 소비하도록 보장합니다.
  • 탄력적 배포: 모델 배포 중 고가용성 확보는 필수적입니다. 노드 장애 발생 시 쿠버네티스는 자동으로 정상 노드에서 영향을 받은 포드를 재시작하여 핵심 API 서비스의 가동 중단을 방지합니다.

실제 애플리케이션

쿠버네티스는 다양한 산업 분야의 대규모 AI 구현을 위한 핵심 기반입니다:

  1. 스마트 시티 교통 관리: 지자체는 수천 개의 교차로에서 수집된 영상 데이터를 분석하기 위해 Ultralytics 모델을 도입할 수 있습니다. 쿠버네티스를 활용하면 시스템은 출퇴근 시간대에 객체 탐지 부하 증가를 처리하기 위해 자원을 동적으로 확장하고, 야간에는 비용 절감을 위해 축소할 수 있습니다. 이러한 접근 방식은 현대적 교통 관리 시스템의 핵심입니다.
  2. 전자상거래 개인화: 온라인 소매업체들은 마이크로서비스 기반으로 구축된 복잡한 추천 시스템을 활용합니다. 한 서비스는 후보 생성(candidate generation)을 처리하는 반면, 다른 서비스는 재정렬(reranking)을 관리할 수 있습니다. 쿠버네티스는 이러한 개별 서비스를 조정하여 팀이 전체 쇼핑 경험을 방해하지 않고 독립적으로 순위 지정 신경망을 업데이트할 수 있게 하여 지속적인 통합을 용이하게 합니다.

Kubernetes와 Docker의 차이점

혼란스러운 점 중 하나는 쿠버네티스와 도커의 관계입니다. 이들은 경쟁 관계가 아니라 상호 보완적인 기술입니다. 도커는 개별 컨테이너를 생성하고 실행하는 도구(애플리케이션 패키징)인 반면, Kubernetes는 여러 머신에 걸쳐 이러한 컨테이너 군집을 관리하는 도구입니다. Docker를 사용해 모델 가중치와 코드를 이미지로 빌드한 후, Kubernetes를 통해 해당 이미지의 복사본이 프로덕션 환경에서 어디서, 언제, 몇 개 실행될지 결정합니다.

예시: 컨테이너화를 위한 추론 스크립트

Kubernetes에 모델을 배포하려면 개발자는 일반적으로 컨테이너의 진입점 역할을 하는 Python 시작합니다. 다음 코드는 Ultralytics 모델을 사용한 간단한 추론 작업을 보여줍니다. 이 스크립트는 pod 내부에서 실행되며 들어오는 요청을 처리합니다.

from ultralytics import YOLO

# Load the lightweight YOLO26 model
model = YOLO("yolo26n.pt")

# Perform inference on an image source
# In a K8s pod, this would likely process API payloads
results = model("https://ultralytics.com/images/bus.jpg")

# Output the detection count for logging
print(f"Detected {len(results[0].boxes)} objects in the frame.")

도구 및 생태계

쿠버네티스 생태계에는 데이터 과학에 특화된 다양한 도구가 포함되어 있습니다. Kubeflow는 쿠버네티스에서 머신러닝 워크플로우 배포를 간편하고 이동 가능하며 확장 가능하게 만드는 데 특화된 인기 있는 툴킷입니다. 클러스터 상태와 애플리케이션 메트릭 모니터링을 위해 엔지니어들은 종종 Prometheus에 의존합니다. 이러한 환경에서 모델 훈련 및 배포의 복잡성을 더욱 단순화하기 위해 Ultralytics 데이터셋 관리와 모델 훈련을 자동화하는 통합 인터페이스를 제공하여 사용자가 클라우드 컴퓨팅 클러스터에 바로 적용 가능한 모델을 내보낼 수 있게 합니다. 또한 Helm과 같은 패키지 관리자는 재사용 가능한 차트를 통해 복잡한 Kubernetes 애플리케이션 관리를 지원합니다.

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기