이 프로젝트는 쿠버네티스 클러스터 환경에서 TPU(Task Processing Unit) 작업 효율을 향상시키기 위한 스케줄링 기법을 연구하고 구현한 것입니다. 이 프로젝트는 일부 노드에만 TPU가 장착된 환경에서 TPU를 필요로 하는 작업을 적절한 노드에 스케줄링하여 효율적인 자원 활용을 목표로 합니다.
이 프로젝트는 TPU가 장착된 노드로 작업을 스케줄링하여 전체적인 작업 효율을 높이는 방법을 제안합니다. 이를 위해 노드 어피니티(Node Affinity)를 활용하여 TPU 사용 여부에 따라 적절한 워커 노드에 작업을 배치합니다.
- 노드 어피니티 기반 스케줄링: TPU가 장착된 노드에 작업을 스케줄링하여 자원 효율을 극대화합니다.
- 고가용성 보장: 레플리카셋(ReplicaSet)을 통해 파드의 고가용성을 유지합니다.
- 효율적인 리소스 사용: TPU를 사용하여 작업 처리 시간을 단축합니다.
- 쿠버네티스 클러스터
- TPU 장착 노드
- Docker
- kubectl
- 저장소를 클론합니다.
git clone https://github.com/mooner92/tpuserv.git cd tpuserv
- 필요한 도커 이미지를 빌드합니다.
docker build -t tpuserv-image .
- 쿠버네티스 클러스터에 디플로이합니다.
kubectl apply -f deployment.yaml
200개의 이미지를 대상으로 한 실험 결과, TPU를 사용하는 노드에서의 작업 처리 시간이 CPU만 사용하는 노드에 비해 평균적으로 70% 감소하였습니다.
서비스 이름 | 파드가 실행된 노드 | 작업 처리 횟수 | 평균 작업 처리 시간 (ms) |
---|---|---|---|
yes-tpu | Node2 | 7 | 29,983 |
yes-tpu | Node3 | 13 | 30,245 |
no-tpu | Node1 | 5 | 305,520 |
no-tpu | Node2 | 10 | 30,010 |
no-tpu | Node3 | 5 | 30,340 |
서비스 이름 | 평균 실행 시간 (ms) |
---|---|
yes-tpu | 30,153.56 |
no-tpu | 98,970.09 |