Experiment Tracking SetupSAFE
Overview
An agent skill published by revfactory.
459e1bb8f76eOBSERVED · 2026-10-12What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: experiment-tracking-setup
description: "MLflow, Weights & Biases 등 실험 추적 도구 설정, 재현성 보장, 모델 레지스트리, 실험 비교 방법론 가이드. '실험 추적', 'MLflow', 'W&B', 'Weights and Biases', '재현성', '모델 레지스트리', '실험 비교', '하이퍼파라미터 로깅' 등 ML 실험 관리 시 이 스킬을 사용한다. training-manager의 실험 관리 역량을 강화한다. 단, 모델 아키텍처 설계나 피처 엔지니어링은 이 스킬의 범위가 아니다."
---
# Experiment Tracking Setup — 실험 추적 및 재현성 가이드
ML 실험의 추적, 재현성 보장, 모델 버전 관리를 위한 실전 가이드.
## MLflow 설정
### 기본 구조
```python
import mlflow
mlflow.set_tracking_uri("http://localhost:5000")
mlflow.set_experiment("order-prediction")
with mlflow.start_run(run_name="xgboost-v2"):
# 파라미터 로깅
mlflow.log_params({
"model": "XGBClassifier",
"n_estimators": 500,
"max_depth": 6,
"learning_rate": 0.1,
})
# 학습
model.fit(X_train, y_train)
predictions = model.predict(X_test)
# 메트릭 로깅
mlflow.log_metrics({
"accuracy": accuracy_score(y_test, predictions),
"f1": f1_score(y_test, predictions),
"precision": precision_score(y_test, predictions),
"recall": recall_score(y_test, predictions),
})
# 모델 저장
mlflow.sklearn.log_model(model, "model")
# 아티팩트 저장
mlflow.log_artifact("confusion_matrix.png")
mlflow.log_artifact("feature_importance.csv")
```
### 자동 로깅
```python
# 프레임워크별 자동 로깅
mlflow.sklearn.autolog() # scikit-learn
mlflow.xgboost.autolog() # XGBoost
mlflow.lightgbm.autolog() # LightGBM
mlflow.pytorch.autolog() # PyTorch
mlflow.tensorflow.autolog() # TensorFlow
```
## 재현성 보장 체크리스트
### 필수 기록 항목
```python
import platform, sys
reproducibility_info = {
# 환경
"python_version": sys.version,
"os": platform.platform(),
"gpu": torch.cuda.get_device_name(0) if torch.cuda.is_available() else "N/A",
# 시드
"random_seed": 42,
"numpy_seed": 42,
"torch_seed": 42,
# 데이터
"data_version": "v2.1",
"data_hash": hashlib.md5(open('data.csv','rb').read()).hexdigest(),
"train_size": len(X_train),
"test_size": len(X_test),
"split_method": "StratifiedKFold(5)",
# 코드
"git_commit": subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode().strip(),
"git_branch": subprocess.check_output(['git', 'branch', '--show-current']).decode().strip(),
}
mlflow.log_params(reproducibility_info)
```
### 시드 고정
```python
import random, numpy as np, torch
def set_seed(seed=42):
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
os.environ['PYTHONHASHSEED'] = str(seed)
```
### 의존성 고정
```bash
# requirements.txt 정확한 버전
pip freeze > requirements.txt
# pip-compile (권장)
pip-compile requirements.in --generate-hashes
# conda
conda env export --no-builds > environment.yml
```
## 모델 레지스트리
### MLflow Model Registry 워크플로우
```
실험(Experiment)
└── 실행(Run)
└── 모델 아티팩트
└── 모델 등록 (Model Registry)
├── Stage: Staging → 검증
├── Stage: Production → 배포
└── Stage: Archived → 보관
```
```python
# 모델 등록
mlflow.register_model(
model_uri=f"runs:/{run_id}/model",
name="order-prediction-model"
)
# 스테이지 전환
client = mlflow.tracking.MlflowClient()
client.transition_model_version_stage(
name="order-prediction-model",
version=3,
stage="Production"
)
# Production 모델 로드
model = mlflow.pyfunc.load_model("models:/order-prediction-model/Production")
```
## 실험 비교 프레임워크
### 통계적 검증
```python
from scipy import stats
# 5-fold CV 결과 비교
model_a_scores = [0.85, 0.87, 0.84, 0.86, 0.88]
model_b_scores = [0.82, 0.84, 0.83, 0.81, 0.85]
# 대응 t-검정 (Paired t-test)
t_stat, p_value = stats.ttest_rel(model_a_scores, model_b_scores)
print(f"p-value: {p_value:.4f}")
if p_value < 0.05:
print("통계적으로 유의미한 차이 있음")
```
### 실험 비교 테이블
```markdown
| 실험 | 모델 | F1 | Precision | Recall | 학습 시간 | 추론 시간 |
|------|------|-----|-----------|--------|----------|----------|
| exp-001 | LogReg (baseline) | 0.78 | 0.80 | 0.76 | 2s | 0.1ms |
| exp-002 | XGBoost | 0.85 | 0.87 | 0.83 | 45s | 0.5ms |
| exp-003 | LightGBM | 0.86 | 0.88 | 0.84 | 20s | 0.3ms |
| exp-004 | LightGBM + Optuna | 0.88 | 0.89 | 0.87 | 2h | 0.3ms |
| exp-005 | Stacking (top3) | 0.89 | 0.90 | 0.88 | 3h | 1.2ms |
```
## 프로젝트 구조 템플릿
```
ml-project/
├── data/
│ ├── raw/ # 원본 데이터 (수정 금지)
│ ├── processed/ # 전처리 완료
│ └── external/ # 외부 데이터
├── notebooks/ # 탐색적 분석
├── src/
│ ├── data/ # 데이터 로딩/전처리
│ ├── features/ # 피처 엔지니어링
│ ├── models/ # 모델 정의
│ └── evaluation/ # 평가 로직
├── configs/ # 하이퍼파라미터 YAML
├── models/ # 학습된 모델
├── reports/ # 분석 보고서
├── requirements.txt
└── Makefile # 재현 가능한 실행
```Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | NA |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (1)
You are an intellectual property licensing strategy specialist. You maximize IP asset monetization and create business value through strategic partnerships.
Gates applied: no_behavioural_pass.
459e1bb8f76efull audit observations/trust-audit/skill/revfactory__experiment-tracking-setup.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 459e1bb8f76e | SAFE | B | 89 | first audit |
Questions
Is Experiment Tracking Setup safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Experiment Tracking Setup access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (459e1bb8f76e), read on 2026-10-12. The repository is watched, and a new audit runs when it changes — this is the first audit.