02. 实验追踪Weights Biases一、WB概述1.1 产品定位与特点Weights BiasesWB是一个专注于机器学习实验管理的平台提供云端实验追踪、可视化、超参数搜索和协作功能。核心特点轻量级集成只需几行代码实时可视化Loss曲线、模型预测、混淆矩阵超参数自动优化Sweeps团队协作和报告生成与主流框架深度集成PyTorch、TF、Keras、HF1.2 与MLflow对比特性MLflowWeights Biases部署方式自托管、本地云优先支持私有部署价格免费开源免费版 企业版UI体验基础精美交互性强超参数搜索有限Sweeps系统强大可视化基础图表丰富直方图、散点图、平行坐标报告功能无Reports原生支持私有化部署✅ 完全可控❌ 企业版支持学习曲线低很低二、基础使用2.1 初始化与配置# 安装pipinstallwandb# 登录wandb login# 或设置 API KeyexportWANDB_API_KEYyour_api_keyimportwandb# 初始化wandb.init(projectiris-classification,entityyour_team,namexgboost-v1,config{learning_rate:0.1,max_depth:6,epochs:100,batch_size:32})2.2 参数记录# 通过 config 记录wandb.config.update({model_type:XGBoost,dataset:iris,test_size:0.2})# 运行时更新wandb.config.update({early_stopping_rounds:10},allow_val_changeTrue)2.3 指标记录importnumpyasnpforepochinrange(100):# 单指标wandb.log({loss:train_loss,acc:train_acc})# 多指标wandb.log({train/loss:train_loss,train/accuracy:train_acc,val/loss:val_loss,val/accuracy:val_acc,learning_rate:lr})# 按步数记录wandb.log({loss:loss},stepglobal_step)2.4 可视化importmatplotlib.pyplotasplt# 记录图表fig,axplt.subplots()ax.plot(train_losses,labelTrain Loss)ax.plot(val_losses,labelVal Loss)ax.legend()wandb.log({loss_curve:fig})# 记录图像wandb.log({predictions:wandb.Image(predictions_plot),confusion_matrix:wandb.plot.confusion_matrix(y_truey_test,y_predy_pred,class_namesclass_names)})# 记录表格wandb.log({results_table:wandb.Table(dataframeresults_df,columns[model,accuracy,f1_score])})三、高级功能3.1 超参数搜索Sweeps# sweep.yamlmethod:bayes# grid, random, bayesmetric:name:val_accuracygoal:maximizeparameters:learning_rate:distribution:log_uniformmin:0.001max:0.1max_depth:values:[3,5,7,9]n_estimators:distribution:int_uniformmin:50max:300subsample:distribution:uniformmin:0.6max:1.0# train.pySweep目标函数deftrain():wandb.init()configwandb.config modelXGBClassifier(learning_rateconfig.learning_rate,max_depthconfig.max_depth,n_estimatorsconfig.n_estimators,subsampleconfig.subsample)model.fit(X_train,y_train)val_accmodel.score(X_val,y_val)wandb.log({val_accuracy:val_acc})# 启动 Sweepsweep_idwandb.sweep(sweepsweep.yaml,projectiris)wandb.agent(sweep_id,functiontrain,count50)# 运行50次3.2 模型版本管理Artifacts# 记录工件artifactwandb.Artifact(namexgboost-model,typemodel,metadata{framework:xgboost,version:1.0})artifact.add_file(model.pkl)wandb.log_artifact(artifact)# 记录数据集dataset_artifactwandb.Artifact(nameiris-dataset,typedataset,metadata{samples:150,features:4})dataset_artifact.add_dir(./data)wandb.log_artifact(dataset_artifact)# 加载工件artifactwandb.run.use_artifact(xgboost-model:v0,typemodel)artifact_dirartifact.download()# 注册到模型注册表wandb.log_artifact(artifact,aliases[production,staging])3.3 报告生成Reports# Reports 在 Web UI 中创建支持# - 可视化图表拖拽# - Markdown 文本# - 表格展示# - 协作评论# 通过 Python API 创建reportwandb.Api().create_report(projectiris-classification,titleExperiment Report,descriptionComparison of XGBoost hyperparameters,runs[run1,run2,run3])3.4 与主流框架集成# PyTorchimportwandb wandb.init()# 自动记录 - 不需要手动 logwandb.watch(model,log_freq100)# 记录梯度wandb.watch(model,logall,log_freq100)# 记录模型权重分布wandb.watch(model,logparameters,log_freq100)# Hugging Face TransformersfromtransformersimportTrainer,TrainingArgumentsimportwandb wandb.init(projecthf-finetune)training_argsTrainingArguments(output_dir./results,report_towandb,# 关键配置logging_steps10,)trainerTrainer(modelmodel,argstraining_args,train_datasettrain_dataset,eval_dataseteval_dataset)trainer.train()四、团队协作4.1 项目共享# 设置团队空间wandb.init(projectchurn-prediction,entityml-team)# 可视化面板# 所有团队成员可实时查看实验进度# 支持评论和标注4.2 权限管理# 团队权限层级# - Admin: 完全控制# - Member: 读写项目# - Viewer: 只读访问# API Key 管理# 不同用户使用不同 API Key# 支持服务账号用于 CI/CD4.3 注释与讨论# 在代码中添加注释wandb.notesThis experiment uses XGBoost with default paramswandb.tags[baseline,xgboost,no-feature-engineering]# 通过 API 添加评论wandb.Api().run(entity/project/run_id).comment(Overfitting detected)五、部署选项5.1 云端SaaS# 免费版100GB 存储 无限项目# 支持个人和小团队# 企业版# - SSO/SAML# - 审计日志# - 私有部署支持# - 优先级支持5.2 私有部署# 企业私有部署dockerrun-d\-p8080:8080\-eLICENSEyour_license\wandb/local:latest# 配置本地服务器wandb.init(hosthttp://wandb.yourcompany.com)六、实战WB实验管理importwandbimportxgboostasxgbfromsklearn.datasetsimportload_breast_cancerfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportroc_auc_score,accuracy_scoreimportmatplotlib.pyplotasplt# 加载数据dataload_breast_cancer()X_train,X_test,y_train,y_testtrain_test_split(data.data,data.target,test_size0.2,random_state42)# 1. 初始化实验wandb.init(projectcancer-detection,namexgboost-sweep-01,config{learning_rate:0.05,max_depth:6,n_estimators:150,subsample:0.8,colsample_bytree:0.8,eval_metric:logloss})configwandb.config# 2. 记录数据集信息wandb.log({train_samples:len(X_train),test_samples:len(X_test),features:data.data.shape[1],classes:len(data.target_names)})# 3. 模型训练modelxgb.XGBClassifier(learning_rateconfig.learning_rate,max_depthconfig.max_depth,n_estimatorsconfig.n_estimators,subsampleconfig.subsample,colsample_bytreeconfig.colsample_bytree,eval_metricconfig.eval_metric,use_label_encoderFalse)# 4. 训练日志forepochinrange(1,config.n_estimators1,10):model.fit(X_train,y_train,eval_set[(X_test,y_test)],verbose0)y_pred_probamodel.predict_proba(X_test)[:,1]# 记录指标wandb.log({epoch:epoch,train_accuracy:model.score(X_train,y_train),val_accuracy:model.score(X_test,y_test),val_auc:roc_auc_score(y_test,y_pred_proba)})# 5. 最终评估final_accuracymodel.score(X_test,y_test)y_pred_probamodel.predict_proba(X_test)[:,1]final_aucroc_auc_score(y_test,y_pred_proba)# 6. 可视化混淆矩阵fromsklearn.metricsimportconfusion_matrix,ConfusionMatrixDisplay y_predmodel.predict(X_test)cmconfusion_matrix(y_test,y_pred)dispConfusionMatrixDisplay(confusion_matrixcm)disp.plot()wandb.log({confusion_matrix:wandb.Image(plt.gcf())})# 7. 特征重要性importancemodel.feature_importances_ fig,axplt.subplots()ax.barh(data.feature_names,importance)ax.set_xlabel(Importance)wandb.log({feature_importance:wandb.Image(fig)})# 8. 记录模型wandb.log_artifact(model.pkl,namexgboost-model,typemodel)# 9. 记录最终指标wandb.log({final_accuracy:final_accuracy,final_auc:final_auc,best_iteration:model.best_iteration})# 10. 添加摘要wandb.run.summary[best_accuracy]final_accuracy wandb.run.summary[best_auc]final_aucprint(fFinal Accuracy:{final_accuracy:.4f}, AUC:{final_auc:.4f})wandb.finish() 参考资源WB 官方文档WB 快速入门WB 示例项目