Databricks Certified Machine Learning Associate(ML Associate)は、MLflowによる実験管理、 Spark MLによるパイプライン構築、AutoMLによる自動モデリングの実践力を証明する認定試験です。 Data Engineer Associate(DEA)と並び、Databricks認定の中で最も受験者数が多い試験の一つで、 MLエンジニアとしてのキャリアを始める際の標準的な資格とされています。
| 項目 | 内容 |
|---|---|
| 正式名称 | Databricks Certified Machine Learning Associate |
| 問題数 | 45問(多肢選択式) |
| 試験時間 | 90分 |
| 合格ライン | 70%(32問/45問) |
| 受験料 | $200(税別) |
| 言語 | 英語・日本語対応 |
| 前提条件 | なし(実務6ヶ月以上の経験を推奨) |
| 有効期限 | 2年間 |
| 受験方式 | オンラインプロクター(自宅受験可能) |
日本語で受験可能ですが、翻訳の品質にばらつきがあるため、コードスニペットが含まれる問題は英語原文も表示して確認することを推奨します。 残り時間は画面上部に常時表示され、問題のフラグ機能で後から見直す問題をマークできます。
| ドメイン | 配点 | 主要トピック |
|---|---|---|
| Databricks ML | 29%(約13問) | AutoML、Feature Store、MLflow Tracking |
| ML Workflows | 29%(約13問) | 実験管理、Model Registry、デプロイ |
| Spark ML | 22%(約10問) | Pipeline、Transformer、Estimator |
| Scaling ML Models | 20%(約9問) | 分散学習、Pandas UDF、分散推論 |
Databricks MLとML Workflowsの2ドメインで合計58%を占めます。 この2つはMLflow関連の出題が多く、MLflow Tracking・Model Registry・Autologgingを正確に理解していれば 約25問(全体の55%)をカバーできます。残り20%のScaling ML Modelsは、Pandas UDFやspark-tensorflow-distributorなど 分散処理固有の知識が求められるため、Sparkの基本を理解した上で学習する必要があります。
Databricks AutoMLは、分類(Classification)・回帰(Regression)・予測(Forecasting)の3タスクに対応した自動機械学習機能です。 UIまたはAPIから実行でき、内部ではデータの前処理・特徴量エンジニアリング・ハイパーパラメータチューニング・モデル選択を自動化します。
# API経由でAutoMLを実行
from databricks import automl
summary = automl.classify(
dataset=train_df, # Spark DataFrameまたはPandas DataFrame
target_col="churn", # 目的変数のカラム名
primary_metric="f1", # 最適化するメトリクス
timeout_minutes=30, # 最大実行時間
max_trials=20 # 最大試行回数
)
# 最良のモデル・Run・ノートブックを取得
print(summary.best_trial) # 最良のTrialオブジェクト
print(summary.best_trial.model_path) # モデルのアーティファクトパス試験で問われるのは、AutoMLの結果として生成されるノートブックの意味です。 AutoMLは各Trialの実行コードをEditable Notebookとして自動生成し、データサイエンティストが 前処理ロジックやハイパーパラメータを手動で調整できるようにします。 つまりAutoMLは「ブラックボックス」ではなく「出発点」としてのベースラインモデルを提供する設計思想です。
Databricks Feature Storeは、機械学習の特徴量を一元管理するリポジトリです。 Unity Catalog上のDelta Tableとして特徴量テーブルを登録し、訓練時とサービング時で同じ特徴量定義を共有します。
FeatureStoreClient.create_training_set() で特徴量を結合FeatureStoreClient.score_batch() で自動的に最新の特徴量をルックアップDatabricks ML ドメインでは、MLflow Trackingの基本操作(Experiment作成、Run記録、パラメータ/メトリクス/アーティファクトの保存)が問われます。 Databricks上では mlflow.autolog() がデフォルトで有効になっており、scikit-learn・XGBoost・LightGBM・PyTorch・TensorFlow等の 主要フレームワークでパラメータ・メトリクス・モデルが自動記録されます。
ML Workflowsドメインでは、MLflowの実験管理を軸にしたエンドツーエンドのワークフローが問われます。 単なるAPI呼び出しではなく、「なぜそのAPIを使うのか」という判断力が求められます。
import mlflow
from mlflow.models import infer_signature
mlflow.set_experiment("/Experiments/fraud_detection")
with mlflow.start_run(run_name="lgbm_baseline") as run:
# パラメータの記録
mlflow.log_param("model_type", "LightGBM")
mlflow.log_param("num_leaves", 31)
mlflow.log_param("learning_rate", 0.05)
mlflow.log_param("data_version", "delta_v3")
# 訓練
model = lgb.train(params, train_data, valid_sets=[val_data])
# メトリクスの記録
mlflow.log_metric("auc", 0.934)
mlflow.log_metric("precision", 0.891)
mlflow.log_metric("recall", 0.867)
# Signatureの推論とモデルの記録
signature = infer_signature(X_train, model.predict(X_train))
mlflow.lightgbm.log_model(model, "model", signature=signature)
# 補助アーティファクトの保存
mlflow.log_artifact("feature_importance.png")
mlflow.log_artifact("confusion_matrix.html")試験では log_param(文字列/数値1個)、log_params(辞書で一括)、log_metric(数値1個、stepオプション付き)、log_metrics(辞書で一括)の使い分けが問われます。log_artifact はファイルパスを受け取り、log_model はフレームワーク固有のモデルオブジェクトを受け取るという違いも頻出です。
Model Registryはモデルのバージョン管理とライフサイクル管理を行います。 試験では旧Workspace Model Registryのステージ遷移と、Unity Catalog Model Registryのエイリアスの両方が出題されます。
| 観点 | 旧 Workspace Registry | Unity Catalog Registry |
|---|---|---|
| ステージ管理 | None → Staging → Production → Archived | エイリアス(champion / challenger 等、自由定義) |
| スコープ | 単一ワークスペース | アカウント横断(複数ワークスペース共有) |
| 権限モデル | ワークスペースレベルACL | Unity Catalog 3レベル権限(catalog.schema.model) |
| リネージ | 限定的 | テーブル → モデル → エンドポイントの自動追跡 |
# Unity Catalog Model Registryへの登録
mlflow.set_registry_uri("databricks-uc")
mlflow.register_model(
model_uri=f"runs:/{run.info.run_id}/model",
name="ml_prod.fraud.lgbm_model" # catalog.schema.model の3レベル名
)
# エイリアスの設定
from mlflow import MlflowClient
client = MlflowClient()
client.set_registered_model_alias(
name="ml_prod.fraud.lgbm_model",
alias="champion",
version=5
)mlflow.pyfunc.spark_udf() でSpark DataFrameに適用# バッチ推論の典型パターン
predict_udf = mlflow.pyfunc.spark_udf(
spark,
model_uri="models:/ml_prod.fraud.lgbm_model@champion"
)
predictions = (spark.table("silver.transactions")
.withColumn("fraud_score", predict_udf("amount", "merchant_category", "hour_of_day"))
)Spark MLlib(pyspark.mlパッケージ)のPipeline APIが中心です。 Transformer(変換: データを受け取ってデータを返す)とEstimator(推定: データを受け取ってモデル=Transformerを返す)の 区別は、試験で最も基本的かつ頻出のポイントです。
| 概念 | 役割 | 代表例 |
|---|---|---|
| Transformer | DataFrame → DataFrame(列を追加/変換) | VectorAssembler, StringIndexer(fit済み), Tokenizer |
| Estimator | DataFrame → Model(Transformer)を生成 | LogisticRegression, RandomForestClassifier, StringIndexer(未fit) |
| Pipeline | Transformer/Estimatorの直列連結 | 前処理 → 特徴量変換 → モデル訓練を1つのオブジェクトに |
| CrossValidator | 交差検証によるハイパーパラメータチューニング | ParamGridBuilderでグリッドサーチ |
from pyspark.ml import Pipeline
from pyspark.ml.feature import VectorAssembler, StringIndexer, StandardScaler
from pyspark.ml.classification import LogisticRegression
from pyspark.ml.tuning import CrossValidator, ParamGridBuilder
from pyspark.ml.evaluation import BinaryClassificationEvaluator
# Stage 1: カテゴリ変数のエンコード
indexer = StringIndexer(inputCol="category", outputCol="category_idx")
# Stage 2: 特徴量ベクトルの作成
assembler = VectorAssembler(
inputCols=["amount", "category_idx", "hour_of_day"],
outputCol="features"
)
# Stage 3: スケーリング
scaler = StandardScaler(inputCol="features", outputCol="scaled_features")
# Stage 4: ロジスティック回帰
lr = LogisticRegression(featuresCol="scaled_features", labelCol="label")
# Pipelineの構築
pipeline = Pipeline(stages=[indexer, assembler, scaler, lr])
# CrossValidatorでハイパーパラメータチューニング
param_grid = (ParamGridBuilder()
.addGrid(lr.regParam, [0.01, 0.1, 1.0])
.addGrid(lr.elasticNetParam, [0.0, 0.5, 1.0])
.build())
evaluator = BinaryClassificationEvaluator(
labelCol="label", metricName="areaUnderROC"
)
cv = CrossValidator(
estimator=pipeline,
estimatorParamMaps=param_grid,
evaluator=evaluator,
numFolds=3,
parallelism=4 # 並列実行数(クラスタリソースに応じて設定)
)
cv_model = cv.fit(train_df)
best_model = cv_model.bestModelCrossValidatorの parallelism パラメータは試験で問われやすいポイントです。 デフォルトは1(逐次実行)ですが、クラスタリソースに余裕があれば並列数を増やすことで チューニング時間を短縮できます。ただし各フォールドの訓練がSparkジョブとして分散実行されるため、 parallelismを上げすぎるとリソース競合が発生する点も把握しておく必要があります。
単一ノードのPandas処理をSpark上で分散実行するための仕組みです。 Apache Arrowによるデータ転送で、通常のUDFと比較して10〜100倍の高速化が見込めます。
import pandas as pd
from pyspark.sql.functions import pandas_udf
from pyspark.sql.types import DoubleType
@pandas_udf(DoubleType())
def predict_batch(features: pd.Series) -> pd.Series:
"""各パーティションでPandasベースの推論を実行"""
model = load_model() # ブロードキャスト変数やMLflowから読み込み
return pd.Series(model.predict(features.tolist()))
# Spark DataFrameの各パーティションで並列実行
predictions = df.withColumn("prediction", predict_batch("features"))大規模データセットでの深層学習には、Databricksが提供する分散学習フレームワークを使用します。
TensorflowDistributor(num_processes=8, local_mode=False).run(train_fn) で起動TorchDistributor(num_processes=4, local_mode=False).run(train_fn)試験では「どの分散フレームワークがどのML基盤に対応するか」「local_mode=True と False の違い」が問われます。local_mode=True はドライバノード上でマルチプロセス実行(デバッグ用)、False はワーカーノード間での本番分散実行です。
pyspark.pandas(旧Koalas)を使うことで、PandasのAPIでSpark DataFrameを操作できます。 単一ノードのPandasコードを最小限の変更で分散実行に移行するシナリオが出題されます。
import pyspark.pandas as ps
# Pandas APIで操作(内部はSpark DataFrameとして分散処理される)
psdf = ps.read_delta("dbfs:/mnt/gold/features")
psdf["feature_ratio"] = psdf["feature_a"] / psdf["feature_b"]
result = psdf.groupby("segment").mean()ML Associate試験の約40%がMLflow関連であり、以下のAPIパターンを正確に覚えることが合格の鍵です。
| API | 引数 | 用途 |
|---|---|---|
mlflow.start_run() | run_name, nested | Runの開始(コンテキストマネージャーで使用) |
mlflow.log_param() | key, value | ハイパーパラメータ1個の記録 |
mlflow.log_metric() | key, value, step | メトリクス1個の記録(stepでエポック管理) |
mlflow.log_artifact() | local_path | ローカルファイルをアーティファクトとして保存 |
mlflow.sklearn.log_model() | model, artifact_path | scikit-learnモデルの保存(フレーバー固有) |
mlflow.autolog() | なし(または設定辞書) | 対応フレームワークのパラメータ/メトリクス/モデルを自動記録 |
mlflow.register_model() | model_uri, name | Model Registryへの登録 |
mlflow.pyfunc.spark_udf() | spark, model_uri | Spark UDFとしてバッチ推論に利用 |
| 出題テーマ | 問われる内容 |
|---|---|
| 対応タスク | Classification(分類)、Regression(回帰)、Forecasting(時系列予測)の3種。クラスタリングは非対応 |
| 実行方法 | UI(Experiments画面から起動)とAPI(automl.classify() 等)の2通り |
| 生成物 | MLflow Experiment、各TrialのRun、編集可能なソースノートブック、ベストモデル |
| データ前処理 | 欠損値補完、ワンホットエンコーディング、特徴量選択が自動実行される |
| カスタマイズ | 生成ノートブックを編集して前処理やモデルを調整し、独自のRunとして再実行可能 |
| トピック | DEA | ML Associate |
|---|---|---|
| Delta Lake基礎 | 深く出題(MERGE、CDF、制約) | 特徴量テーブルの文脈で基礎レベル |
| Spark DataFrame | ETL操作中心(filter, join, aggregate) | ML用の特徴量エンジニアリング操作 |
| Unity Catalog | テーブル・ビューの権限管理 | モデル・Feature Storeの権限管理 |
| MLflow | 基本概念のみ(出題頻度低い) | Tracking/Registry/Servingを詳細に出題 |
| Spark ML | 出題なし | Pipeline/CrossValidatorを詳細に出題 |
| AutoML | 出題なし | 実行方法・生成物・カスタマイズを出題 |
| DLT(Delta Live Tables) | 詳細に出題 | 出題なし |
| Workflows / Jobs | 詳細に出題 | MLパイプラインのオーケストレーション文脈で軽く出題 |
DEAに合格済みの受験者は、Delta Lake・Spark DataFrame・Unity Catalogの基礎知識をそのまま活用できます。 追加で必要なのはMLflow(約40%)、Spark ML(約22%)、AutoML・Feature Store(約10%)、分散学習(約15%)です。 DEAの知識が流用できる部分は約13〜15%程度と見積もれるため、DEA合格者でも2ヶ月程度の追加学習を計画してください。
create_training_set() で訓練データを作成するSpark ML
問題 1
MLエンジニアがSpark MLパイプラインを構築し、ハイパーパラメータチューニングを実施したい。以下のコードの空欄に入る組み合わせとして正しいものはどれか。 pipeline = Pipeline(stages=[indexer, assembler, lr]) param_grid = ParamGridBuilder().addGrid(lr.regParam, [0.01, 0.1]).build() evaluator = BinaryClassificationEvaluator(labelCol='label') cv = CrossValidator(estimator=___A___, estimatorParamMaps=___B___, evaluator=evaluator, numFolds=3) cv_model = cv.fit(train_df) best = cv_model.___C___
正解: A
CrossValidatorのestimatorにはPipeline全体を渡します。lrだけを渡すと前処理(indexer, assembler)が含まれず、データの変換が行われないまま訓練が実行されてエラーになります。estimatorParamMapsにはParamGridBuilderで構築したパラメータグリッドのリストを渡します。最良モデルの取得はbestModelプロパティ(Pythonのキャメルケース)です。best_paramsはscikit-learnのAPIであり、Spark MLでは使用しません。
ML AssociateとData Engineer Associateは同時に勉強できますか?
出題範囲の約30%(Delta Lake基礎、Spark DataFrame操作、Unity Catalog権限)が重複するため、DEAを先に合格してからML Associateに進むと効率的です。ただしML Associate固有のMLflow Tracking・Model Registry・AutoML・Spark MLパイプラインは別途学習が必要で、これらが配点の約70%を占めます。両試験を並行するよりも、DEA→ML Associateの順で1試験ずつ集中する方が合格率が高い傾向があります。
ML Associateの試験でPythonコードはどの程度出ますか?
全45問中15〜20問程度でPythonコードスニペットが登場します。特にmlflow.start_run()のコンテキストマネージャー、mlflow.log_param/metric/artifactの使い分け、Spark ML PipelineのTransformer/Estimator構築、CrossValidatorの設定パターンが頻出です。コードは穴埋めや誤りの指摘形式が多く、実際にコードを書く必要はありませんが、APIの引数名や戻り値の型を正確に覚えておく必要があります。
ML ProfessionalとML Associateの違いは何ですか?
Associateは「MLflowで実験を記録し、Spark MLでパイプラインを組み、AutoMLで迅速にベースラインモデルを作る」という個人ワークフローが中心です。Professionalは「本番MLパイプラインの設計・分散学習のチューニング・A/Bテスト・モデルドリフト監視・Feature Storeのオンライン/オフライン一貫性」といったチームでの運用設計を問います。Associateの合格が前提条件ではありませんが、Associateレベルの知識は当然求められます。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...