이 문서에서는 Google Kubernetes Engine (GKE)의 동적 슬라이싱을 설명합니다. 동적 슬라이싱을 사용하면 프로비저닝된 TPU 하위 블록을 다양한 토폴로지로 구성할 수 있습니다. 이 기능을 사용하면 노드 풀을 다시 만들 필요가 없고, 장애 발생 시 자동 복구를 허용하여 내결함성을 향상하며, 리소스 사용률을 최적화할 수 있습니다.
동적 슬라이싱은 TPU 사용률을 최적화하고, 프로비저닝 시간을 단축하고, 대규모 학습 및 추론 워크로드의 내결함성을 개선하려는 AI/ML 엔지니어와 플랫폼 관리자를 대상으로 합니다.
이 문서를 읽기 전에 다음 사항을 숙지해야 합니다.
- GKE의 TPU
- TPU Cluster Director 동적 슬라이싱은 TPU Cluster Director에 의해 사용 설정되는 TPU 기능입니다.
- 모든 용량 모드 예약 동적 슬라이싱 기능은 모든 용량 모드를 사용하는 TPU에서만 사용할 수 있습니다.
동적 슬라이싱이란 무엇인가요?
동적 슬라이싱을 사용하면 TPU 프로비저닝을 분리하여 Cloud TPU 용량을 유연하게 관리할 수 있습니다. 동적 슬라이싱에는 다음 프로세스가 포함됩니다.
- 더 작은 단위로 리소스 프로비저닝: 하위 블록이라는 단위로 리소스를 프로비저닝합니다. 하위 블록은 Ironwood (TPU7x) 용량의 기본 논리적 빌드 단위입니다.
Ironwood (TPU7x)의 경우 하위 블록은 상호 연결된 TPU 칩의
4x4x4토폴로지가 있는 TPU VM의 16노드 그룹을 나타냅니다. TPU 모든 용량 모드 및 동적 슬라이싱의 컨텍스트에서 노드 풀은 하위 블록에 직접 매핑됩니다. - 하위 블록을 함께 스티칭: 동적 슬라이싱은 이러한 하위 블록을 더 큰 슬라이스로 함께 스티칭합니다.
동적 슬라이싱의 이점
동적 슬라이싱을 사용하면 다음을 달성할 수 있습니다.
- 프로비저닝 시간 단축: 하위 블록을 개별적으로 프로비저닝하면 단일 장애의 영향을 최소화하므로 전체 프로비저닝이 더 빨라집니다.
- 복구 시간 단축: TPU 칩 오류가 발생하면 오류의 최소 단위는 하위 블록입니다. 동적 슬라이싱은 결함이 있는 하위 블록을 격리하므로 전체 대형 슬라이스를 다시 프로비저닝하는 것보다 더 빠르게 정상 하위 블록에서 워크로드를 다시 예약할 수 있습니다.
- 용량 재구성: 다양한 워크로드 요구사항이 있는 경우 토폴로지 변경을 위해 노드 풀을 삭제하고 다시 만들 필요가 없습니다. 대신 프로비저닝된 노드 풀을 지정된 모양과 일치하도록 동적으로 재구성할 수 있습니다.
동적 슬라이싱의 주요 요소
동적 슬라이싱에는 다음과 같은 주요 개념이 도입됩니다.
- 노드 풀의 증분 프로비저닝: 동적 슬라이싱은 노드 풀의 내결함성 프로비저닝 모델인 증분 프로비저닝을 사용합니다. 이 모델은 모든 TPU 용량을 TPU VM의 16노드 그룹 노드 풀로 변환합니다.
- 슬라이스 컨트롤러: GKE 컨트롤 플레인 내에서 실행되며 동적 슬라이싱을 관리하는 Kubernetes 커스텀 리소스 컨트롤러입니다. 슬라이스 컨트롤러는 동적 슬라이스를 나타내는 슬라이스 커스텀 리소스의 수명 주기를 관리합니다. 슬라이스 컨트롤러는 슬라이스를 생성하고 지속적으로 모니터링하며 삭제하는 작업을 처리합니다. 스케줄러를 사용하면 스케줄러가 슬라이스 커스텀 리소스의 생성 및 삭제를 지시합니다.
- 슬라이스 커스텀 리소스: 요청된 TPU 토폴로지에 따라 하위 블록을 동적으로 연결합니다. 이 프로세스는 TPU 노드 풀을 연결하기 위해 OCS 네트워크의 동적 재구성을 사용하므로 최적화된 성능을 보장하는 데 도움이 됩니다. 슬라이스 커스텀 리소스의 상태 필드를 검사하여 동적 슬라이스 형성의 진행 상황이나 상태를 검사할 수 있습니다.
동적 슬라이싱 스케줄러
Kueue 및 Topology Aware Scheduling (TAS)을 구성하여 Slice 커스텀 리소스를 자동으로 만들 수 있습니다. 자체 스케줄러를 사용하여 Slice 커스텀 리소스를 관리할 수도 있습니다.