機械学習ライブラリ(MLlib)ガイド

MLlibはSparkの機械学習(ML)ライブラリです。その目的は実用的な機械学習をスケーラブルおよび簡単にすることです。高レベルでは、それは以下のようなツールを提供します:

発表: データフレームに基づいたAPIは主要なAPIです

MLlib RDDベースのAPIは、今はメンテナンスモードにあります。

Spark 2.0の時点で、spark.mllibパッケージ内のRDDに基づいたAPIはメンテナンスモードに入りました。Sparkのための主要な機械学習APIは、今はspark.mlパッケージ内のDataFrameに基づいたAPIです。

何を意味するのか?

なぜMLlibはデータフレームに基づいたAPIに切り替わっているのか?

"Spark ML"とは何か?

MLlibは非推奨ですか?

依存

MLlib は線形代数パッケージ Breezeを使用します。これは最適化された数学処理のためにnetlib-javaに依存します。実行時にネイティブライブラリ1が利用できない場合は、警告メッセージが表示され、ピュアJVM実装が代わりに使われるでしょう。

ランタイムのプロプライエタリ バイナリのライセンスの問題で、デフォルトではnetlib-javaのネイティブ proxiesを含んでいません。システムに最適化されたバイナリを使用するために netlib-java / Breeze を設定するには、プロジェクトの依存としてcom.github.fommil.netlib:all:1.1.2 をインクルード(あるいはSparkを -Pnetlib-lgpl付きでビルド)して、プラットフォームの追加のインストレーション説明のために netlib-javaドキュメントを読んでください。

Intel MKL, OpenBLASのような最も一般的な native BLASは1つの層さで複数のスレッドを使うことができます。これらはSparkの実行モデルと衝突するかもしれません。

操作のために1つのスレッドを使うようにこれらのBLAS実装を設定すると、実際にはパフォーマンス改善するかもしれません (SPARK-21305を見てください)。これを各Sparkタスクが使用するように設定されたコアの数に一致させるのが通常は最良です。これはデフォルトでは1で、一般的には1のままにされます。

これらのBLAS実装が使用するスレッドの数を設定する方法を理解するには、以下のようなリソースを参照してください: Intel MKL あるいは Intel oneMKL および OpenBLAS。Note that if nativeBLAS is not properly configured in system, java implementation(f2jBLAS) will be used as fallback option.

PythonでMLlibを使用するには、NumPy バージョン1.4以上が必要になるでしょう。

3.0 の見どころ

以下のリストはSpark 3.0 リリースでMLlibに追加された特徴と拡張の幾つかを強調します:

移行ガイド

移行ガイドは今はこのページに保管されています。

  1. システムに最適化されたネイティブコードの恩恵とバックグラウンドについて知るために、High Performance Linear Algebra in ScalaでのSam HallidayのScalaXトークを見たいと思うかも知れません。 

TOP
inserted by FC2 system