2

私は sklearn グリッド検索の並列化に取り組んでおり、3 つのパラメーターをスイープしていますが、ipython.parallel で動作するようにプロジェクトをリファクタリングするのに問題があります。私の現在の考え方は、次のような単純な関数を作成することです。

  • リッジパラメータを受け入れます
  • モデルをトレーニングするためのデータセットをダウンロードします
  • モデルをトレーニングし、スコアと結果のモデルを S3 に保存しますか?

これは、グリッド検索を並列化するアプローチとして理にかなっていますか?

その場合、ローカル マシンとリモート エンジンの間でコードを共有する方法はありますか?

たとえば、いくつかの異なるモジュールを含むソース ツリーがあります。

/exploration
    /log_regression/
    /log_regression/experiments.py
    /log_regression/make_model.py
    /linear_regression/
    /linear_regression/experiments.py
    /linear_regression/make_model.py
    /linear_regression/parallel.py

StarCluster を使用して、EC2 にクラスターをデプロイし、リッジ パラメーターで sklearn gridsearch を実行するプロセスを並列化したいと考えました。しかし、すべてのローカル モジュールをリモート エンジンと簡単に共有する方法が見つかりませんでした。これを行うためのパターンはありますか、またはどのように考えを再構築する必要がありますか?

4

1 に答える 1

0

コードを複数のノードにデプロイすることが問題であり、並列処理用にコードを設計することではない場合は、ローカル (ネットワーク) のソース コード管理 (git または mercurial サーバー) を介してコードにアクセスできるようにし、スクリプトを作成することを検討してください。展開: 処理を開始する前にすべてのノードに接続し、作業環境を準備するユーティリティ。そしてもちろん、これには必要な依存関係と共にコードの最新バージョンをチェックアウトすることが含まれます。Unix ライクな OS を使用していると仮定すると、これを支援する Python ユーティリティがいくつかあります。

  • virtualenv、pipを介して多くのpythonライブラリにアクセスできる自己完結型のpython環境用。
  • paramiko、ssh接続とシェルの相互作用のスクリプト作成用
  • vcstools、いくつかの scm (svn、git、mercurial など) の一般的なソース コード操作を抽象化するライブラリ

また、ソース コード管理をゼロから設定する手間をかけたくない場合は、コードをgithubでホストするか、コードを公開したくない場合は、bitbucket (無料で提供されている) を使用できます。プライベート リポジトリ、および git と mercurial の選択も可能)。

于 2014-03-17T02:59:41.650 に答える