これは比較的簡単です。
ホストごとに1つのプロセスを要求する簡単な仮定の下で、slurmは環境変数に必要なすべての情報、特にSLURM_PROCID、SLURM_NPROCS、およびSLURM_NODELISTを提供します。次のように
たとえば、あなたがあなたのタスクインデックス、タスクの数とノードリストを初期化することができます:SLURMはあなたにその圧縮形式のホストリストを与えること
from hostlist import expand_hostlist
task_index = int(os.environ['SLURM_PROCID'])
n_tasks = int(os.environ['SLURM_NPROCS'])
tf_hostlist = [ ("%s:22222" % host) for host in
expand_hostlist(os.environ['SLURM_NODELIST']) ]
注意を(例えば、「myhostの[11 -99] ")、拡張する必要があります。私は、例えば、利用可能 ケントEngströmにより、モジュールのホストリスト、とここhttps://pypi.python.org/pypi/python-hostlist
その時点で、あなたは右先に行くことができますし、利用可能な情報を使用してTensorFlowクラスタの指定とサーバーを作成することを実行します。
cluster = tf.train.ClusterSpec({"your_taskname" : tf_hostlist })
server = tf.train.Server(cluster.as_cluster_def(),
job_name = "your_taskname",
task_index = task_index)
あなたはセットです!これで、通常の構文を使用して割り当ての特定のホスト上でTensorFlowノードの配置を行うことができます。
for idx in range(n_tasks):
with tf.device("/job:your_taskname/task:%d" % idx):
...
上記報告のコードを持つ欠点は、すべてのジョブが固定ポート22222でリスニングサーバーをインストールするTensorflowに指示することです。複数のジョブが同じノードにスケジュールされた場合、2番目のジョブは22222の応答に失敗します。
より良い解決策は、ジョブごとにslurm予約ポートを使用させることです。あなたはあなたのslurm管理者を連れて来て、slurmを設定するように頼んで、--resv-portsオプションでポートを尋ねる必要があります。
MpiParams=ports=15000-19999
あなたのバグの前にあなたのSLURMの管理者が、で、例えば、オプションがすでに設定されているかどうか確認:
scontrol show config | grep MpiParams
実際には、これは彼らのslurm.confに次のような行を追加することを求める必要が
サイトですでにOpenMPIの古いバージョンが使用されている場合は、このようなオプションが既に存在する可能性があります。その後
、次のようにコードの私の最初のスニペットを修正:
from hostlist import expand_hostlist
task_index = int(os.environ['SLURM_PROCID'])
n_tasks = int(os.environ['SLURM_NPROCS'])
port = int(os.environ['SLURM_STEP_RESV_PORTS'].split('-')[0])
tf_hostlist = [ ("%s:%s" % (host,port)) for host in
expand_hostlist(os.environ['SLURM_NODELIST']) ]
幸運を!
[継続的インテグレーションサイト](http://ci.tensorflow.org/)についての情報が助けになるかもしれません。また、[readme](https://tensorflow.googlesource.com/tensorflow/+/master/tensorflow/tools/ci_build/README.md)を参照してください –
私はSlurmとDockerのGoogleクエリを実行し、複数の結果がありました。 –
特定の情報源を見つけましたか?はいの場合は、共有してください。もちろん、Googleはいくつかのページをリストしていますが、Slurmジョブを使ってPython-APIでTensorFlowを実行するためのヒントやチュートリアル、公式の情報は見つかりませんでした。 – daniel451