2017-09-02 7 views
1

私は、Moore-Penrose擬似逆関数の使用を必要とするSparkの極端な学習機種のニューラルネットワークを開発しています。これはSparkライブラリでは使用できませんので、Spreeデータ構造をBreezeマトリックスに変換する必要があるBreezeを使用しています。 beta = pinv(H) * Tまでは、すべてがOOM例外(私はSparkでは可能ではないと思っていた)で失敗します。なぜどんなアイデア?Breeze pinv(Moore-Penrose)疑似逆関数は、Sparkを使用してOutOfMemoryエラーを返します。

pinvは、BreezeのMoore-Penrose擬似逆行列です。 Hは、35,000行10列の行列です。 SVDはこれに対処できなければなりません。それは特に大きなデータセットではなく、30Mbしか必要としません。私はラップトップでローカルにすべてを実行していますが、クラウドには何もありません。私はノートパソコン(MacBook Air)に8Gのメモリを持っています。

私はあなたが火花シェルコマンドを使用してドライバのメモリ容量を増やすことができることを読んで私はこれを行う方法がわからない、またはそれはSparkSession

val spark: SparkSession = SparkSession 
    .builder() 
    .master("local[*]") 
    .appName("ELMPipelineTest") 
    .getOrCreate()` 
を設定し、私のIDEのコードとリンクする方法を
+0

よろしくお願いします。次に何を考えていますか?これは私のラップトップで動作するには大きすぎると言っていますか? SVDはアルゴリズムに不可欠であり、それがなければ動作しません。あなたはドライバーの記憶を増やす​​ことが効果をもたらすと思いますか?私は実際にどのようにメモリを変更するかわからない、指示は初心者のためにかなり不透明です。ご協力いただきありがとうございます! – LucieCBurgess

答えて

0

以下のように修正しました。まず、JVMをビルドする前にSparkドライバのメモリを変更する必要があるため、IDEではなく、コマンドラインでアプリケーションを実行する必要があります。私は走ったLinuxシェルを経由して、私のプロジェクトのトップレベルのディレクターからので、私のビルドツールとしてSBTを使用しています:

sbt compile 
sbt package // this creates a jar file 
$SPARK_HOME/bin/spark-submit --class dev.elm.ELMPipeline --master local[4] --driver-memory 8G path/to/jar.jar 

私が最初にスパークホーム変数として$ SPARK_HOMEを設定します。 これは、Java OOMエラーを回避します。これを指摘してくれた@RafalKwasnyに感謝します。

関連する問題