본문으로 건너뛰기

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.pycreate_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_customers SELECT 10 rows
  • Sink: iceberg.gold.predictions_demo_credit_risk UPSERT 10 rows (#1356 fix 후)
  • Lineage: ArangoDB data_lineagemlflow.Production.demo_credit_risk → iceberg.gold.predictions_demo_credit_risk edge 자동 생성

트러블슈팅

증상원인해결
connection refused 5000port-forward 미적용mlflow svc port-forward 확인
mlflow.RestException: alias Production not found시드 미실행make seed-demo-ml-mlflow
trino.TrinoUserError TYPE_MISMATCHsink.py #1356 버그PR #1393 머지 후 Dagster image 재빌드
botocore.NoCredentialsErrorDagster env 미설정위 patch 적용
Trino INSERT 0 rowsIceberg connector schema 오류trino-catalog ConfigMap 확인
MLflow registered model 존재하지만 alias 없음get_latest_versions 실패수동 alias 설정 (API 또는 UI)

관련

  • 부모 Epic #1083
  • 시드 PR #1398 (#1358)
  • SQL 버그 fix PR #1393 (#1356)