Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
D_ACMER
apachecn-dl-zh
提交
b075e660
A
apachecn-dl-zh
项目概览
D_ACMER
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apachecn-dl-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b075e660
编写于
8月 31, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-08-31 22:30:35
上级
a9d05cd1
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
41 addition
and
38 deletion
+41
-38
docs/tf-1x-dl-cookbook/11.md
docs/tf-1x-dl-cookbook/11.md
+23
-23
docs/tf-1x-dl-cookbook/12.md
docs/tf-1x-dl-cookbook/12.md
+18
-15
未找到文件。
docs/tf-1x-dl-cookbook/11.md
浏览文件 @
b075e660
此差异已折叠。
点击以展开。
docs/tf-1x-dl-cookbook/12.md
浏览文件 @
b075e660
# 十二、分布式 TensorFlow 和云深度学习
在本章中,我们将讨论使用分布式 TensorFlow 和
Cloud
深度学习。 我们将为您提供一些食谱:
在本章中,我们将讨论使用分布式 TensorFlow 和
云
深度学习。 我们将为您提供一些食谱:
*
使用 TensorFlow 和 GPU
*
使用分布式 TensorFlow:多个 GPU 和一个 CPU
...
...
@@ -197,7 +197,7 @@ with tf.Session() as sess:
我们按以下步骤进行:
1.
考虑这段代码,在此我们指定集群体系结构,其中一个主服务器运行在
192.168.1.1:1111 上,两个工作服务器分别运行在 192.168.1.2:1111 和 192.168.1.3:1111
上。
1.
考虑这段代码,在此我们指定集群体系结构,其中一个主服务器运行在
`192.168.1.1:1111`
上,两个工作服务器分别运行在
`192.168.1.2:1111`
和
`192.168.1.3:1111`
上。
```
py
import
sys
...
...
@@ -210,7 +210,7 @@ cluster = tf.train.ClusterSpec({'ps': ['192.168.1.1:1111'],
})
```
2.
请注意,代码是在多台机器上复制的,因此了解当前执行节点的作用很重要。 我们从命令行获得此信息。 机器可以是工作程序,也可以是参数服务器(
ps
)。
2.
请注意,代码是在多台机器上复制的,因此了解当前执行节点的作用很重要。 我们从命令行获得此信息。 机器可以是工作程序,也可以是参数服务器(
`ps`
)。
```
py
# parse command-line to specify machine
...
...
@@ -219,7 +219,7 @@ task_idx = sys.argv[2] # index job in the worker or ps list
# as defined in the ClusterSpec
```
3.
在给定群集的情况下运行训练服务器,我们为每个计算赋予一个角色(工作者或
ps
)和一个 ID。
3.
在给定群集的情况下运行训练服务器,我们为每个计算赋予一个角色(工作者或
`ps`
)和一个 ID。
```
py
# create TensorFlow Server. This is how the machines communicate.
...
...
@@ -305,7 +305,7 @@ from tensorflow.examples.tutorials.mnist import input_data
mnist
=
input_data
.
read_data_sets
(
'MNIST_data'
,
one_hot
=
True
)
```
3.
检查您的角色是
Parameter Server 还是 Worker
。 如果工人随后定义了一个简单的密集神经网络,则定义一个优化器以及用于评估分类器的度量(例如准确性)。
3.
检查您的角色是
参数服务器还是工作器
。 如果工人随后定义了一个简单的密集神经网络,则定义一个优化器以及用于评估分类器的度量(例如准确性)。
```
py
if
FLAGS
.
job_name
==
"ps"
:
...
...
@@ -448,7 +448,7 @@ cd ..
bazel
test
tensorflow_serving
/
...
```
5.
现在,让我们看一个保存模型的示例,以便服务器可以保存它。 此步骤的灵感来自
[
用于构建 MNIST 训练器和服务模型的示例
](
https://github.com/tensorflow/serving/blob/master/tensorflow_serving/example/mnist_saved_model.py
)
。 第一步是将构建器导入为
saved_model_builder
。 然后,大部分工作由
`SavedModelBuilder()`
完成,该工作将已训练模型的
*快照*
保存到可靠的存储中。 请注意,此处
`export_path`
是
`/tmp/mnist_model/`
5.
现在,让我们看一个保存模型的示例,以便服务器可以保存它。 此步骤的灵感来自
[
用于构建 MNIST 训练器和服务模型的示例
](
https://github.com/tensorflow/serving/blob/master/tensorflow_serving/example/mnist_saved_model.py
)
。 第一步是将构建器导入为
`saved_model_builder`
。 然后,大部分工作由
`SavedModelBuilder()`
完成,该工作将已训练模型的
*快照*
保存到可靠的存储中。 请注意,此处
`export_path`
是
`/tmp/mnist_model/`
```
py
from
tensorflow.python.saved_model
import
builder
as
saved_model_builder
...
...
@@ -548,7 +548,7 @@ gsutil cp /tmp/data/train.tfrecords gs://${BUCKET}/data/
gsutil
cp
/
tmp
/
data
/
test
.
tfrecords
gs
:
//
$
{
BUCKET
}
/
data
/
```
7.
现在,我们将创建多个工作程序(
worker-0,worker-1
),它们是初始模板实例计算机的克隆。 我们不希望计算机在关闭时删除磁盘,因此这就是我们拥有第一个命令的原因。
7.
现在,我们将创建多个工作程序(
`worker-0`
,
`worker-1`
),它们是初始模板实例计算机的克隆。 我们不希望计算机在关闭时删除磁盘,因此这就是我们拥有第一个命令的原因。
```
py
gcloud
compute
instances
set
-
disk
-
auto
-
delete
template
-
instance
\
...
...
@@ -607,7 +607,7 @@ gsutil cp /tmp/data/train.tfrecords gs://${BUCKET}/data/
gsutil
cp
/
tmp
/
data
/
test
.
tfrecords
gs
:
//
$
{
BUCKET
}
/
data
/
```
3.
提交训练工作非常简单:我们可以使用 CloudML 引擎简单地调用训练步骤。 在此示例中,训练人员代码在
us-central1
区域中运行 1000 次迭代。 输入数据是从存储桶中提取的,而输出桶将被提交到其他存储桶中。
3.
提交训练工作非常简单:我们可以使用 CloudML 引擎简单地调用训练步骤。 在此示例中,训练人员代码在
`us-central1`
区域中运行 1000 次迭代。 输入数据是从存储桶中提取的,而输出桶将被提交到其他存储桶中。
```
py
JOB_NAME
=
"job_$(date +%Y%m%d_%H%M%S)"
...
...
@@ -640,7 +640,7 @@ ${VERSION_NAME}
gcloud
ml
-
engine
versions
set
-
default
--
model
$
{
MODEL_NAME
}
$
{
VERSION_NAME
}
```
6.
在线提供模型后,便可以访问服务器并做出预测。 通过使用脚本
`make_request.py`
创建
request.json
,该脚本从 MNIST 读取数据,执行一次热编码,然后使用格式正确的 json 模式编写功能。
6.
在线提供模型后,便可以访问服务器并做出预测。 通过使用脚本
`make_request.py`
创建
`request.json`
,该脚本从 MNIST 读取数据,执行一次热编码,然后使用格式正确的 json 模式编写功能。
```
py
gcloud
ml
-
engine
predict
--
model
$
{
MODEL_NAME
}
--
json
-
instances
request
.
json
...
...
@@ -660,7 +660,7 @@ Microsoft Azure 提供了一项名为 Batch AI 的服务,该服务使我们能
# 做好准备
第一步,我们需要一个 Azure 帐户:如果您还没有 Azure 帐户,则可以
[
在此处免费创建一个帐户
](
https://azure.microsoft.com/en-us/services/batch-ai/
)
。 Azure 向新用户提供为期 30 天的
$ 200
信用额度。 此食谱将遵循 Microsoft Azure 提供的示例,以使用 TensorFlow 分布式在两个 GPU 上运行 MNIST,相关代码可
[
在 Github 上获得
](
https://github.com/Azure/batch-shipyard/tree/master/recipes/TensorFlow-Distributed
)
第一步,我们需要一个 Azure 帐户:如果您还没有 Azure 帐户,则可以
[
在此处免费创建一个帐户
](
https://azure.microsoft.com/en-us/services/batch-ai/
)
。 Azure 向新用户提供为期 30 天的
200 美元
信用额度。 此食谱将遵循 Microsoft Azure 提供的示例,以使用 TensorFlow 分布式在两个 GPU 上运行 MNIST,相关代码可
[
在 Github 上获得
](
https://github.com/Azure/batch-shipyard/tree/master/recipes/TensorFlow-Distributed
)
# 怎么做...
...
...
@@ -718,7 +718,7 @@ az batchai cluster create -n nc6 -i UbuntuDSVM -s Standard_NC6 --min 2 --max 2 -
az
batchai
cluster
create
-
n
nc6
-
i
UbuntuDSVM
-
s
Standard_NC6
--
min
2
--
max
2
--
afs
-
name
batchaisample
--
afs
-
mount
-
path
external
-
u
<
user_name
>
-
p
<
password
>
```
9.
下一步是在
job.json
文件中创建作业创建参数:
9.
下一步是在
`job.json`
文件中创建作业创建参数:
```
py
{
...
...
@@ -772,7 +772,7 @@ az batchai job stream-file --job-name myjob --output-directory-id stdouterr --na
# 还有更多...
上面我们学习了如何使用 Azure 命令行工具将 Microsoft Azure Batch AI 用于分布式 TensorFlow。 我们也可以使用 Jupyter
Notebook
做同样的事情。 这将涉及设置 Azure Active Directory 并进行新的 App 注册。
[
可以在以下链接上获得详细信息
](
https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal
)
。
上面我们学习了如何使用 Azure 命令行工具将 Microsoft Azure Batch AI 用于分布式 TensorFlow。 我们也可以使用 Jupyter
笔记本
做同样的事情。 这将涉及设置 Azure Active Directory 并进行新的 App 注册。
[
可以在以下链接上获得详细信息
](
https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal
)
。
Azure BatchAI 也可以与其他 AI 深度学习库一起使用,我们建议您仔细阅读 BatchAI Github
[
以获取更多详细信息
](
https://github.com/Azure/BatchAI
)
。
...
...
@@ -794,7 +794,7 @@ GPU 仅在 P2 实例创建中可用,并且默认情况下不可用,要获得
现在您已经可以使用 AWS 账户和 p2.xlarge 实例,现在就可以从 EC2 仪表板创建自己的实例了。 第一步是选择机器映像,到目前为止,Amazon 提供了预装有深度学习库的特殊机器映像,您可以选择 Ubuntu 或 Linux 版本。 接下来,选择 GPU 以计算实例类型。
您可以使用默认参数查看并启动实例,也可以配置设置,选择存储并配置安全组。 配置安全组很重要,默认情况下已设置 SSH 安全组,但是如果要使用 Jupyter
Notebook
,则需要为端口 8888 添加自定义安全组,可以选择从中登录的源。 对于实例,有三种可能性:“自定义”,“随处可见”或“我的 IP”:
您可以使用默认参数查看并启动实例,也可以配置设置,选择存储并配置安全组。 配置安全组很重要,默认情况下已设置 SSH 安全组,但是如果要使用 Jupyter
笔记本
,则需要为端口 8888 添加自定义安全组,可以选择从中登录的源。 对于实例,有三种可能性:“自定义”,“随处可见”或“我的 IP”:
![](
img/10716413-09c1-49c7-9c5c-207de1610b48.png
)
...
...
@@ -802,7 +802,7 @@ GPU 仅在 P2 实例创建中可用,并且默认情况下不可用,要获得
# 怎么做...
1.
第一步是连接到实例,您可以使用命令行通过
ssh
或浏览器来实现。 我们使用 CLI。
1.
第一步是连接到实例,您可以使用命令行通过
SSH
或浏览器来实现。 我们使用 CLI。
2.
要进行连接,首先更改
`.pem`
文件的模式。
...
...
@@ -833,7 +833,10 @@ ssh -i " <security-keypair-filename>.pem" ubuntu@ec2-XXXXXXXXXXXXX.compute-1.ama
AWS 市场上提供了带有预配置库和 API 的大量 Docker 映像和机器映像。 要启动 jupyter 笔记本,请在命令行中使用
`<jupyter notebook --ip=0.0.0.0 --no-browser>`
。 这将导致输出,如下所示:
首次连接以使用令牌登录时,将此 URL 复制/粘贴到浏览器中:
http://0.0.0.0:8888 /?token = 3156e ...
```
py
http
:
//
0.0
.
0.0
:
8888
/
?
token
=
3156
e
...
```
您将 URL 复制并粘贴到浏览器中,就可以开始使用了。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录