지난주 모델이 더 좋았는데 아무도 못 찾는다 · 돌린 사람만 아는 숫자 · 실습
지난주 그 모델을 아무도 못 찾는다
목표
학습 한 번을 '실행(run)' 이라는 기록 단위로 만들고, 파라미터·지표·코드와 데이터 지문을
원장에 남겨 나중에 그 실행을 되살릴 수 있게 만듭니다. 마지막에는 기록을 남기지 않은
실행이 어떻게 사라지는지를 실제 로그로 확인합니다.
왜 중요한가
모델을 잘 만드는 일과 그 모델을 다시 만드는 일은 다른 일입니다. 학습은 난수 씨앗·데이터
버전·전처리 코드에 모두 의존하는데, 그중 하나만 적어 두지 않아도 두 달 뒤에는 같은 숫자가
나오지 않습니다. 실험 추적 도구가 하는 일은 화려한 그래프가 아니라 **한 번의 학습을 다시
세울 수 있을 만큼의 사실을 강제로 적게 하는 것**입니다. 여기서는 그 최소 집합을 직접
설계해 봅니다 — 도구가 자동으로 채워 주던 칸을 손으로 채워 보면, 나중에 그 칸이 비어 있는
원장을 보고 바로 알아채게 됩니다.
단계
1. 실험 정의 — 무엇을 최대화할지 먼저 적습니다.
2. 첫 실행을 원장에 한 줄로 남깁니다.
3. 파라미터를 바꿔 가며 실행을 4개 이상으로 늘립니다.
4. 모든 실행에 코드·데이터 지문을 붙입니다.
5. 목표 지표로 최고 실행을 원장에서 다시 뽑습니다.
6. 기록만 보고 그 실행을 재현합니다.
7. 기록 없이 사라진 실행을 조사합니다.
8. 원장을 스스로 서는 꾸러미로 내보냅니다.
참고
- 작업은 전부
/root/mlops아래에서 합니다. 먼저mkdir -p /root/mlops를 하세요. - 재료는
/opt/fixtures/mlops에 있습니다. 데이터 설명은DATA-CARD.md를 보세요. - 학습기 실행 예: `python3 /opt/fixtures/mlops/train_model.py --train /opt/fixtures/mlops/train.csv
- 채점기는 원장에 적힌 인자로 학습기를 다시 돌려 지표를 대조합니다. 숫자를 지어 쓰면 걸립니다.
- 흔한 실수 —
matches나reproducible을 문자열"true"로 적는 것, 그리고 원장을 - 실습 파드에는 볼륨이 없습니다. 세션이 끝나면
/root는 통째로 사라지니, 남기고 싶은 것은
--valid /opt/fixtures/mlops/valid.csv --lr 0.1 --epochs 40 --seed 7`
덮어쓰기(w)로 열어 앞 실행을 지우는 것입니다.
8단계의 꾸러미처럼 따로 복사해 두세요.
단계 8개
- 무엇을 잘한 것으로 볼지 먼저 적는다
- 첫 실행을 원장에 한 줄로 남긴다
- 네 번 더 돌리고 비교할 수 있게 만든다
- 코드와 데이터에 지문을 찍는다
- 가장 좋은 실행을 원장에서 다시 뽑는다
- 기록만 보고 그 실행을 되살린다
- 기록 없이 사라진 실행을 조사한다
- 세션이 끝나기 전에 원장을 들고 나간다