ML Batch Predict 시드 운영자 가이드
scripts/seed_demo_credit_risk.py (#1358) 의 운영자 절차 + 트러블슈팅.
일반 사용
상세 절차: seed-ml-batch.md (dev-deploy).
본 문서는 운영자 (AKS prod) 관점에서 자주 발생하는 시나리오 추가 정리.
시나리오 1: 신규 환경 첫 시드
# AKS prod
kubectl --context aks-genos-prod -n gend port-forward svc/mlflow 5000:5000 &
kubectl --context aks-genos-prod -n gend port-forward svc/trino 8080:8080 &
sleep 5
MLFLOW_TRACKING_URI=http://localhost:5000 \
TRINO_HOST=localhost TRINO_PORT=8080 \
make seed-demo-ml
시나리오 2: 모델 재학습 (기존 alias 갱신)
seed_demo_credit_risk.py 는 create_model_version + set_registered_model_alias 호출 — 매번 새 version 생성 후 alias 를 새 version 으로 이동:
# 같은 명령 재실행 → demo_credit_risk v2 등록 + alias=Production 이 v2 로 이동
make seed-demo-ml-mlflow
# Trino 는 그대로 유지
시나리오 3: Trino 테이블만 갱신 (모델 유지)
make seed-demo-ml-trino
# DROP + CREATE + INSERT 10 rows (idempotent)
시나리오 4: 큰 학습셋 시뮬레이션
python scripts/seed_demo_credit_risk.py --n-train 100000
# score 가 1000-row 학습보다 안정적 — 운영 모델 시뮬레이션
Dagster Helm values 영구 적용
infra/dagster/values.yaml (또는 환경별 overlay):
deployment:
extraEnv:
- name: MLFLOW_S3_ENDPOINT_URL
value: http://seaweedfs.gend.svc.cluster.local:8333
extraEnvFrom:
- secretRef:
name: seaweedfs-credentials # AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY
수동 patch (긴급):
kubectl --context aks-genos-prod -n gend patch deploy dagster-webserver --type=json -p='[
{"op": "add", "path": "/spec/template/spec/containers/0/env/-",
"value": {"name": "AWS_ACCESS_KEY_ID", "valueFrom": {"secretKeyRef": {"name": "seaweedfs-credentials", "key": "AWS_ACCESS_KEY_ID"}}}},
{"op": "add", "path": "/spec/template/spec/containers/0/env/-",
"value": {"name": "AWS_SECRET_ACCESS_KEY", "valueFrom": {"secretKeyRef": {"name": "seaweedfs-credentials", "key": "AWS_SECRET_ACCESS_KEY"}}}},
{"op": "add", "path": "/spec/template/spec/containers/0/env/-",
"value": {"name": "MLFLOW_S3_ENDPOINT_URL", "value": "http://seaweedfs.gend.svc.cluster.local:8333"}}
]'
E2E 검증 체크리스트
시드 적용 후 ml_batch_demo_credit_risk_job 정상 실행 확인:
- MLflow:
models:/demo_credit_risk@Production다운로드 성공 - Trino:
iceberg.silver.demo_customersSELECT 10 rows - Sink:
iceberg.gold.predictions_demo_credit_riskUPSERT 10 rows (#1356 fix 후) - Lineage: ArangoDB
data_lineage에mlflow.Production.demo_credit_risk → iceberg.gold.predictions_demo_credit_riskedge 자동 생성
트러블슈팅
| 증상 | 원인 | 해결 |
|---|---|---|
connection refused 5000 | port-forward 미적용 | mlflow svc port-forward 확인 |
mlflow.RestException: alias Production not found | 시드 미실행 | make seed-demo-ml-mlflow |
trino.TrinoUserError TYPE_MISMATCH | sink.py #1356 버그 | PR #1393 머지 후 Dagster image 재빌드 |
botocore.NoCredentialsError | Dagster env 미설정 | 위 patch 적용 |
| Trino INSERT 0 rows | Iceberg connector schema 오류 | trino-catalog ConfigMap 확인 |
| MLflow registered model 존재하지만 alias 없음 | get_latest_versions 실패 | 수동 alias 설정 (API 또는 UI) |