最近、スタンドアロンのPython MLコードをsparkに移行する予定です。 spark.ml
のMLパイプラインは、アルゴリズムステージの連鎖とハイパーパラメータグリッド検索のための合理化されたAPIにより、非常に便利です。Spark MLパイプラインで中間結果をキャッシュする
でも、既存のドキュメントではわかりにくい1つの重要な機能がサポートされています。中間結果のキャッシング。この特徴の重要性は、パイプラインが計算集約的な段階を含む場合に生じる。
例えば、私の場合は、入力フィーチャを形成するために巨大な疎行列を使用して時系列データに対して複数の移動平均を実行します。マトリックスの構造は、いくつかのハイパーパラメータによって決定される。このステップは、実行時に行列を構築する必要があるため、パイプライン全体のボトルネックとなります。
私は通常、この「構造パラメーター」以外のパラメーターを調べます。ですから、 "構造パラメータ"が変更されていないときに巨大な行列を再利用できれば、時間を大幅に節約できます。このため、これらの中間結果をキャッシュして再利用するように意図的にコードを作成しました。
私の質問は:スパークのMLパイプラインが中間キャッシングを自動的に処理する?それとも手動でコードを作成しなければならないのですか?もしそうなら、そこから学ぶべきベストプラクティスはありますか?
P.S.私は公式文書とその他の資料を調べましたが、そのうちのどれもこのトピックについて議論していないようです。
を私は[関連する質問](http://stackoverflow.com/questions/33161320/distributed-batch-computationを持っています長期間の持続性とチェックポイント設定)、残念ながら応答もありません。 –