import torch
import torch.nn as nn
# 하이퍼파라미터
config = {
"lr": 0.001,
"batch_size": 128,
"epochs": 50,
"hidden_dim": 256,
"dropout": 0.3,
"optimizer": "AdamW",
"weight_decay": 0.01,
}
with mlflow.start_run(run_name="resnet18-baseline"):
# 하이퍼파라미터 기록
mlflow.log_params(config)
model = build_model(config)
optimizer = torch.optim.AdamW(model.parameters(),
lr=config["lr"],
weight_decay=config["weight_decay"])
for epoch in range(config["epochs"]):
train_loss, train_acc = train_one_epoch(model, train_loader, criterion, optimizer, device)
val_loss, val_acc = evaluate(model, val_loader, criterion, device)
# 메트릭 기록
mlflow.log_metrics({
"train_loss": train_loss,
"train_acc": train_acc,
"val_loss": val_loss,
"val_acc": val_acc,
}, step=epoch)
# 최종 모델 저장
mlflow.pytorch.log_model(model, "model")
# 추가 아티팩트 (학습 곡선 이미지 등)
# mlflow.log_artifact("training_history.png")
print(f"Run ID: {mlflow.active_run().info.run_id}")