kubernetes-sigs/jobset
JobSet: a k8s native API for distributed ML training and HPC workloads
해결하는 문제
JobSet는 Kubernetes 내에서 여러 Job을 하나의 단위로 관리할 수 있는 Kubernetes 네이티브 방식을 제공합니다. 일반적으로 안정적인 네트워크 엔드포인트, 다양한 역할에 맞는 특정 포드 템플릿, 그리고 조정된 장애 복구가 필요한 분산 AI/ML 학습 워크로드(예: PyTorch, Jax, TensorFlow) 및 HPC 애플리케이션(예: MPI)을 Kubernetes에 배포하는 어려움을 해결합니다.
작동 방식
JobSet는 여러 Kubernetes Job을 오케스트레이션하는 고수준 API입니다. 이는 IndexedJobs를 통해 포드에 안정적인 호스트네임을 보장하고, 포드 간 통신을 위한 헤드리스 서비스를 자동 구성함으로써 이러한 Job들의 라이프사이클을 관리합니다. 사용자는 리더와 워커와 같은 서로 다른 역할에 맞는 별도의 포드 템플릿을 정의할 수 있으며, 전체 그룹에 걸쳐 시작 순서와 성공/실패 정책을 제어할 수 있습니다.
대상 사용자
Kubernetes 클러스터에서 대규모 분산 학습 또는 고성능 컴퓨팅 워크로드를 배포하는 개발자 및 플랫폼 엔지니어를 위한 것입니다.
주요 특징
- 다중 템플릿 지원: 리더, 워커, 파라미터 서버와 같은 서로 다른 포드 그룹에 대해 별도의 포드 템플릿을 정의할 수 있습니다.
- 안정적인 네트워킹: ML 및 HPC 프레임워크에서 요구하는 안정적인 포드 호스트네임을 제공하기 위해 헤드리스 서비스를 자동 구성합니다.
- 사용자 정의 정책: 워크로드가 완료되었을 때 또는 전체 세트를 체크포인트에서 다시 시작해야 할 때를 결정하는 특정 성공 및 실패 정책을 설정할 수 있습니다.
- 배치 배치 전용: 자식 Job과 토폴로지 도메인(예: 랙 또는 존) 간 1:1 매핑을 보장하여 로컬 리소스에 대한 배타적 접근을 보장합니다.
- 시작 순서 제어: ReplicatedJobs의 시작 순서를 구성할 수 있으며, 리더-워커 패턴을 지원합니다.
- Kueue 통합: 클러스터 오버서브스크립션, 멀티테넌시, 리소스 공유를 위한 Kueue와 통합됩니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트