纱线团簇上的分布张量流
tf-yarn的Python项目详细描述
tf纱_
安装
使用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安装): tf纱的核心抽象称为 下面是一个精简的 可以使用 最后一步是将 下面是对核心分布张量流的简要总结
与培训评估师相关的概念。请参阅
完整版本的官方文档。 分布式tensorflow根据任务进行操作。任务的类型是
在分布式tensorflow集群中定义其用途。 集群至少必须有一个 多工作群集至少需要一个单参数服务器aka tf yarn需要将一个独立的虚拟环境发送到容器。 您可以使用packaging模块根据当前安装的虚拟e在hdfs上生成一个包。环境。
(您应该首先从 默认情况下,生成的包是apex包。 通过指定您自己的packaging.conda_packer to 您还可以直接使用conda pack和pex提供的命令行工具。
对于pex,您可以在根目录下运行此命令来创建包(它包括setup.py中的所有要求) 然后,您可以使用生成的包运行tf纱: yarn对gpu资源没有一流的支持。一个常见的解决方法是
使用节点标签,其中仅CPU节点未标记,而
GPU有标签。此外,在此设置中,gpu节点是
通常绑定到不同于默认队列的单独队列。 目前,tf yarn假设gpu标签是 根据集群配置,可能需要将libhdfs指向
不同的配置文件夹。例如: 你可以使用tf纱张力板。
使用默认任务规格时,将自动生成TensorBoard。因此在纱线上作为一个独立的容器运行。
如果使用自定义任务规格,则必须在配置中显式添加一个tensorboard任务。 实例和终止超时秒都是可选参数。 以"tensorboard is listening at…"开头的每个tensorboard实例的完全访问url被通告为一个url事件。
通常,您会看到它出现在run_on_yarn调用的标准输出中。 以下可选环境变量可以传递给tensorboard任务:$ 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
快速启动
实验fn
。它是
返回三个估计器和两个spec的函数--
trainspec
和evalspec
实验
示例/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
"worker"
任务
由"主管"领导,工人进行模型培训。另外还有"酋长"
处理检查点、保存/恢复模型等。模型本身是
存储在一个或多个"ps"
任务中。这些任务通常不计算
什么都行。他们的唯一目的是为模型的变量服务。最后,
"evaluator"
任务负责定期评估模型。"chief"
任务。然而,它
最好用"计算器"来补充它,以便运行
与培训同时进行的评估。+-----------+ +---------+ +----------+ +----------+
| evaluator | +-----+ chief:0 | | worker:0 | | worker:1 |
+-----+-----+ | +----^----+ +-----^----+ +-----^----+
^ | | | |
| v | | |
| +-----+---+ | | |
| | model | +--v---+ | |
+--------+ exports | | ps:0 <--------+--------------+
+---------+ +------+
多人培训
"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解释器和包
requirements.txt
安装依赖项pip install-r requirements.txt
)
如果您使用Conda和虚拟环境,则此操作有效。pyenv_zip_path,env_name=packaging.upload_env_to_hdfs()run_on_yarn(pyenv_zip_path=pyenv_zip_path)
upload_env_to_hdfs
它将使用conda pack创建包。$ pip install tf-yarn
0
$ pip install tf-yarn
1
在GPU上运行
"gpu"
。没有
但是,为了
示例我们将使用名称"ml gpu"
在纱线上运行的默认行为是在仅限cpu的节点上运行。整齐
在GPU上运行:
队列
参数。
taskspec.label
设置为nodelabel.gpu
。
一个好的经验法则是运行compute heavy"chief"
和"worker"
在GPU上执行任务,同时将"ps"
和"evaluator"
保留在CPU上。$ pip install tf-yarn
2
访问hdfs时,请同时访问联合会
skein
底层库
对于启用安全性的群集上的fs.defaultfs
。这对大多数人来说应该足够了
用例。但是,如果实验需要访问除
默认情况下,必须在文件系统
参数中显式列出它们
要在纱线上运行。这将指示skein
获取
除了fs.defaultfs之外,还有这些名称节点:
$ pip install tf-yarn
3
$ pip install tf-yarn
4
张力板
$ pip install tf-yarn
5
推荐PyPI第三方库