사전학습 가중치
시작 가중치의 두 출처(카탈로그 미러, 테넌트가 업로드한 파일)와 트레이너의 pretrained.path 규칙
학습의 시작 가중치는 두 출처 중 하나에서 가져옴. 마법사 3단계에서 모델 선택 시 함께 선택.
| 출처 | experiment.json 의 pretrained | 트레이너가 할 일 |
|---|---|---|
| 카탈로그(기본): 모델 변형의 공개 체크포인트 | {"source": "catalog"} | 없음. 프레임워크가 기본 동작대로 탐색. |
| 테넌트가 업로드한 가중치 | {"source": "tenant", "name": "…", "path": "/geo/work/weights/tenant/<파일>"} | path 의 파일을 반드시 사용 |
카탈로그 가중치: 미러는 최적화
플랫폼은 카탈로그 모델의 공개 체크포인트를 오브젝트 스토리지에 미러(복사본)로 저장. 대상은 카탈로그에 체크포인트가 등록된 YOLO · RF-DETR · Pointcept 변형. 학습 컨테이너 기동 전에 프레임워크가 찾는 위치에 미리 배치: YOLO 는 작업 디렉터리(/geo), RF-DETR 은 RF_HOME(/geo/work/weights), Pointcept 는 /geo/work/weights. 파일이 이미 있으면 프레임워크는 다운로드를 건너뛰므로, 미러가 채워져 있으면 폐쇄망에서도 학습 실행 가능.
미러가 비어 있으면 첫 학습이 인터넷에서 내려받아 미러를 채움. 아래는 준비 컨테이너(stage-dataset)의 로그. 이 로그는 학습 상세 화면에 표시되지 않으며, 운영자가 kubectl -n tenant-<코드> logs <파드> -c stage-dataset 로 확인.
-> weights: mirror miss (… yolo26n.pt: … Not Found), trying upstream
-> weights: mirrored s3://mlflow/runtime-weights/yolo/…/yolo26n.pt
-> weights: yolo26n.pt 5MB from upstream in 1s
그다음 학습부터는 -> weights: yolo26n.pt 5MB from mirror in 0s 출력.
미러 관리(미리 채우기, 비우기)는 시스템 관리자가 수행. 방법은 관리자 가이드 참고.
테넌트가 업로드한 가중치
이미 학습한 자체 체크포인트에서 이어서 학습할 때 사용. 학습 화면 상단의 사전학습 가중치 링크(주소 /training/weights)로 이동해 가중치 올리기 로 .pt/.pth 파일 업로드.
- 업로드 시 프레임워크와 모델 변형 선택. 선택지는 카탈로그에 공개 체크포인트가 있는 변형뿐. 체크포인트는 아키텍처에 종속되므로 마법사는 선택한 변형의 가중치만 표시하고, 서버도 제출 시 다시 확인.
- 업로드 뒤 서버가 파일을 병합하고 검사하는 동안에는 선택 불가. 상태가 준비 완료가 되면 마법사 3단계의 시작 가중치에 표시.
트레이너 규칙: pretrained.path 는 반드시 사용하고, 없으면 실패
source 가 tenant 이면 트레이너는 experiment.json 의 pretrained.path 가 가리키는 파일에서 시작해야 함. 그 파일을 읽지 못하면 실패로 종료해야 함. 알리지 않고 공개 가중치로 대신 시작하면, 아무도 선택하지 않은 가중치로 학습한 실행이 성공으로 보고됨.
import json, os, sys
from pathlib import Path
config = json.loads(Path(os.environ["GEO_CONFIG"]).read_text())
pretrained = config.get("pretrained") or {"source": "catalog"}
if pretrained["source"] == "tenant":
weights = Path(pretrained["path"])
if not weights.is_file():
sys.exit(f"선택한 사전학습 가중치가 없습니다: {weights}")
model = load_from_checkpoint(weights) # 반드시 이 파일에서 시작
else:
model = load_default_pretrained() # 프레임워크 기본 (미러가 있으면 거기서)
가중치 파일을 배치하지 못하면 준비 컨테이너가 먼저 실패해 학습 컨테이너가 기동되지 않음. 화면에는 자주 발생하는 실패 의 알려진 표시 문제처럼 표시. 트레이너는 파일이 있는 경우에만 실행. 위 검사는 규칙을 코드로 명시하는 안전장치.