정책의 생애주기¶
run(학습) → candidate → 평가 → 게이트 → 승인 → validated → 롤아웃 → deployed → retired. 건너뛰는 길은 없다.
런 — ② 학습¶
콘솔 런 → 런 제출. Argo train 워크플로가 실행된다.
| 단계 | 하는 일 |
|---|---|
| clone | 저장소를 git_ref 로 받아 commit hash 를 고정 |
| resolve | config 해석·hash, dvc pull·dvc.lock hash, 파드 imageID 로 이미지 digest. MLflow run 생성. 네 값 중 하나라도 없으면 중단 |
| train-teacher | GPU 1장에서 train.py. 체크포인트를 $CKPT_DIR 에 저장하고 MLflow 에 업로드. 선점·장애 시 최신 체크포인트에서 재개 |
| finalize | 최종 체크포인트로 레지스트리에 버전 생성, 태그 stage=candidate |
결과는 candidate 정책 하나. 학습 곡선만 있고 쓸 만한지는 아직 모른다. sweep 을 지정하면 train-teacher 대신 Ray Tune 이 돌고 최적 trial 이 candidate 가 된다 (스윕).
평가 — ③ 전반부¶
콘솔 정책 → 평가. Argo evaluate-promote 워크플로.
| 단계 | 하는 일 |
|---|---|
| prepare | 런 태그에서 commit·config 를 읽고 최종 체크포인트를 받는다 |
| evaluate | evaluate.py 로 suite 의 시나리오 × 시드 5개 롤아웃 → report.json. 런 아티팩트 eval/<suite>/ |
| regression-check | 게이트. gate.required 최소치 미달, 또는 현재 validated 와 비교해 유의한 하락(Welch t-test p<0.05, 효과 크기 임계 suite 명시) 이면 실패 |
| export | export.py → policy.onnx + io_spec.json. ONNX Runtime 으로 1000 스텝 지연 측정, 1000/control_hz ms 안이어야 통과 |
| approve | 프로젝트가 수동 승인이면 여기서 멈춘다 (suspend) |
| promote | validated alias 를 이 버전으로 |
게이트 결과는 정책 행의 gate 배지와 report 모달(사유 포함)에 보인다. 실패한 candidate 는 그대로 남고 재평가할 수 있다.
승인 — ③ 후반부¶
사람의 결정. 콘솔 정책 → 승인 / 거부. 승인 다이얼로그에 리포트 요약이 뜬다.
- RLflow DB 에 결정(누가·언제·사유)을 기록한 뒤 MLflow alias 를 바꾼다. 둘 중 하나가 실패하면 결정을 되돌린다.
validated는 프로젝트당 1개. 이전 validated 는 candidate 로 내려간다.- validated 정책이 다음 평가의 회귀 비교 기준이 된다.
롤아웃 — ⑤ 실기¶
validated 정책만 시작할 수 있다. 콘솔 롤아웃 에서 순서대로 체크한다.
- 벤치 — 로봇 고정, 관절 명령 한계 50%, 안전 래퍼 동작 확인
- 테더/보호구 — 정상 한계, 사람 감독
- 제한 공간 — 무감독 반복, 텔레메트리 수집
- deployed — 이전 deployed 는 retired 로 이동
각 단계에 담당·시각·비고가 남는다. 순서를 건너뛰면 거부된다.
롤백¶
콘솔 정책 → 롤백. 현재 deployed 를 retired 로, 직전 retired 를 deployed 로. 사유를 기록한다.
단계의 진실¶
단계의 유일한 진실은 MLflow Model Registry 다. 버전 태그 stage 와 alias validated·deployed. RLflow 는 결정을 기록하고 alias 를 바꾸며, MLflow UI 에서 직접 바뀐 경우 5분 안에 감지해 이벤트로 남긴다 (되돌리지 않는다). 상세: ADR.