إنتقل إلى المحتوى الرئيسي

الفصل 2: الأوزان والانحيازات

مقدمة إلى W&B​

Weights & Biases (W&B) هي منصة MLOps قوية لتتبع التجارب، وإصدار مجموعات البيانات، وإدارة النماذج مع قدرات تصور ممتازة.

الإعداد والتكوين​

# Install
pip install wandb

# Login
wandb login

# Or set API key
export WANDB_API_KEY="your-api-key"

تتبع التجارب الأساسية​

import wandb
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, roc_auc_score

# Initialize a run
wandb.init(
project="customer-churn",
name="rf-baseline",
config={
"n_estimators": 100,
"max_depth": 10,
"learning_rate": 0.1,
"dataset": "v2.0"
}
)

# Access config
config = wandb.config

# Train model
model = RandomForestClassifier(
n_estimators=config.n_estimators,
max_depth=config.max_depth
)
model.fit(X_train, y_train)

# Log metrics
accuracy = accuracy_score(y_test, model.predict(X_test))
auc = roc_auc_score(y_test, model.predict_proba(X_test)[:, 1])

wandb.log({
"accuracy": accuracy,
"auc_roc": auc,
"epoch": 1
})

# Finish run
wandb.finish()

عمليات البحث عن المعلمات الفائقة​

# Define sweep configuration
sweep_config = {
"method": "bayes", # grid, random, bayes
"metric": {"name": "auc_roc", "goal": "maximize"},
"parameters": {
"n_estimators": {"values": [100, 200, 300]},
"max_depth": {"min": 5, "max": 20},
"min_samples_split": {"values": [2, 5, 10]},
"learning_rate": {"distribution": "log_uniform_values", "min": 0.001, "max": 0.1}
}
}

# Create sweep
sweep_id = wandb.sweep(sweep_config, project="customer-churn")

# Training function
def train():
wandb.init()
config = wandb.config

model = GradientBoostingClassifier(
n_estimators=config.n_estimators,
max_depth=config.max_depth,
learning_rate=config.learning_rate
)
model.fit(X_train, y_train)

auc = roc_auc_score(y_test, model.predict_proba(X_test)[:, 1])
wandb.log({"auc_roc": auc})

# Run sweep
wandb.agent(sweep_id, train, count=50)

W&B Artifacts​

# Log dataset as artifact
artifact = wandb.Artifact("training-data", type="dataset")
artifact.add_file("data/train.csv")
artifact.add_dir("data/features/")
wandb.log_artifact(artifact)

# Log model as artifact
model_artifact = wandb.Artifact("churn-model", type="model")
model_artifact.add_file("models/model.pkl")
wandb.log_artifact(model_artifact)

# Use artifact in another run
wandb.init(project="customer-churn")
artifact = wandb.use_artifact("training-data:latest")
artifact_dir = artifact.download()

جداول W&B لتصور البيانات​

import wandb
import pandas as pd

wandb.init(project="customer-churn")

# Create a W&B Table
table = wandb.Table(dataframe=df.head(100))
wandb.log({"data_sample": table})

# Log predictions table
predictions_df = pd.DataFrame({
"customer_id": test_ids,
"actual": y_test,
"predicted": predictions,
"probability": probabilities
})
wandb.log({"predictions": wandb.Table(dataframe=predictions_df)})

النقاط الرئيسية​

ملخص
  1. W&B تتفوق في التصور مع لوحات تحكم تفاعلية
  2. تقوم عمليات البحث بأتمتة تحسين المعلمات الفائقة باستخدام الأساليب البايزية
  3. تتبع القطع الأثرية مجموعات البيانات والنماذج مع النسب
  4. تمكن الجداول من استكشاف البيانات الغنية في واجهة المستخدم
  5. تسهل التقارير التعاون بين الفريق

التالي: الفصل 3: مقارنة التجارب