纱线团簇上的分布张量流

tf-yarn的Python项目详细描述


tf纱_

tf yarn

安装

使用PIP安装

$ pip install tf-yarn

从源安装

$ git clone https://github.com/criteo/tf-yarn
$ cd tf-yarn
$ pip install .

先决条件

tf纱仅支持python≥3.6。

确保tensorflow与hdfs一起工作,方法是设置所有环境变量,如这里所述

您可以运行check hadoop env脚本来检查您的设置是否正常(它已经由tf-yarn安装):

$ check_hadoop_env
# You should see something like
# INFO:tf_yarn.bin.check_hadoop_env:results will be written in /home/.../shared/Dev/tf-yarn/check_hadoop_env.log
# INFO:tf_yarn.bin.check_hadoop_env:check_env: True
# INFO:tf_yarn.bin.check_hadoop_env:write dummy file to hdfs hdfs://root/tmp/a1df7b99-fa47-4a86-b5f3-9bc09019190f/hello_tf_yarn.txt
# INFO:tf_yarn.bin.check_hadoop_env:check_local_hadoop_tensorflow: True
# INFO:root:Launching remote check
# ...
# INFO:tf_yarn.bin.check_hadoop_env:remote_check: True
# INFO:tf_yarn.bin.check_hadoop_env:Hadoop setup: OK

快速启动

tf纱的核心抽象称为实验fn。它是 返回三个估计器和两个spec的函数-- trainspecevalspec

下面是一个精简的实验 示例/linear_classifier_example.py 让您了解它的外观:

fromtf_yarnimportExperimentdefexperiment_fn():# ...estimator=tf.estimator.LinearClassifier(...)returnExperiment(estimator,tf.estimator.TrainSpec(train_input_fn),tf.estimator.EvalSpec(eval_input_fn)

可以使用run_on_yarn函数在纱线上安排实验 接受三个必需的参数:python environment,experiment, 以及一个字典,指定为每个 分布式TensorFlow任务类型。该示例使用葡萄酒质量 来自UCI ML存储库的数据集。只有不到5000个训练实例, 不需要多节点培训,这意味着由 "Evaluator"会处理得很好。注意每个任务都将被执行 在自己的纱线容器中。

fromtf_yarnimportTaskSpec,run_on_yarnfromtf_yarnimportpackagingpyenv_zip_path=packaging.upload_env_to_hdfs()run_on_yarn(pyenv_zip_path,experiment_fn,task_specs={"chief":TaskSpec(memory=2*2**10,vcores=4),"evaluator":TaskSpec(memory=2**10,vcores=1),"tensorboard":TaskSpec(memory=2**10,vcores=1)})

最后一步是将winequality.py模块转发到纱线容器, 为了使任务能够导入它们:

run_on_yarn(...,files={os.path.basename(winequality.__file__):winequality.__file__,})

分布张量流101

下面是对核心分布张量流的简要总结 与培训评估师相关的概念。请参阅 完整版本的官方文档。

分布式tensorflow根据任务进行操作。任务的类型是 在分布式tensorflow集群中定义其用途。"worker"任务 由"主管"领导,工人进行模型培训。另外还有"酋长" 处理检查点、保存/恢复模型等。模型本身是 存储在一个或多个"ps"任务中。这些任务通常不计算 什么都行。他们的唯一目的是为模型的变量服务。最后, "evaluator"任务负责定期评估模型。

集群至少必须有一个"chief"任务。然而,它 最好用"计算器"来补充它,以便运行 与培训同时进行的评估。

+-----------+              +---------+   +----------+   +----------+
| evaluator |        +-----+ chief:0 |   | worker:0 |   | worker:1 |
+-----+-----+        |     +----^----+   +-----^----+   +-----^----+
      ^              |          |            |              |
      |              v          |            |              |
      |        +-----+---+      |            |              |
      |        | model   |   +--v---+        |              |
      +--------+ exports |   | ps:0 <--------+--------------+
               +---------+   +------+

多人培训

多工作群集至少需要一个单参数服务器aka"ps"任务 存储由"chief""worker"任务更新的变量。它是 通常,最好提供1个vCore以允许并发I/O 正在处理。

run_on_yarn(...,task_specs={"chief":TaskSpec(memory=2*2**10,vcores=4),"worker":TaskSpec(memory=2*2**10,vcores=4,instances=8),"ps":TaskSpec(memory=2*2**10,vcores=8),"evaluator":TaskSpec(memory=2**10,vcores=1),"tensorboard":TaskSpec(memory=2**10,vcores=1)})

配置python解释器和包

tf yarn需要将一个独立的虚拟环境发送到容器。

您可以使用packaging模块根据当前安装的虚拟e在hdfs上生成一个包。环境。 (您应该首先从requirements.txt安装依赖项pip install-r requirements.txt) 如果您使用Conda和虚拟环境,则此操作有效。

默认情况下,生成的包是apex包。

pyenv_zip_path,env_name=packaging.upload_env_to_hdfs()run_on_yarn(pyenv_zip_path=pyenv_zip_path)

通过指定您自己的packaging.conda_packer toupload_env_to_hdfs它将使用conda pack创建包。

您还可以直接使用conda pack和pex提供的命令行工具。

对于pex,您可以在根目录下运行此命令来创建包(它包括setup.py中的所有要求)

$ pip install tf-yarn
0

然后,您可以使用生成的包运行tf纱:

$ pip install tf-yarn
1

在GPU上运行

yarn对gpu资源没有一流的支持。一个常见的解决方法是 使用节点标签,其中仅CPU节点未标记,而 GPU有标签。此外,在此设置中,gpu节点是 通常绑定到不同于默认队列的单独队列。

目前,tf yarn假设gpu标签是"gpu"。没有 但是,为了 示例我们将使用名称"ml gpu"

在纱线上运行的默认行为是在仅限cpu的节点上运行。整齐 在GPU上运行:

  1. 设置队列参数。
  2. 将相关任务类型的taskspec.label设置为nodelabel.gpu。 一个好的经验法则是运行compute heavy"chief""worker" 在GPU上执行任务,同时将"ps""evaluator"保留在CPU上。
  3. 生成两个python环境:一个为cpu生成tensorflow,另一个为cpu生成tensorflow 对于GPU使用TensorFlow。参数附加的_包和忽略的_包 只有PEX数据包才支持上载环境到HDF的
$ pip install tf-yarn
2

访问hdfs时,请同时访问联合会federation

skein底层库 对于启用安全性的群集上的fs.defaultfs。这对大多数人来说应该足够了 用例。但是,如果实验需要访问除 默认情况下,必须在文件系统参数中显式列出它们 要在纱线上运行。这将指示skein获取 除了fs.defaultfs之外,还有这些名称节点:

$ pip install tf-yarn
3

根据集群配置,可能需要将libhdfs指向 不同的配置文件夹。例如:

$ pip install tf-yarn
4

张力板

你可以使用tf纱张力板。 使用默认任务规格时,将自动生成TensorBoard。因此在纱线上作为一个独立的容器运行。 如果使用自定义任务规格,则必须在配置中显式添加一个tensorboard任务。

$ pip install tf-yarn
5

实例和终止超时秒都是可选参数。

  • 实例:控制要生成的tensorboard实例的数量。默认为1
  • 终止超时秒:控制每个tensorboard实例在运行结束后必须保持活动状态的秒数。默认为30秒

以"tensorboard is listening at…"开头的每个tensorboard实例的完全访问url被通告为一个url事件。 通常,您会看到它出现在run_on_yarn调用的标准输出中。

< h3>环境变量

以下可选环境变量可以传递给tensorboard任务:

  • tf_board_model_dir:配置模型目录。请注意,如果指定了实验模型dir,则具有更高的优先级。默认值:无
  • tf_board_extra_args:将命令行参数附加到强制参数(--logdir和--port):默认值:none

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从同步请求中获取响应代码   具有深度复制的类中的Java oop getter/setter   java LDAP“简单”用户身份验证(JNDI Tomcat)不稳定?   java将Jenkins jnlp代理设置为通过API以编程方式使用WebSocket   java如何获取在servlet筛选器的静态块中启动的静态类的实例?   前两个数字的java charAt循环不能循环它   java在Spring引导执行器中是否有检查子服务运行状况的标准方法?   java我可以将jacksonmapped@JsonProperties推到“顶层”吗?   json JAVA:opencsv随机读取CSV单元格   无第三方应用程序的java捆绑包JRE   使用openidConnectClient功能的WAS Liberty中出现java无效cookie标头错误   java如何在Restful Web服务中从Http Post获取数组?   java如何读取安卓开发的JSON url?   如何在java IO中打开包含汉字的文件?