지난주 모델이 더 좋았는데 아무도 못 찾는다 · 같은 이름, 다른 데이터 · 실습
같은 이름의 CSV 가 어제와 다르다
목표
학습 데이터에 지문을 찍어 버전으로 삼고, 무엇이 정상인지를 선언한 계약으로 새 수집분을
검사하고, 학습·평가 분할이 겹쳤을 때 지표가 실제로 얼마나 움직이는지를 재 봅니다.
왜 중요한가
재현이 깨지는 자리는 대개 코드가 아니라 데이터입니다. train.csv 라는 이름은 그대로인데
안의 행이 바뀌어도 아무 경고가 없고, 지표만 조금 달라집니다. 그래서 데이터에는 이름이
아니라 내용의 해시를 버전으로 붙이고, 정상 범위를 미리 선언해 두었다가 새로 들어온
수집분을 기계로 대 봅니다. 계약을 어긴 행을 조용히 버리지 않고 격리해 두는 것도 같은
이유입니다 — 조용히 줄어든 표본은 몇 달 뒤 "왜 성능이 떨어졌지" 로 돌아옵니다.
마지막 두 단계는 흔한 오해 하나를 실측으로 깹니다. 누수가 있으면 지표가 눈에 띄게
오를 것 같지만, 기억력이 약한 모델에서는 거의 움직이지 않습니다.
단계
1. 세 분할의 지문(해시·크기·행 수·머리글)을 뜹니다.
2. 업무 규칙으로 데이터 계약을 선언하고 학습 데이터가 그 안에 드는지 확인합니다.
3. 새 수집분을 계약에 대 보고 위반을 목록으로 만듭니다.
4. 위반 행을 격리하고 학습에 쓸 행만 따로 남깁니다.
5. 망가진 분할에서 겹치는 고객을 찾아냅니다.
6. 겹침을 걷어 내고 두 번 학습시켜 지표 차이를 잽니다.
7. 지금까지의 사실과 한계를 데이터 카드로 묶습니다.
참고
- 작업은 전부
/root/datacontract아래에서 합니다. 먼저mkdir -p /root/datacontract를 하세요. - 재료는
/opt/fixtures/mlops에 있고, 열 설명은 같은 폴더의DATA-CARD.md에 있습니다. - 행 번호는 언제나 머리글을 뺀 1부터입니다. 채점기도 같은 규칙으로 셉니다.
- 흔한 실수 — 빈 문자열을
0으로 읽어 위반을 놓치는 것, 그리고 CSV 를 다시 쓸 때 - 실습 파드에는 볼륨이 없어 세션이 끝나면
/root가 사라집니다. 오래 걸릴 것 같으면
머리글을 빠뜨리는 것입니다.
먼저 +시간 으로 연장하세요.
단계 7개
- 같은 이름의 파일이 같은 파일인지 확인한다
- 무엇이 정상인지 선언한다
- 새로 들어온 수집분을 계약에 대 본다
- 버린 행도 남긴다
- 분할이 겹쳤는지 구조로 확인한다
- 누수를 걷어 내고 지표가 얼마나 움직이는지 잰다
- 이 데이터로 무엇을 말할 수 있는지 적는다