問題タブ [doparallel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - ランダム フォレストのトレーニングを高速化するにはどうすればよいですか?
いくつかのランダム フォレスト (回帰用) をトレーニングして、それらを競合させ、どの機能選択とどのパラメーターが最適なモデルを提供するかを確認しようとしています。
しかし、トレーニングには非常に時間がかかるようで、何か間違ったことをしているのだろうかと思っています.
私がトレーニングに使用しているデータセット (以下で呼び出されtrain
ます) には 217,000 行、58 列があります (ランダム フォレストで予測子として機能するのはそのうちの 21 のみです。クラスのブール値を除いて、それらはすべてnumeric
orです) .出力は) です。integer
character
y
numeric
次のコードを 4 回実行して、値4
、100
、500
、2000
を指定しましたnb_trees
。
それぞれのトレーニングにかかった時間は次のとおりです。
私の会社のサーバーには 12 コアと 125Go の RAM があるので、この回答に従って、トレーニングを並列化できると考えました(ただし、doParallel
パッケージを使用したのdoSNOW
は、.私が見た場所も見つけられませんでしたdoParallel
、申し訳ありません)。
実行すると、並列化されていないコードよりも時間がかかりません。
とはいえ、まだまだ時間がかかると思いますよね?ツリーを最終的なフォレストに結合するのに時間がかかることは承知しているので、12 コアで 12 倍高速になるとは思っていませんでしたが、〜 2 倍しか高速ではありません...
- これは正常ですか?
- そうでない場合、実行時間を根本的に短縮するために、データやコードでできることはありますか?
- そうでない場合は、サーバーの担当者にもっと高速にする必要があることを伝えるべきですか?
回答ありがとうございます。
ノート :
- このサーバーを使用しているのは私だけです
- 次のテストでは、ランダム フォレストで使用されていない列を削除します。
randomForest(predictors,decision)
の代わりに呼び出すことで実行時間を改善できることにかなり遅れて気づきましたrandomForest(decision~.,data=input)
。これからもそうしますが、上記の質問はまだ有効だと思います。
r - 「checkForRemoteErrors(lapply(cl, recvResult)) のエラー: ... オブジェクト '.doSnowGlobals' が見つかりません」エラーの考えられる理由?
私は長年 R で関数スクリプトを繰り返し実行してきました。関数定義内で、マルチコア Windows ワークステーションで次を使用して並列クラスターをセットアップしました。
昨日の時点で、関数の実行が機能しなくなり、何時間もハングアップしていました。(さらに、リソース モニターを使用すると、スクリプトで 20 コアを指定しているにもかかわらず、アクティブな CPU がないことがわかりました)。関数に戻って行ごとにテストしたところ、次の行が実行されていないことがわかりました (つまり、通常は数秒で実行されるときにハングアップしています)。
問題を調べてみたところ、「PSOCK」タイプの使用に関するいくつかの参照が見つかりましたが、PSOCK と SOCK をいつ使用するかを判断できませんでした。それにもかかわらず、「SOCK」の代わりに「PSOCK」を使用して同じスクリプトを試みました。
PSOCK の変更により、ハングアップしなくなり、これと registerDoParallel() 呼び出しを実行しているように見えました。
ただし、上記の 2 行を含む完全な関数を実行してから、以下のように関数を呼び出すと、見たことのないエラーが発生しました。
タイプまたは出力ファイルを指定しないことも試みましたが、これにより type="PSOCK" を使用した場合と同じエラーが発生しました
私の質問: 1. makeCluster() 行がハングアップするのはなぜですか? cl <- makeCluster(cl.spec, type="SOCK", outfile="")
- parallel および doParallel パッケージのみがロードされている場合でも、snow および doSNOW パッケージもロードされている場合でも、問題が発生します。foreach() コマンドを実行するには、4 つのパッケージすべてが必要ですか?
上記のように、makeCluster() および registerDoParallel() 呼び出しを含む関数定義と関数呼び出しを次に示します。
エラーを参照するこれらの投稿を見つけましたが、解決策がうまくいきません: エラー: オブジェクト '.doSnowGlobals' が見つかりませんか? http://grokbase.com/t/r/r-sig-hpc/148880dpsm/error-object-dosnowglobals-not-found
私は、40コアの64ビットWindows 8マシンで作業しています。
R バージョン 3.3.0 (2016-05-03) -- 「おそらく教育的」 Copyright (C) 2016 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 (64 ビット)
r - RWeka はキャレットまたはおそらく %dopar% では機能しません
caret
パッケージの R 教科書である Applied Predictive Modeling の著者による演習を完了しています。train
関数をメソッドM5P
またはで動作させることができませんM5Rules
。
コードは手動で正常に実行されます。
同じデータとコントロール (「ルール」を「M」に交換 - M を調整パラメーターとして指定できないのはなぜですか? ) は終了しません。
本の例も終了しません。
これは、少なくとも私にとっては、RWeka で並列バックエンドを使用する際の問題かもしれません。上記の私の例は、 では終わりません%dopar%
。
各例の前に実行sudo R CMD javareconf
し、Rstudio を再起動しました。
r - foreach partialPlot randomForest
パッケージforeach
から部分依存プロットをプロットするために使用しようとしています。randomForest
取得エラー:
Error in { : task 1 failed - undefined columns selected
r - ForEach と DoParallel はすべての RAM を使い果たしますか?
複数の形状ファイルを R セッションにロードする必要があります。現在、各形状ファイルを個別にロードしています。これは機能しますが、時間がかかり、使用可能な CPU の 15% しか使用しません。最近、ForEach と DoParallel を使用してシェープ ファイルを読み込んでみました。
この方法は機能し、非常に高速です (CPU を 100% 使用します)。ただし、特にプロセスを何度も繰り返すと、メモリを使いすぎます。このような大きなメモリ ヒットを発生させずに ForEach と DoParallel を使用する方法はありますか? 私のマシンには 8 つのプロセッサ (4 つの物理と 4 つの論理) があり、16 GB の RAM があります。