POLICY OVERVIEW

운영 정책 개요

JPU-Share는 제한된 GPU 자원을 여러 연구실이 공정하게 나누어 사용할 수 있도록 자동화된 배정 시스템을 운영합니다. 이 페이지에서는 GPU가 어떻게 할당되고, 어떤 기준으로 우선순위가 결정되며, 특수한 상황(메모리 부족, 작업 취소 등)에서 어떻게 동작하는지를 설명합니다.

핵심 원칙

최고 성능 우선 배정

가장 좋은 GPU부터 가용 여부를 확인하고 배정합니다. 사용자가 GPU를 선택할 필요 없이, 시스템이 최적의 자원을 자동으로 골라줍니다.

연구실 단위 공정성

GPU 사용량을 연구실(Lab) 단위로 추적하여, 누적 사용량이 적은 연구실이 우선 배정됩니다. 한 연구실이 자원을 독점할 수 없습니다.

자동 장애 대응

GPU 메모리 부족(OOM) 시 더 큰 GPU에서 자동 재시도합니다. 노드 장애 시 해당 노드를 비활성화하고 다른 노드에서 실행합니다.

유휴 자원 활용

연구 작업이 없는 GPU에서는 LLM 추론 서비스가 자동 배포됩니다. 연구 작업이 들어오면 LLM이 즉시 양보합니다.

GPU TIERS

GPU 티어 시스템

플랫폼의 GPU는 티어(Tier) 단위로 관리됩니다. 각 티어는 GPU 모델, VRAM, 연산 성능(TFLOPS)이 다르며, 성능 순위(sort_order)에 따라 높은 티어부터 배정됩니다.

현재 GPU 티어

GPUVRAM수량CPU/GPURAM/GPU우선순위
NVIDIA RTX 4090 24 GB 2장 10 코어 60 GB 높음 (우선 배정)
NVIDIA RTX 3080 Ti 12 GB 6장 4 코어 15 GB 보통
NVIDIA RTX Pro 6000 96 GB 2장 TBD TBD 높음 (대형 모델 전용)
데이터 기반 확장: 새로운 GPU가 추가되면 티어 테이블에 행을 추가하는 것만으로 시스템에 반영됩니다. 코드 수정이 필요 없습니다.

배정 흐름

작업이 제출되면, 스케줄러가 5초 간격으로 다음을 수행합니다:

  1. 모든 활성 티어를 성능 순(높은 순)으로 정렬
  2. 각 티어의 Slurm 파티션에서 유휴 GPU 수를 조회
  3. 유휴 GPU가 있는 티어 중 가장 좋은 티어에 배정
  4. 모든 티어가 사용 중이면 대기열에서 대기
RTX 4090 유휴? YES → 배정
4090 없음 3080 Ti 유휴? YES → 배정
모두 사용 중 대기열에서 대기

SCHEDULING

배정 정책

스케줄러는 풀 스캔(Pool-Scan) 방식으로 동작합니다. 매 주기(5초)마다 전체 GPU 풀을 확인하고, 대기 중인 작업 중 가장 우선순위가 높은 작업을 가장 좋은 GPU에 배정합니다.

작업 생명주기

제출 개인 대기열 글로벌 대기열 GPU 배정 실행 완료
상태위치설명
USER_QUEUE_WAIT개인 대기열동시 실행 한도 초과 시 개인 큐에서 대기
GLOBAL_QUEUE_WAIT글로벌 대기열GPU 배정 대기 중 (스케줄러가 여기서 작업을 선택)
ASSIGNEDSlurmGPU가 배정되어 실행 준비 중
RUNNINGSlurmGPU에서 실행 중
ESCALATION_WAIT글로벌 대기열OOM 후 더 큰 GPU 대기 중

스케줄러 주기

작업주기설명
스케줄러 (배정)5초대기 작업을 유휴 GPU에 배정
리콘실러 (상태 동기화)10초Slurm 상태를 DB에 반영
큐 스윕 (승격)60초개인 대기열 → 글로벌 대기열 승격

FAIR-SHARE

공정성 정책 (Fair-Share)

GPU 배정의 우선순위는 연구실(Lab) 단위 누적 사용량으로 결정됩니다. 같은 시점에 여러 연구실의 작업이 대기 중이라면, 누적 사용량이 가장 적은 연구실의 작업이 먼저 배정됩니다.

사용량 계산

사용량은 GPU를 점유한 시간 전체를 기준으로 계산됩니다 — 잡이 실제로 실행된 시간뿐만 아니라, 멀티 GPU 잡이 추가 GPU를 기다리며 일부 GPU를 선점하고 있던 시간도 포함됩니다.

사용량 = (점유 GPU 수) × (점유 시간 초) × (티어 TFLOPS)    [단위: TFLOP-seconds]

예를 들어, RTX 4090 (82.6 TFLOPS) 1장을 1시간 실행하면:

1 × 3,600 × 82.6 = 297,360 TFLOP-s

2장을 30분 실행 + 1장을 10분 선점했다면 총합 = 297,360 + 49,560 = 346,920 TFLOP-s.

Lazy 가산: 사용량은 잡이 진행되는 동안에는 lab usage에 가산되지 않고, 잡이 어떤 형태로든 종료되는 시점(정상 종료, R3 강제 해제, cancel 등)에 한꺼번에 가산됩니다. 이 정책은 자기 잡의 reservation 비용이 자기 lab을 1순위에서 밀어내는 자살적 자기교정을 방지합니다. 자세한 산정 방식과 시점은 멀티 GPU 정책을 참고하세요.

반감기 소멸 (Half-Life Decay)

누적 사용량은 시간이 지나면 자동으로 감소합니다. 반감기는 1주일이며, 1주일이 지나면 사용량이 절반으로 줄어듭니다.

감쇠된 사용량 = 누적 사용량 × 0.5 ^ (경과 시간 / 1주일)

이 방식의 장점:

OOM 면제: GPU 메모리 부족(OOM)으로 실패한 작업은 시스템 귀책이므로 사용량에 산정되지 않습니다.

배정 우선순위 결정 과정

  1. 글로벌 대기열의 모든 대기 작업을 조회
  2. 각 작업이 속한 연구실의 감쇠된 누적 사용량을 계산
  3. 사용량이 가장 적은 연구실의 작업을 선택
  4. 선택된 작업을 가장 좋은 유휴 GPU에 배정
소속 없는 작업: 연구실에 배정되지 않은 사용자의 작업은 사용량 0으로 간주되어 높은 우선순위를 받습니다. 모든 사용자는 연구실에 소속되는 것을 권장합니다.

QUEUE SYSTEM

대기열 시스템

대기열은 2단계 구조로 구성됩니다. 개인 대기열에서 동시 실행 한도를 관리하고, 글로벌 대기열에서 GPU 배정을 기다립니다.

2단계 대기열

개인 대기열 (User Queue)

각 사용자별로 독립적인 대기열입니다. 동시 실행 한도를 초과하면 여기서 대기합니다.

  • 기본 동시 실행 한도: 6개
  • 관리자가 사용자별로 1~100 범위에서 조절 가능
  • 한도 이내의 작업은 즉시 글로벌 대기열로 이동

글로벌 대기열 (Global Queue)

GPU 배정을 기다리는 모든 작업이 여기에 위치합니다. 스케줄러가 Fair-Share 기준으로 여기서 작업을 선택합니다.

  • 스케줄러가 5초마다 확인
  • Fair-Share 우선순위로 선택
  • OOM 후 재시도 작업도 여기서 대기

동시 실행 슬롯

다음 상태의 작업이 동시 실행 슬롯을 차지합니다:

상태슬롯 차지
GLOBAL_QUEUE_WAIT (GPU 대기)O
ASSIGNED (배정됨)O
RUNNING (실행 중)O
ESCALATION_WAIT (OOM 재시도 대기)O
CANCEL_REQUESTED (취소 처리 중)O
USER_QUEUE_WAIT (개인 대기)X

승격 (Promotion)

작업이 완료되면 슬롯이 하나 비게 됩니다. 시스템은 자동으로 해당 사용자의 개인 대기열에서 다음 작업을 글로벌 대기열로 승격시킵니다.

OOM HANDLING

GPU 메모리 부족 (OOM) 처리

작업이 GPU 메모리 부족(Out of Memory)으로 실패하면, 시스템이 자동으로 더 큰 GPU에서 재시도합니다. 사용자가 직접 재제출할 필요가 없습니다.

OOM 판정 기준

분류판정 기준처리
확정 OOM CUDA out of memory, torch.cuda.OutOfMemoryError 더 큰 GPU로 자동 재시도
의심 OOM Exit code 137 (SIGKILL), bad_alloc, cublas_status_alloc_failed 더 큰 GPU로 자동 재시도
OOM 아님 기타 모든 실패 재시도 없이 실패 처리

에스컬레이션 흐름

3080 Ti에서 OOM 하한선 상향 4090 이상에서만 재시도

4090에서도 OOM 더 큰 GPU 없음 최종 실패

재시도 시 JOB_ATTEMPT 환경변수가 증가합니다. 이를 활용해 체크포인트에서 학습을 재개할 수 있습니다.

사용량 면제: OOM으로 실패한 실행은 연구실 사용량에 산정되지 않습니다. 시스템이 적절한 GPU를 찾는 과정이므로 사용자에게 불이익이 없습니다.

MULTI-GPU

멀티 GPU 할당 정책

분산 학습이나 큰 모델 학습처럼 여러 장의 GPU가 필요한 작업도 같은 큐에서 공정하게 처리됩니다. 이 섹션은 우리가 채택한 정책을 — 핵심 원칙부터 미묘한 케이스까지 — 빠짐없이 설명합니다. 정책 설계 과정에서 검토한 옵션과 트레이드오프 전체는 설계 노트(2026-04-10)에서 확인할 수 있습니다.

한 문장 요약

전역 큐를 fair-share로 정렬하고, 1순위 잡이 멀티 GPU여서 매칭이 안 되면 가용한 GPU를 선점해 추가 GPU를 기다린다. 선점된 GPU 위에서 LLM 백필이 계속 동작하므로 GPU는 한순간도 놀지 않는다. 그동안의 점유 시간은 잡 종료 시점에 fair-share 사용량으로 정직하게 가산된다.

용어

용어정의식별자
GPU1 GPU 디바이스 (기본 단위)(node_name, gpu_index)
placement같은 노드 + 같은 GPU 모델로 묶인 GPU들의 집합. 멀티 GPU 잡이 단일 단위로 받아야 하는 그룹(node_name, tier_id)

placement는 별도 테이블이 아니라 gpu_resources를 (노드, 티어)로 GROUP BY 해서 자동 도출되는 derived view입니다. 노드를 추가/제거하면 자동 반영됩니다. 두 가지 속성 — capacity(정적 GPU 총수)와 idle(동적, 비어있는 GPU 수) — 을 가집니다. LLM 백필이 점유 중인 GPU도 idle로 봅니다(양보 가능하기 때문).

예시: gpu-4090x2 노드에 4090×2 → placement 1개 (capacity=2). 가상의 노드에 4090×4 + 5090×4 → placement 2개 (각각 capacity=4).

요청 가능 범위 — 모든 사용자에게 동일

잡 제출 시 num_gpus1~8 사이여야 합니다. 실제 배정은 매칭되는 placement의 capacity와 티어의 max_gpus를 넘지 못합니다. 현재 RTX 4090 / RTX 3080 Ti 모두 max_gpus = 2이므로 사실상 한 잡당 최대 2장입니다.

역할에 따른 차별 없음: 사용자 역할(Student / Professor / Admin)은 조직 관리용 개념입니다 — 연구실 멤버십, 멤버 추가/제거, 시스템 운영 권한 등에만 적용됩니다. GPU 자원 사용 권한에는 역할에 따른 차이가 없습니다. 모든 사용자가 동일한 num_gpus 범위에서 잡을 제출하고, 동일한 fair-share 정책으로 매칭됩니다. 멀티 GPU 잡의 우선순위는 오직 연구실 누적 사용량(lab.cumulative_usage)으로만 결정됩니다.

잡의 매칭 조건 (2단계)

조건정의언제 평가
fit잡이 이 placement에서 원리상 실행 가능: placement.tier.sort_order ≥ job.minimum_tier AND placement.capacity ≥ job.num_gpus잡 제출 시 한 번 (정적)
available지금 즉시 dispatch 가능: fit AND placement.idle ≥ job.num_gpus매 5초 dispatch 주기 (동적)

잡 제출 시 fit한 placement가 하나도 없으면 즉시 거부합니다 (422 NO_FIT_PLACEMENT). 예를 들어 num_gpus=4를 요청했는데 모든 placement의 capacity가 2라면, 영원히 큐에서 못 빠져나오는 상황을 사전에 차단합니다.

큐 — 단일 전역, 매 주기 재계산

글로벌 대기열은 딱 하나입니다. GPU별/노드별/티어별/multi-single 분리 큐가 아닙니다. 모든 잡이 — num_gpus가 1이든 2든 8이든 — 같은 한 줄에 들어가서 fair-share로 정렬됩니다:

ORDER BY lab.cumulative_usage ASC, queue_entered_at ASC

이 정렬은 매 5초 dispatch 주기마다 다시 계산됩니다. 그래서 "1순위" 같은 표현은 잡의 고정 속성이 아니라 지금 이 주기에서의 위치를 의미합니다. 잡들이 들어오고 나가고, 사용량이 누적되면 다음 주기에 순위가 바뀔 수 있습니다.

[글로벌 대기열, 어느 한 주기]
  ├─ jobA  (lab=BCG, num_gpus=2,  cumulative=24k)   ← 1순위
  ├─ jobB  (lab=KDG, num_gpus=1,  cumulative=30k)
  ├─ jobC  (lab=OSL, num_gpus=2,  cumulative=116k)
  └─ jobD  (lab=OSL, num_gpus=1,  cumulative=116k)

핵심 원칙 — 큐 순서를 절대 어기지 않는다

JPU-Share의 매칭 정책은 한 줄로 요약됩니다: fair-share 1순위 잡은 절대 다음 차례를 양보하지 않는다. 1순위 잡이 멀티 GPU여서 가용한 placement가 부족해도, 뒤에 있는 싱글 잡이 새치기해서 먼저 들어오는 일은 없습니다. 대신 1순위 잡은 가용 GPU를 선점(reservation)해두고 나머지 GPU가 모일 때까지 기다립니다.

Dispatch 알고리즘 (매 5초)

1. placement별 (capacity, idle) 조사
   - 활성 reservation이 점유한 GPU는 idle에서 차감
2. 잡을 fair-share 키로 정렬
3. 1순위부터 잡을 차례로 검사:

   (a) 잡의 fit placement 중 available한 게 있으면:
       → 즉시 dispatch
       → 만약 이 잡이 다른 placement에서 reservation 보유 중이었으면
         그 reservation 해제 (★ swap — 더 빠른 경로로 점프)

   (b) available 없음 + 잡이 reservation 보유:
       → 같은 placement의 추가 idle을 reservation에 흡수
       → 충족되면 (a)로 복귀하여 dispatch

   (c) available 없음 + reservation 미보유 + 잡이 1순위 + num_gpus ≥ 2:
       → 새 reservation 시작
       → placement 선택: tier sort_order DESC, 같으면 idle DESC

4. 다음 순위 잡으로 진행 (이미 사용된 GPU는 빼고 계산)

핵심은 (a)의 swap입니다. 매 주기마다 "지금 즉시 dispatch 가능한 placement가 있는지"를 가장 먼저 확인합니다. 그래서 placement A에서 1장 reserve 중인데 placement B에서 갑자기 2장 동시에 free되는 시나리오가 자연스럽게 처리됩니다 — 다음 주기에 (a)가 B를 발견하고 그쪽으로 dispatch, A의 reservation은 자동 해제됩니다.

Reservation 규칙 5조

ID규칙
R1reservation은 num_gpus ≥ 2 잡에만 적용. 싱글 GPU 잡은 idle 1장 보이는 즉시 dispatch만
R2reservation 시작 권한은 fair-share 1순위만. 2순위 이하 멀티 잡은 권한 없음 (그냥 대기)
R3reservation 잡이 외부 사용량 변동(다른 잡 종료, 다른 lab의 새 잡 등)으로 1순위 자리에서 밀려나면 즉시 강제 해제. 그때까지의 선점 시간은 잡 종료 시점에 lab usage로 가산
R4잡당 동시 reservation 1개만. 한 번 잡은 placement는 변경 불가 (단, swap rule (a)로 다른 placement에서 dispatch는 가능)
R5노드 down 등으로 placement가 사라지면 reservation 강제 해제. 잡은 GLOBAL_QUEUE_WAIT로 복귀

사용량 가산 — Lazy 정책

Reservation 진행 중에는 lab의 cumulative_usage에 아무것도 가산하지 않습니다. 가산은 잡이 어떤 형태로든 종료되는 시점에 한꺼번에 일어납니다. 이 정책을 "Lazy 가산"이라고 부릅니다.

잡 종료 사건가산되는 비용
dispatch 성공 → 정상 종료선점 비용 + 실행 비용 (전부)
R3 강제 해제 (1순위에서 밀림)선점 비용만
Cancel (reservation 중)선점 비용만
Placement 사라짐 (R5)선점 비용만
선점 비용 = (선점 GPU 수) × (선점 시간 초) × (티어 TFLOPS)
실행 비용 = (실행 GPU 수) × (실행 시간 초) × (티어 TFLOPS)

핵심 invariant: 잡이 점유한 모든 GPU-second는 빠짐없이 lab usage로 가산됩니다. 다만 가산 시점이 lazy(잡 종료 시점)일 뿐입니다.

예시 — num_gpus=2 잡이 4090 1장을 10분 선점한 뒤 추가 1장이 들어와 30분간 정상 실행되었다면:

단계점유 GPU시간TFLOPS사용량 (TFLOP-s)
선점1장10분 (600초)82.649,560
실행2장30분 (1,800초)82.6297,360
잡 종료 시점에 한꺼번에 가산346,920

R3 시나리오 예시 — internal vs external trigger

가장 미묘한 케이스입니다. Lazy 가산의 핵심은 자기 잡의 reservation 비용으로 자기가 1순위에서 밀려나는 자살적 자기교정을 차단하는 것입니다. 1순위에서 밀리는 일은 오직 외부 사용량 변동에 의해서만 발생해야 합니다.

T+0:    잡X (BCG, num_gpus=2) reservation 시작. 1순위. 1/2장 선점.
        잡Y (BCG, num_gpus=1, 다른 사용자) 별도로 RUNNING 중.
        BCG.cumulative_usage = 24k

T+5분:  잡Y 정상 종료 → record_job_usage(Y) → BCG.cumulative_usage += 잡Y 비용
        → BCG = 32k. 다른 lab KDG (28k) < BCG. KDG가 1순위로 올라옴.

T+5분+ε: 다음 dispatch 주기. 잡X는 2순위로 강등.
        → R3 발동: 잡X reservation 강제 해제
        → 선점 비용 (1장 × 5분 × 82.6 ≈ 24,780) BCG에 가산
        → 잡X는 GLOBAL_QUEUE_WAIT로 복귀

T+15분: KDG 잡들 진행/종료로 다시 BCG가 1순위 됨
        → 잡X 다시 reservation 시작 가능 (처음부터)

이게 사용자 직관과 일치합니다 — 내가 한 일 때문에 밀리는 게 아니라 다른 사람들의 활동 때문에 밀립니다. Reservation 자체는 lab usage 변동을 만들지 않으므로, 자기 잡의 reservation 때문에 자기가 1순위에서 떨어지는 일은 발생하지 않습니다.

이 정책이 보장하는 것

리소스 비례 할당 (CPU / RAM)

멀티 GPU 잡은 GPU 수에 비례해서 CPU와 RAM도 함께 점유합니다. GPU 1장당 충분한 데이터로더/메모리를 보장하기 위한 설계입니다.

요청 GPU 수RTX 4090 (CPU 10 / RAM 60GB per GPU)RTX 3080 Ti (CPU 4 / RAM 15GB per GPU)
1장CPU 10코어 + RAM 60GBCPU 4코어 + RAM 15GB
2장CPU 20코어 + RAM 120GBCPU 8코어 + RAM 30GB

의도된 한계

설계 노트 — 우리가 고민한 것들

이 정책은 단순히 떠올린 게 아니라 여러 트레이드오프를 거쳐 결정된 것입니다. 핵심 결정과 그 이유를 짧게 정리합니다 — 전체 논의 흐름은 설계 노트(2026-04-10)를 참고하세요.

결정대안왜 이 선택?
단일 전역 큐 tier별 큐 / multi-single 분리 큐 단순함. 정렬 키는 fair-share 하나로 충분. 분리 큐는 starvation/관리 복잡도 폭증
placement 단위 매칭 노드 단위 / GPU 단위 이종 GPU 노드를 자연스럽게 처리. 멀티 GPU의 단일 노드 제약과 정확히 일치. 노드 분산 false positive 자동 해결
1순위 잡 절대 양보 안 함 (선점) head-of-line skip (multi 잡 건너뛰고 single 우선) skip은 멀티 GPU starvation의 위험이 큼. 큐 순서가 직관과 일치하는 게 운영자/사용자 모두에게 명확함
선점된 GPU 위에서 LLM 계속 동작 선점 = GPU idle 유지 LLM 백필이 있는 우리 환경에서는 utilization 손실 0이 자동으로 보장됨. reservation의 가장 큰 약점이 사라짐
Lazy 가산 (잡 종료 시점) Eager 가산 (매 주기 incremental) Eager는 자기 잡 reservation이 자기 lab usage를 끌어올려 자기를 1순위에서 밀어내는 자살적 자기교정이 발생. 사용자 직관과 어긋남. Lazy로 가면 외부 변동에 의한 R3만 발생, 빈도 자연 감소
multi-GPU 부담 인정 multi 보조 / 선점 비용 할인 multi 잡이 single보다 약간 비싸지는 건 클라우드 가격 모델과 일관됨. 정직한 청구권 소비. 보조는 매직 넘버를 만들고 인센티브를 왜곡함
LLM 즉시 종료, timeout 없음 30초 timeout 후 강제 종료 LLM 라우터가 종료 진행 중 모델로의 dispatch 차단을 자체 처리. 우리 쪽 코드가 단순해지고 책임 분리도 명확해짐

핵심 가치: 단순함과 정직함. 새 enum 0개, 새 테이블 0개, 새 worker loop 0개로 구현됩니다. Job 테이블에 컬럼 4개만 추가하면 됩니다.

LLM BACKFILL

LLM 백필 (유휴 GPU 활용)

연구 작업이 없는 유휴 GPU에서는 LLM(대규모 언어 모델) 추론 서비스가 자동으로 배포됩니다. 이를 통해 GPU가 놀지 않고 항상 활용됩니다.

선점 (Preemption) 정책

연구 작업과 LLM의 관계는 명확합니다:

GPU 유휴 LLM 자동 배포 연구 작업 도착 LLM 양보 연구 작업 실행
사용자 영향 없음: LLM 백필은 완전히 자동이며 연구 작업의 대기 시간에 영향을 주지 않습니다. 연구 작업이 들어오면 LLM은 지연 없이 양보합니다.
선점된 GPU도 활용: 멀티 GPU 잡이 추가 GPU를 기다리며 일부 GPU를 선점한 상태에서도, 그 GPU 위에서는 LLM 백필이 계속 동작합니다. 선점은 "다른 연구 잡 배정 금지" 마크일 뿐이고, LLM은 양보 가능하므로 GPU는 한순간도 놀지 않습니다. 이것이 멀티 GPU 정책에서 utilization 손실이 발생하지 않는 이유입니다.
즉시 종료 정책: reservation이 충족되어 dispatch 시점이 되면, 우리 쪽에서는 그 placement의 LLM 컨테이너에 즉시 종료 명령을 보내고 곧바로 sbatch를 실행합니다. LLM 양보 timeout은 두지 않습니다 — 종료 진행 중인 LLM 모델로 신규 dispatch가 가지 않도록 하는 것은 LLM 라우터의 책임입니다. 책임 분리로 우리 쪽 스케줄러 코드가 단순해집니다.

ISOLATION & SECURITY

격리와 보안

모든 작업은 안전하게 격리된 환경에서 실행됩니다.

컨테이너 격리

네트워크 격리

스토리지 격리

작업 제한

항목제한
기본 실행 시간최대 24시간 (기본값)
최소 실행 시간60초
최대 실행 시간72시간
소스 코드 (zip)최대 500 MB, 해제 후 10 GB, 파일 수 10,000 개
동시 실행 (기본)6개

작업 취소

사용자가 작업을 취소하면 다음 절차로 처리됩니다:

  1. SIGTERM 신호 전송 (정상 종료 요청)
  2. 30초 대기 (프로세스가 체크포인트를 저장할 시간)
  3. 여전히 실행 중이면 5분 후 SIGKILL 강제 종료

MAINTENANCE MODE

점검 모드 (Maintenance Mode)

NFS 볼륨 교체, Slurm controller 점검 등 전역 운영 작업이 필요할 때 관리자가 시스템을 점검 모드로 전환합니다. 점검 중에는 새로운 작업 제출이 차단되고, 웹 콘솔 상단에 배너가 표시됩니다.

상태 단계

  1. DRAINING: 새 작업 제출 차단. 실행 중인 사용자 작업은 정상 완료. LLM backfill은 계속 동작하여 유휴 GPU 활용.
  2. BACKFILL_RECOVERY: 사용자 작업이 모두 종료된 후 LLM backfill 자동 회수.
  3. ACTIVE: backfill 완료 후 진입. 이 시점부터 운영 작업 수행 가능.
  4. NORMAL 복귀: 관리자가 점검 종료 시 이전 대기 작업이 우선순위대로 자동 실행됩니다.

사용자 영향

사용 가이드 콘솔 메인 페이지