この記事では、 pyspark.ml.connect
モジュールを使用して分散トレーニングを実行して Spark ML モデルをトレーニングし、モデル推論を実行する方法を示す例を示します。
pyspark.ml.connect
の概要
Spark 3.5 では、Spark 接続モードと Databricks Connect をサポートするように設計された pyspark.ml.connect
が導入されています。
Databricks Connect の詳細を確認します。
pyspark.ml.connect
モジュールは、分類、特徴変換器、ML パイプライン、クロス検証などの一般的な学習アルゴリズムとユーティリティで構成されています。 このモジュールは、レガシ pyspark.ml
モジュールと同様のインターフェイスを提供しますが、pyspark.ml.connect
モジュールには現在、pyspark.ml
のアルゴリズムのサブセットのみが含まれています。 サポートされているアルゴリズムを次に示します。
- 分類アルゴリズム:
pyspark.ml.connect.classification.LogisticRegression
- 特徴変換器:
pyspark.ml.connect.feature.MaxAbsScaler
およびpyspark.ml.connect.feature.StandardScaler
- エバリュエーター:
pyspark.ml.connect.RegressionEvaluator
、pyspark.ml.connect.BinaryClassificationEvaluator
、MulticlassClassificationEvaluator
- パイプライン:
pyspark.ml.connect.pipeline.Pipeline
- モデル チューニング:
pyspark.ml.connect.tuning.CrossValidator
必要条件
Databricks Runtime 17.0 以降では、Spark 接続の Spark ML は、 Standard アクセス モードのコンピューティング リソースで既定で有効になっています。一部の制限があります。 Standard コンピューティングでの Databricks Runtime 17.0 の制限事項を参照してください。 1 つのノードのメモリに収まらないデータに Spark レベルの分散が必要な場合、または分散ハイパーパラメーターの調整を行う必要がある場合は、Standard コンピューティングで Spark ML を使用します。
Databricks Runtime 14.0 ML 以降 ( 専用 アクセス モードを使用するコンピューティング リソースの Databricks Runtime 17.0 を含む) には、Spark ML を使用するための追加の要件があります。
- クラスターで Databricks Connect を設定します。 Databricks Connect の Compute 構成を参照してください。
- Databricks Runtime 14.0 ML 以降がインストールされています。
- 専用アクセス モードのコンピューティング リソース。
ノートブックの例
次のノートブックは、Databricks Connect で分散 ML を使用する方法を示しています。
Databricks Connect での分散 ML
Databricks は、pyspark.ml.connect
の API に関するリファレンス情報について、Apache Spark API リファレンスを推奨しています
Standard コンピューティングでの Databricks Runtime 17.0 の制限事項
- Python のみ: Standard コンピューティング上の Spark ML では、Python のみがサポートされます。 R と Scala はサポートされていません。
-
ライブラリのサポート:
pyspark.ml
パッケージのみがサポートされています。pyspark.mllib
パッケージはサポートされていません。 - モデル サイズの制約: モデルの最大サイズは 1 GB であるため、非常に大規模なモデルのトレーニングは不可能な場合があります。 モデル サイズが 1 GB を超える場合、ツリー モデルのトレーニングは早期に停止します。
- メモリ制約: データはクラスター全体に分散できますが、トレーニング済みのモデル自体はドライバー ノードにキャッシュされ、他のユーザー間で共有されます。 セッションあたりの最大モデル キャッシュ サイズは 10 GB で、セッションあたりのメモリ内モデルキャッシュの最大サイズは Spark ドライバー JVM メモリの 25% です。
- セッション タイムアウト: Standard コンピューティングでキャッシュされたモデルは、非アクティブ状態が 15 分続くと自動的にタイムアウトし、モデルの概要が失われます。 モデルが失われるのを防ぐには、トレーニングが完了してから 15 分以内にディスクに保存するか、頻繁に使用してセッションをアクティブにしておく必要があります。
- リソースの競合: Standard コンピューティング環境では、ワークスペース内のユーザーとジョブ間でリソースが共有されます。 複数の大規模なジョブを同時に実行すると、Executor スロットのパフォーマンスや競合が遅くなる可能性があります。
- GPU サポートなし: Standard コンピューティング環境では GPU アクセラレーションはサポートされていません。 GPU 高速機械学習ワークロードの場合は、専用 GPU クラスターをお勧めします。
-
制限付き SparkML モデル: 次の SparkML モデルはサポートされていません。
DistributedLDAModel
FPGrowthModel