問題タブ [ipython-parallel]
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.
ipython - ipengines にすべてのローカル変数とインポートを完全にリセットさせることはできますか?
私のワークフローは次のとおりです: ipcontroller/ipengines を開始し、異なるパラメーターで 'python test_script.py' を数回実行します。このスクリプトには map_async 呼び出しが含まれています。ipengines は、スクリプトへの呼び出し間のコードへの変更を認識せず、静的クラス変数はデフォルトにリセットされません。魔法の %reset 呼び出しでうまくいくように思えますが、ipengines でこのコマンドを実行しようとしても何も起こらないようです。
python - 関数でエンジン ID を取得する
を使用して多数のジョブをスケジュールするために ipython parallel を使用していload_balanced_view
ます。各ジョブはsubprocess.Popen
、コードを実行し、stdout と stderr を取得するために使用します。次に、それらをログ ファイルに保存します。
これは、私が実行しているコードの構造の例です。
複数のプロセッサを使用するので、最良の場合でも、ログ ファイルは混乱しているように見えます。解決策として、ファイルをロックして、一度に 1 つのプロセスだけが書き込みできるようにすることが考えられます。これは実現可能ですが、私には少しやり過ぎに見えます。
より良い解決策は、ファイル名にエンジン ID を使用して、各エンジンのログ ファイルを開くことです。このようなもの:"logfile_{}.log".format(id)
質問は: 内からエンジン ID を取得する方法はありますrun_exe
か?
python - データフレームを ipython 並列エンジンにプッシュできません
1MM 行 35 列の pandas データフレーム オブジェクトを ipython 並列エンジンの directView にプッシュしました。ただし、関数がデータフレームの長さを出力できないため、このデータ (または空のデータフレーム) をエンジンにプッシュするのに問題があります。これが私のコードのスニペットです。
asyn.stdout を見た後、これは私が受け取ったエラーです。どんな助けでも大歓迎です!:
python - IPython.parallel で Sympy の lambdify を使用するとエラーが発生する
私が取り組んでいる数値計算では、大きな Liouvilian 行列を定義する必要があります。面倒でエラーが発生しやすい要素ごとにプログラムするのではなく、Sympy を使用して代数的に構築しlambdify
、数値計算で使用する numpy 行列を作成しました。これは小さなタスクでは問題なく動作しますが、これらの関数を を使用してワーカー エンジンに配布すると、奇妙なエラーが発生しIPython.parallel
ます。
ここでは、たとえば、何も意味しないばかげた sympy 行列を作成します。
この例の場合、同じ入れ子になったループを使用して numpy マトリックスを直接構築することもできましたが、これは実際の問題のマトリックスには当てはまりません。とにかく、数字を差し込む前に代数表記で書き出されるのを見るのはいいことです。
lambdify
私は数値作業のために Numpy 行列を取得するために使用します。
の複数の値で評価されたこの行列 (行列式など) を含む計算を行いたいとしますy
。
この例は高価ではありませんが、そうであれば、次のようにタスクを分散します。
次のエラーが表示されます。
明らかにラムダ関数をImmutableMatrix
定義する必要があるため、これは機能しませんでした。これは聞いたことがなく、ラムダ化した行列のタイプでさえありません。
いずれにせよ、エンジンで Sympy コードを実行したくありません。私が配布したいタスクは代数的ではなく数値的であり、lambdify が独自に実行できる numpy コードを生成したことを願っています。
sympy から並列化可能な numpy コードを生成する適切な方法は何ですか?
バージョン
これは、Python 2.7.3、IPython 1.1.0、Sympy 0.7.4.1、および Numpy 1.8.0 で行われました。この質問を書くために使用したノートブックは、nbviewerでアクセスできます。
python - iPython の LoadBalancedView における非 DAG タスクの依存関係
ipython parallel と LoadBalancedView を使用して、多くのモデルを並行してトレーニングしたいと考えています。
ただし、各タスクが完了した後、特定のノードが別のノード (タスクアレンジャーと呼びましょう) と「チェック」して、続行する必要があることを確認する必要があるという制約が必要です。
これは実際には DAG ではなく、クライアントが別のタスク アレンジャー ノードと通信して、タスク完了のタイミングと順序の両方を制御するだけです。
また、ドロップアウトしたノードが失敗した場合に、そのタスクが他のノードに引き継がれるようにする必要もあります。
iPython 並列でこれを行うにはどうすればよいですか?
編集: 明確にするために、タスクを処理し、結果を報告し、ソケット通信などを処理する iPython 並列の機能が好きですが、マスタープロセスとプロセスから選択したときに、個々のタスクを個々のマシンに与える力が本質的に必要です。完了または与えられたタスクを追加します。
編集 #2: ああ、おそらくテーブルをロックしてから、このテーブル内のタスクの順序を手動で変更できます(?)。ロックにより、クライアントがそれ以上のタスクを取得するのを阻止できます (クライアントは待機する必要があります)。タスク自体に基づいて、好きなように順序を変更できます。
python - クラスター内の iPython 並列エンジンをデバッグする
このスレに関係...
iPython クラスターでの処理の結果が、同じプロセスをローカルで実行したときに発生する結果と一致しないというバグを追跡しようとしています。iPython クラスターが完全にローカルであり、CPU が単に複数のエンジンを実行している場合でも。
エンジンで処理されているため、データをログに記録する方法がわかりません。print ステートメントが機能せず、各エンジンに個別のファイルに書き込もうとしても、ファイルは作成されますが、何も書き込まれません。
iPython 並列エンジンで実行されているコードをデバッグする方法が必要です。