학습 컨테이너 만들기
기존 방식으로 빌드한 학습 도커 이미지를 플랫폼 학습 마법사에서 실행하는 계약과 절차
필요 권한: 개발DEVELOPER · OPERATOR · ADMIN
학습 도커 이미지는 평소 방식대로 빌드. 이미지에 플랫폼 스크립트를 넣지 않으며, 별도의 표준 출력 형식도 없음.
범위: 학습 이미지의 외부 계약과 검증 절차. 모델 알고리즘은 제외.
요약
| 항목 | 내용 |
|---|---|
| 전달물 | docker save 로 만든 이미지 tar (+ 태그 이름 · sha256) |
| 실행 | 플랫폼이 이미지의 ENTRYPOINT 를 그대로 실행. 커맨드를 덮어쓰지 않음. |
| 입력 | 학습 데이터는 플랫폼이 미리 내려받아 /geo/dataset 에 저장. 다운로드 코드, 스토리지 자격 증명 모두 불필요. |
| 설정 | 하이퍼파라미터·태스크·GPU 모두 환경 변수로 전달 |
| 출력 | 보존할 결과는 모두 MLflow 에 업로드. 컨테이너 파일 시스템은 실행 종료 시 삭제. |
| 종료 | exit 0 = 성공, 그 외 = 실패 |
학습 한 건의 흐름
학습 한 건은 Kubernetes Job 하나(파드 하나) 로 실행. ①③, ⑧⑩ 은 플랫폼이 처리, 컨테이너는 ④~⑦ 에만 관여.

- MLflow run 은 학습 컨테이너 기동 전에 이미 생성(①). 대기열에서 나와 실행 준비 시 플랫폼이 생성. 컨테이너의
mlflow.start_run()은 그 run 을 이어받음(④). 컨테이너가 run 을 끝내지 못하고 비정상 종료되어도 최종 상태는 플랫폼이 종료 코드 기준으로 마감(⑧). - 로그와 지표는 경로가 다름. 표준 출력은 화면의 라이브 로그에만 표시, 곡선과 진행률은 플랫폼이 MLflow 에서 읽음(⑤).
print로 출력한 숫자는 곡선으로 표시되지 않음. - 데이터 준비는 학습 코드 시작 전에 완료(②). 파드의 init 컨테이너가 데이터셋을 내려받아
/geo/dataset에 저장한 뒤 학습 이미지 실행.
서버가 표시하는 6단계
학습 상세 화면의 진행 단계 는 6단계로 고정. 모든 단계는 플랫폼이 관측한 사실로만 진행. 트레이너는 단계를 보고하지 않음(보고 수단도 없음).
| # | 스텝 키 | 화면 이름 | 단계 내용 |
|---|---|---|---|
| 1 | queue | 실행 대기 | 제출부터 실행 슬롯이 확보될 때까지 |
| 2 | runtime_prepare | 학습 환경 준비 | 실행용 토큰과 이미지 pull 자격 증명 발급, Job 생성, 파드 배치와 이미지 내려받기 |
| 3 | data_stage | 데이터셋 준비 | init 컨테이너가 데이터셋을 배치하는 동안. 진행률은 없고, 학습 컨테이너가 시작되면 완료 |
| 4 | train | 학습 | 이미지의 ENTRYPOINT. 진행률 = MLflow 의 max(step)+1 / params.epochs |
| 5 | register | 모델 레지스트리 등록 | 검토 단계에서 등록을 활성화했으면 로깅된 모델을 레지스트리에 새 버전으로 등록 |
| 6 | finalize | 결과 정리 | 상태 마감, 실행용 토큰 회수 |
이 절의 순서
- 트레이너의 책임 3가지: 지표, 모델 로깅, 종료 코드
- 컨테이너 내부 경로와 환경 변수
- MNIST 예제 전체: 복사한 뒤 학습 코드만 수정해 사용하는 완성 예제
- 로컬에서 먼저 검증하기
- 플랫폼에 이미지 업로드하기: tar 반입 또는
docker push - 마법사에서 선택할 수 있도록 등록하기: 외부 이미지 변형
- 카탈로그 등록: 새 프레임워크·모델·하이퍼파라미터를 이미지 라벨이나 관리자 화면으로 등록
- 내장 학습 런타임: YOLO · RF-DETR · Pointcept
- 사전학습 가중치
- 자주 발생하는 실패