SiamCafe.net Blog
Technology

MLflow Experiment Tech Conference 2026

mlflow experiment tech conference 2026
MLflow Experiment Tech Conference 2026 | SiamCafe Blog
2026-03-29· อ. บอม — SiamCafe.net· 8,000 คำ

MLflow Experiment Tech Conference

MLflow Open Source ML Lifecycle Tracking Projects Models Registry Experiment Parameters Metrics Artifacts Tech Conference Presentation Demo

MLflow ComponentFunctionUse Case
TrackingLog Parameters, MetricsExperiment Comparison
ProjectsPackage Code + EnvironmentReproducibility
ModelsStandard Model FormatMulti-framework Deploy
RegistryModel VersioningStage Management

MLflow Tracking Setup

# === MLflow Experiment Tracking ===

# pip install mlflow scikit-learn pandas

# import mlflow
# import mlflow.sklearn
# from sklearn.ensemble import RandomForestClassifier
# from sklearn.model_selection import train_test_split
# from sklearn.metrics import accuracy_score, f1_score, precision_score
# import pandas as pd
#
# # Set Tracking URI
# mlflow.set_tracking_uri("http://localhost:5000")
# mlflow.set_experiment("image-classifier-v2")
#
# # Load Data
# df = pd.read_csv("data/train.csv")
# X_train, X_test, y_train, y_test = train_test_split(
#     df.drop("label", axis=1), df["label"],
#     test_size=0.2, random_state=42
# )
#
# # Train with MLflow Tracking
# with mlflow.start_run(run_name="rf-baseline"):
#     # Log Parameters
#     params = {
#         "n_estimators": 100,
#         "max_depth": 10,
#         "min_samples_split": 5,
#         "random_state": 42,
#     }
#     mlflow.log_params(params)
#
#     # Train Model
#     model = RandomForestClassifier(**params)
#     model.fit(X_train, y_train)
#
#     # Evaluate
#     y_pred = model.predict(X_test)
#     metrics = {
#         "accuracy": accuracy_score(y_test, y_pred),
#         "f1_score": f1_score(y_test, y_pred, average="weighted"),
#         "precision": precision_score(y_test, y_pred, average="weighted"),
#     }
#     mlflow.log_metrics(metrics)
#
#     # Log Model
#     mlflow.sklearn.log_model(model, "model")
#
#     # Log Artifacts
#     mlflow.log_artifact("data/train.csv")
#
#     print(f"Run ID: {mlflow.active_run().info.run_id}")
#     print(f"Accuracy: {metrics['accuracy']:.4f}")

# mlflow ui --port 5000

from dataclasses import dataclass, field
from typing import List, Dict

@dataclass
class ExperimentRun:
    run_id: str
    name: str
    params: Dict
    metrics: Dict
    model: str
    status: str

runs = [
    ExperimentRun("run-001", "rf-baseline",
        {"n_estimators": 100, "max_depth": 10},
        {"accuracy": 0.892, "f1": 0.887}, "RandomForest", "completed"),
    ExperimentRun("run-002", "rf-tuned",
        {"n_estimators": 500, "max_depth": 20},
        {"accuracy": 0.921, "f1": 0.918}, "RandomForest", "completed"),
    ExperimentRun("run-003", "xgb-baseline",
        {"n_estimators": 200, "learning_rate": 0.1},
        {"accuracy": 0.935, "f1": 0.932}, "XGBoost", "completed"),
    ExperimentRun("run-004", "xgb-tuned",
        {"n_estimators": 500, "learning_rate": 0.05},
        {"accuracy": 0.948, "f1": 0.945}, "XGBoost", "completed"),
    ExperimentRun("run-005", "neural-net",
        {"hidden_layers": 3, "learning_rate": 0.001},
        {"accuracy": 0.952, "f1": 0.949}, "PyTorch", "completed"),
]

print("=== MLflow Experiment Runs ===")
print(f"{'Name':<16} {'Model':<14} {'Accuracy':>8} {'F1':>6} {'Status'}")
for r in runs:
    print(f"  {r.name:<16} {r.model:<14} {r.metrics['accuracy']:>8.3f} "
          f"{r.metrics['f1']:>6.3f} {r.status}")

Model Registry

# === MLflow Model Registry ===

# import mlflow
# from mlflow.tracking import MlflowClient
#
# client = MlflowClient()
#
# # Register Model
# result = mlflow.register_model(
#     f"runs:/{run_id}/model",
#     "image-classifier"
# )
#
# # Transition to Staging
# client.transition_model_version_stage(
#     name="image-classifier",
#     version=result.version,
#     stage="Staging",
# )
#
# # Transition to Production
# client.transition_model_version_stage(
#     name="image-classifier",
#     version=result.version,
#     stage="Production",
# )
#
# # Load Production Model
# model = mlflow.pyfunc.load_model(
#     "models:/image-classifier/Production"
# )
# predictions = model.predict(X_test)

# Hyperparameter Tuning with MLflow
# import optuna
#
# def objective(trial):
#     with mlflow.start_run(nested=True):
#         params = {
#             "n_estimators": trial.suggest_int("n_estimators", 100, 1000),
#             "max_depth": trial.suggest_int("max_depth", 5, 30),
#             "learning_rate": trial.suggest_float("learning_rate", 0.01, 0.3),
#             "subsample": trial.suggest_float("subsample", 0.6, 1.0),
#         }
#         mlflow.log_params(params)
#
#         model = XGBClassifier(**params)
#         model.fit(X_train, y_train)
#         accuracy = accuracy_score(y_test, model.predict(X_test))
#
#         mlflow.log_metric("accuracy", accuracy)
#         return accuracy
#
# with mlflow.start_run(run_name="optuna-tuning"):
#     study = optuna.create_study(direction="maximize")
#     study.optimize(objective, n_trials=50)
#     mlflow.log_params(study.best_params)
#     mlflow.log_metric("best_accuracy", study.best_value)

from enum import Enum

class ModelStage(Enum):
    NONE = "None"
    STAGING = "Staging"
    PRODUCTION = "Production"
    ARCHIVED = "Archived"

@dataclass
class RegisteredModel:
    name: str
    version: int
    stage: ModelStage
    accuracy: float
    run_id: str

models = [
    RegisteredModel("image-classifier", 1, ModelStage.ARCHIVED, 0.892, "run-001"),
    RegisteredModel("image-classifier", 2, ModelStage.ARCHIVED, 0.935, "run-003"),
    RegisteredModel("image-classifier", 3, ModelStage.PRODUCTION, 0.952, "run-005"),
    RegisteredModel("image-classifier", 4, ModelStage.STAGING, 0.961, "run-006"),
]

print("\n=== Model Registry ===")
for m in models:
    print(f"  {m.name} v{m.version} [{m.stage.value}] "
          f"Accuracy: {m.accuracy:.3f} | Run: {m.run_id}")

Conference Preparation

# === Tech Conference Preparation ===

@dataclass
class ConferenceTalk:
    title: str
    abstract: str
    duration_min: int
    slides: int
    demo: bool
    audience: str

@dataclass
class SlideOutline:
    section: str
    slides: int
    content: str

talk = ConferenceTalk(
    title="Scaling ML Experiments with MLflow: From Notebook to Production",
    abstract="How we scaled from ad-hoc notebooks to a systematic ML experimentation platform using MLflow",
    duration_min=30,
    slides=25,
    demo=True,
    audience="ML Engineers, Data Scientists",
)

outline = [
    SlideOutline("Introduction", 3, "Problem Statement, Why Experiment Tracking"),
    SlideOutline("MLflow Overview", 4, "Components, Architecture, Setup"),
    SlideOutline("Live Demo", 5, "Tracking, Compare Runs, Registry"),
    SlideOutline("Production Setup", 5, "Docker, Auth, Storage, CI/CD"),
    SlideOutline("Results", 4, "Before/After Metrics, Team Productivity"),
    SlideOutline("Lessons Learned", 2, "Pitfalls, Best Practices"),
    SlideOutline("Q&A", 2, "Questions and Discussion"),
]

print(f"=== Conference Talk ===")
print(f"  Title: {talk.title}")
print(f"  Duration: {talk.duration_min} min | Slides: {talk.slides}")
print(f"  Demo: {'Yes' if talk.demo else 'No'} | Audience: {talk.audience}")
print(f"\n  Slide Outline:")
total_slides = 0
for section in outline:
    total_slides += section.slides
    print(f"    [{section.section}] {section.slides} slides — {section.content}")
print(f"\n  Total: {total_slides} slides")

# Presentation Tips
tips = {
    "Content": [
        "เริ่มด้วย Problem ที่ผู้ฟังเข้าใจ",
        "แสดง Before/After ชัดเจน",
        "Demo สดที่ทำงานจริง มี Backup Video",
        "แชร์ตัวเลข Impact ที่วัดได้",
    ],
    "Delivery": [
        "ซ้อมพูด 3-5 รอบ จับเวลา",
        "พูดช้าลง หยุดหายใจ",
        "สบตาผู้ฟัง ไม่อ่าน Slides",
        "เตรียม Q&A รู้จุดอ่อนของงาน",
    ],
    "Slides": [
        "1 Slide = 1 Idea ไม่ยัดเยียด",
        "ใช้ภาพและ Diagram มากกว่าข้อความ",
        "Font ใหญ่ อ่านได้จากหลังห้อง",
        "Code Snippet สั้น Highlight จุดสำคัญ",
    ],
}

print(f"\n\nPresentation Tips:")
for category, items in tips.items():
    print(f"\n  [{category}]")
    for tip in items:
        print(f"    - {tip}")

เคล็ดลับ

MLflow คืออะไร

Open Source ML Lifecycle Databricks Tracking Projects Models Registry Parameters Metrics Artifacts ทุก Framework

Experiment Tracking สำคัญอย่างไร

บันทึกทุกการทดลอง Hyperparameters Metrics Artifacts เปรียบเทียบ Reproduce ทีม แชร์ผล ป้องกันทำซ้ำ

Tech Conference เตรียมตัวอย่างไร

หัวข้อ Impact Novelty Abstract Slides 20-30 Demo ซ้อมพูด 3-5 รอบ Q&A Blog GitHub Code

MLflow กับ Weights & Biases ต่างกันอย่างไร

MLflow Open Source Self-hosted ฟรี Full Lifecycle W&B Cloud UI สวย Collaboration Team MLflow Self-hosted W&B ทีม

สรุป

MLflow Experiment Tracking Model Registry Open Source ML Lifecycle Parameters Metrics Artifacts Hyperparameter Tuning Optuna Tech Conference Presentation Demo Slides Preparation

📖 บทความที่เกี่ยวข้อง

WordPress WooCommerce Tech Conference 2026อ่านบทความ → MLflow Experiment Citizen Developerอ่านบทความ → MLflow Experiment Site Reliability SREอ่านบทความ → MLflow Experiment Backup Recovery Strategyอ่านบทความ → MLflow Experiment Database Migrationอ่านบทความ →

📚 ดูบทความทั้งหมด →