由于 Hadoop Cloudera 部署在 Infra 节点和 Data 节点中工作,因此应该使用相同的硬件配置将 Tensorflow 部署在哪里?在 Infra 节点或数据节点中?
由于 Tensorflow 需要 GPU,因此需要知道在哪里部署,以便我知道要在哪个节点上添加 GPU。
最佳答案
https://github.com/linkedin/TonY
使用 TonY,您可以提交 TensorFlow 作业并指定工作器数量以及它们是否需要 CPU 或 GPU。
下面是如何使用 README 中的示例:
在 tony
目录中还有一个 tony.xml
,其中包含您所有的 TonY 作业配置。
例如:
$ cat tony/tony.xml
<configuration>
<property>
<name>tony.worker.instances</name>
<value>4</value>
</property>
<property>
<name>tony.worker.memory</name>
<value>4g</value>
</property>
<property>
<name>tony.worker.gpus</name>
<value>1</value>
</property>
<property>
<name>tony.ps.memory</name>
<value>3g</value>
</property>
</configuration>
有关配置的完整列表,请参阅 wiki。
型号代号$ ls src/models/ | grep mnist_distributed
mnist_distributed.py
然后你就可以开始你的工作了:
$ java -cp "`hadoop classpath --glob`:tony/*:tony" \
com.linkedin.tony.cli.ClusterSubmitter \
-executes src/models/mnist_distributed.py \
-task_params '--input_dir /path/to/hdfs/input --output_dir /path/to/hdfs/output --steps 2500 --batch_size 64' \
-python_venv my-venv.zip \
-python_binary_path Python/bin/python \
-src_dir src \
-shell_env LD_LIBRARY_PATH=/usr/java/latest/jre/lib/amd64/server
命令行参数如下:
* executes
描述训练代码入口点的位置。
* task_params
描述将传递给您的入口点的命令行参数。
* python_venv
描述本地 zip 的名称,它将调用您的 python 脚本。
* python_binary_path
描述包含 python 二进制文件的 python 虚拟环境中的相对路径,或者使用已安装在所有工作节点上的 python 二进制文件的绝对路径。
* src_dir
指定本地根目录的名称,其中包含所有 python 模型源代码。该目录将被复制到所有工作节点。
* shell_env
指定将在 python worker/ps 进程中设置的环境变量的键值对。
关于hadoop - Tensorflow 和 Hadoop 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43250863/