HPC & GPU Engineering/AI Infrastructure Engineer

[HPC/GPU 클러스터 운영 Scheduling Deep Dive 7편] Preemption 고급 전략 – 긴급 Job과 장기 Job 혼합 환경

ygtoken 2025. 8. 20. 23:39
728x90

Preemption이 필요한 이유

 

HPC와 GPU 클러스터 운영에서 가장 까다로운 과제 중 하나는 긴급 Job과 장기 Job이 동시에 존재하는 환경입니다. 연구자나 엔지니어는 수일 동안 GPU 수십 개를 점유하는 학습 Job을 제출하기도 하고, 동시에 고객 데모나 실험 검증과 같은 짧은 긴급 Job을 즉시 실행해야 하는 상황도 발생합니다.

 

단순한 FIFO 스케줄링만 적용하면 긴급 Job은 장기 Job 뒤에 밀려 즉시 실행되지 못하고, 반대로 긴급 Job만 우선 실행하면 장기 Job이 계속 중단되어 비효율이 발생합니다. 이런 문제를 해결하기 위해 도입되는 것이 **Preemption(선점 스케줄링)**입니다.

 

Preemption은 이미 실행 중인 Job을 일시 중단하거나 종료시켜 긴급 Job에 자원을 할당하는 방식입니다. 하지만 단순 선점만으로는 운영이 불안정해지므로, 고급 Preemption 전략을 설계하는 것이 중요합니다.

 


 

Preemption의 기본 동작 원리

 

Preemption은 크게 두 가지 형태로 구분됩니다.

 

  1. Job Suspend/Resume 방식
  2. 실행 중인 Job을 중단(Suspend)했다가 긴급 Job이 끝나면 다시 이어 실행합니다. GPU 메모리와 상태를 유지하지 못하는 경우가 많아, 주로 CPU Job에 사용됩니다.
  3. Job Terminate/Checkpoint 방식
  4. 실행 중인 Job을 종료(Terminate)한 후, 체크포인트 파일에서 다시 시작합니다. GPU Job에서는 이 방식이 일반적이며, Checkpoint/Restart 기능이 필수적입니다.

 


 

Slurm에서의 Preemption 정책

 

Slurm은 다양한 Preemption 방식을 지원하며, PreemptTypePreemptMode 설정으로 제어합니다.

# slurm.conf 예시
PreemptType=preempt/qos
PreemptMode=REQUEUE

 

  • PreemptType
    • preempt/qos: QoS 우선순위를 기반으로 선점
    • preempt/partition_prio: 파티션 우선순위를 기반으로 선점
  • PreemptMode
    • CANCEL: Job을 종료
    • REQUEUE: Job을 재큐잉
    • SUSPEND: Job을 중단 후 재개 가능

 

또한 QoS 정책에서 Preempt 옵션을 설정해 어떤 Job을 선점할 수 있을지 정의합니다.

# 높은 우선순위 QoS가 낮은 QoS Job을 선점
sacctmgr modify qos high set preempt=low

 


 

긴급 Job과 장기 Job 혼합 운영 전략

 

효율적인 Preemption 정책을 설계하기 위해서는 긴급 Job의 실행 보장장기 Job의 안정성 보장을 동시에 달성해야 합니다.

 

  1. 긴급 Job 전용 QoS 설정
    • QoS=urgent를 만들어 높은 Priority와 Preemption 권한을 부여합니다.
    • 긴급 Job은 항상 즉시 실행되도록 보장합니다.
  2. Checkpoint/Restart 의무화
    • 장기 GPU Job은 반드시 Checkpoint를 저장하도록 가이드합니다.
    • Preemption 발생 시 재큐잉(Requeue)된 후 Checkpoint에서 이어 실행됩니다.
  3. Fairshare와 병행
    • 긴급 Job이 반복적으로 선점하면 장기 Job 사용자 불만이 커집니다.
    • Fairshare 정책으로 장기적으로 자원 균형을 유지합니다.
  4. Partial Preemption 적용
    • 전체 노드를 선점하지 않고 일부 GPU만 회수하는 방식을 적용할 수 있습니다.
    • 이를 통해 긴급 Job을 수용하면서 장기 Job 피해를 최소화합니다.

 


 

실제 적용 사례

 

  • AI 기업 데모 환경: 고객 시연 Job을 Preemption QoS로 운영하여, 대규모 학습 Job이 돌아가더라도 즉시 데모 Job을 실행할 수 있도록 보장했습니다.
  • 연구소 HPC 센터: 장기 유전체 분석 Job을 Checkpoint 기반으로 운영하여, 긴급 분석 요청이 들어오면 Preemption으로 중단 후 재개했습니다.
  • 클라우드 GPUaaS 업체: Preemption 정책을 통해 고객 SLA를 차등화했습니다. 일반 사용자 Job은 선점될 수 있고, 프리미엄 사용자는 선점되지 않도록 차별화해 서비스 모델을 구성했습니다.

 


 

장점과 단점

 

장점

 

  • 긴급 Job의 즉시 실행 보장이 가능합니다.
  • 자원 활용 유연성이 커지고, 멀티유저 만족도가 향상됩니다.
  • Checkpoint/Restart와 결합하면 장기 Job 안정성도 유지됩니다.

 

단점

 

  • Job이 자주 중단되면 사용자 경험이 나빠질 수 있습니다.
  • GPU Job의 Suspend는 지원 한계가 있어 대부분 Checkpoint가 필요합니다.
  • 정책이 복잡해지면 관리 부담이 커집니다.

 


 

실무 팁과 주의사항

 

  1. Checkpointing 도입 필수
  2. 긴급 Job 대비를 위해 장기 GPU Job에는 정기 Checkpoint를 강제하는 것이 좋습니다. TensorFlow, PyTorch, Horovod 모두 Checkpoint 기능을 지원합니다.
  3. QoS 기반 Preemption 설계
  4. 긴급 Job 전용 QoS를 별도로 설정하고, Preemption 가능한 대상 QoS를 명확히 지정해야 합니다.
  5. 사용자 교육과 커뮤니케이션
  6. Preemption 정책을 사용자에게 명확히 공지하지 않으면 불만이 커질 수 있습니다. 사용자 가이드를 통해 Checkpoint 및 QoS 사용법을 안내해야 합니다.
  7. 모니터링
  8. squeue, sdiag, Grafana 대시보드에서 Preemption 발생 빈도와 대기 시간을 주기적으로 확인해 정책을 개선해야 합니다.

 


 

정리하며

 

Preemption은 긴급 Job과 장기 Job이 혼재하는 HPC/GPU 클러스터에서 즉시성·안정성·효율성을 동시에 확보하는 핵심 전략입니다. Slurm의 QoS와 Preempt 정책을 적절히 활용하고, Checkpoint/Restart를 필수화하며, 사용자와의 커뮤니케이션을 강화하면 효과적인 운영이 가능합니다. 운영자는 Preemption을 단순한 선점이 아닌 서비스 품질 관리 도구로 활용해야 합니다.

 

 

728x90