私は、異なるスレッドで複数のクラスのsvmsを訓練したいと思います。 scikits.learn.svmがGILをリリースするかどうか誰かが知っていますか? Googleで回答が見つかりませんでした。 ありがとうScikitsはPython GILをリリースしますか?
2
A
答えて
3
いいえ、scikit-learnはGILでどんなトリックも再生しません。代わりに、すべての並列処理にjoblibを使用します。これにより、複数のプロセスが処理を開始します。カスタムジョブライブラリParallel
を使って、あなたが望むものを達成することができます。
複数のクラシファイアを異なる設定で同じデータセットに訓練して最適なものを見つける場合は、並列性を扱うGridSearchCV
クラスの使用を検討してください。
2
いくつかのSklearn Cythonクラスは、0.15(2014年初めにリリースされる)とlibsvmラッパーのように、意思決定ツリー(例えばランダムフォレストで使用される)など、パフォーマンスクリティカルセクションで内部的にGILをリリースします。
これは一般的なルールではありません。あなたがGILをリリースするために変更可能なsklearnのパフォーマンスクリティカルなcythonコードを特定した場合は、プルリクエストを送信してください。
関連する問題
- 1. GILがリリースされたら?
- 2. python scikits learn - SVMオプション
- 3. python WebサーバーはGILをどのように克服しますか
- 4. Python GILをCモジュールでバイパスすることはできますか?
- 5. C++スレッドからpythonスクリプトを呼び出すGIL
- 6. 別々のpythonプロセスを実行するとGILを回避できますか?
- 7. boost :: gil :: color_converted_viewとboost :: gil :: for_each_pixelの使用
- 8. PyPyのGILはどこですか?
- 9. GILがI/Oバインドスレッドを終了しています
- 10. クロスバリデーションを使用したscikits混同マトリクス
- 11. python、scikits-learn:どの学習方法がスパースな特徴ベクトルをサポートしていますか?
- 12. IBOutletsプロパティ。リリースまたはリリースしない
- 13. Perl 6にはグローバルインタプリタロック(GIL)がありますか?
- 14. Python Pypi:異なるPythonバージョンのパッケージをリリースするプロセスは何ですか? (Linux)
- 15. NSTimer iPhoneをリリースしますか?
- 16. ctypesで作成されたスレッドは、PythonのGILの下にもありますか?
- 17. Boost :: GILビュータイプからチャンネルタイプを抽出するには?
- 18. 同時治療薬はGILの薬ですか?
- 19. boost :: gil bgr8_view_tオブジェクトへのポインタ
- 20. Ruby Fiddle and Global Interpreter Lock(GIL)
- 21. NSThreadをリリースするには、リリースするプロセスがありますか?
- 22. MonoDroidはベータ版、MonoTouchはリリース版を使用しますか?
- 23. Hudsonを使用したMavenリリース。リリースは成功しますが、ハドソンは赤いままです
- 24. Boost :: GILはメモリから画像を読み取る
- 25. Capistranoはリリースを作成しません
- 26. NSMutableStringをリリースしません
- 27. Yield/Joinリリースはモニタロックを解除しますか?
- 28. Erlangのリリース番号は何を意味していますか?
- 29. CMAKE_BUILD_TYPE =リリースは-DNDEBUGを意味しますか?
- 30. Python scikits - バッファの次元数が間違っています(予想1、取得2)
あなたのコメントをありがとうございます。残念ながら、別のスレッドを使用する並列処理(より大きなアプリケーションの他の部分との互換性のために)のために外部ライブラリに依存する必要があるため、この問題は実際には解決されません。したがって私はGILを解放するsvmの代わりのライブラリを探したいと思っています。それを行うにはscikits.learnを騙してください。多分あなたはどんな提案もありますか? –
サブプロセスでscikit-learnコードを実行することができます。生成された分類子は、ピクルされるので、プロセス間で簡単に転送することができます。唯一の問題は効率的な方法(おそらくファイルシステムを通して)でトレーニングデータを転送することです。 –
また、libsvmラッパーは[Cython](http://cython.org)で書かれています。私は、[GILをリリース](http://docs.cython.org/src/userguide/external_C_code.html#acquiring-and-releasing-the-gil)にラッパーコードをパッチするのはかなり簡単だと思います。もしあなたがそうし、それがあなたの問題を解決するならば、githubのプルリクエストとしてあなたの変更を提出してください。 また、scikit-learn見積もりはスレッドセーフではないことに注意してください。スレッド間で見落とし見積もりインスタンスを使用してください。 – ogrisel