SuperAPI AI 工具集

databricks-ml-training

数据与分析

查看项目

更新于 10-15 09:05

技能介绍

用途

该技能用于在 Databricks 平台上训练机器学习模型,并完成从训练、注册到消费的完整流程。适用于分类、回归和深度学习任务,支持 XGBoost、scikit-learn、LightGBM、PyTorch 等框架,可结合 Optuna 进行超参数调优。

主要能力

  • 在 Databricks 的 serverless 作业或 notebook 中训练模型,而非本地 Python 进程。
  • 使用 MLflow 自动记录参数、指标、代码和模型产物,并注册到 Unity Catalog。
  • 使用可移动别名(如 @prod、@challenger)管理模型版本,替代已弃用的阶段(Stages)。
  • 将注册模型作为 Spark UDF 对 Delta 表进行批量打分,写入 gold 预测表供下游消费。
  • 在需要低延迟时,将模型部署为实时服务端点。
  • 支持自定义 pyfunc 和自定义 GenAI 智能体。
  • 提供特征工程能力,包括 Feature Store(FeatureLookup API)和 Feature Views(声明式,公开预览)。

使用方式

默认规范流程为:从 silver 特征表和标签表出发,在 notebook(作为 serverless 作业)中训练,使用 mlflow.autolog 自动记录,通过 mlflow.register_model 注册到 Unity Catalog,设置 @prod 别名,然后通过 spark_udf(@prod) 对最新特征打分并 MERGE 到 gold 预测表。

训练时需设置 mlflow.set_registry_uri("databricks-uc"),否则模型会进入已弃用的工作区注册表。实验的父文件夹必须预先存在,可用 databricks workspace mkdirs 创建。

使用 Databricks notebook 源格式(# Databricks notebook source 头部、# COMMAND ---------- 分隔符、# MAGIC %md/%sql 魔法命令)。

训练和注册的典型代码包括:使用 mlflow.xgboost.autolog 自动记录,用 Optuna 进行超参数搜索,每个 trial 作为子运行,最后用最佳参数重新训练并注册单个模型,再通过 MlflowClient 设置 @prod 别名。

批量消费时,使用 mlflow.pyfunc.spark_udf 加载模型,对 Delta 表打分,写入 gold 表。env_manager 可选 "local"(与训练同运行时,最快)、"virtualenv"(不同运行时,重建环境)或 "uv"(MLflow ≥ 2.22,更快)。

实时服务时,注册模型后通过 mlflow.deployments.get_deploy_client("databricks").create_endpoint(...) 或 agents.deploy(...) 部署。首次部署经典 ML 约需 5 分钟。

作为 serverless 作业训练和部署时,使用 databricks workspace import 上传 notebook,用 databricks jobs submit --no-wait 提交,轮询 life_cycle_state 和 result_state,并通过 TASK run_id(tasks[0].run_id)获取结构化输出。notebook 结尾用 dbutils.notebook.exit(json.dumps({...})) 返回结果。

适用场景

  • 需要在 Databricks 上训练分类、回归或深度学习模型。
  • 需要将模型注册到 Unity Catalog 并进行版本管理。
  • 需要对 Delta 表进行批量打分并写入 gold 预测表。
  • 需要低延迟实时评分(如欺诈检测、推荐)。
  • 需要特征工程以避免训练/服务偏差、时间点连接或在线存储低延迟服务。

限制

  • 始终应在 Databricks 上训练,本地训练无法访问 silver 表、MLflow 跟踪服务器和 UC 注册表路径,且会话中断会终止训练。仅在用户明确要求时才回退到本地执行。
  • 特征工程默认不使用,除非明确适用或用户要求,因为它会增加构建时间和复杂度。
  • Feature Views 处于公开预览阶段,需要 databricks-feature-engineering>=0.16.0。
  • 常见陷阱包括:模型落入工作区注册表而非 UC、端点首次查询返回 PERMISSION_DENIED、使用已弃用的 transition_model_version_stage、spark_udf 每次调用重建 virtualenv、pip_requirements 不匹配导致端点加载崩溃、agents.deploy() 生成异常命名的端点等。
  • 作业提交陷阱包括:serverless notebook 任务需要 environments[].spec.client: "4";获取输出需用 TASK run_id 而非 submit run_id;serverless 一次性运行中 print() 不可靠;jobs submit 拒绝 tags。

相关技能

databricks-model-serving 负责服务端点生命周期;databricks-agent-bricks 提供无代码知识助手和监督智能体;databricks-mlflow-evaluation 用于评估模型/智能体质量;databricks-vector-search 提供向量索引;databricks-jobs 提供异步部署模式;databricks-unity-catalog 管理注册模型的权限、血缘和审计。