咨询:如何在分布式TensorFlow中运行MNIST线性分类模型
如何运行分布式TensorFlow MNIST分类模型
咱们一步步来搞定这个分布式模型的运行,其实核心就是把各个节点按顺序启动起来就行,我给你拆解清楚:
1. 先确认基础准备
- 确保你已经安装了和代码依赖匹配的TensorFlow版本
- 把
dist_minst_softmax.py文件放在当前工作目录下,方便终端直接调用
2. 补全并理解命令参数
你给出的命令后面截断了,完整的worker_hosts应该是类似localhost:2224,localhost:2225这样的格式。这里的参数分别是:
--ps_hosts: 指定参数服务器(Parameter Server)的地址列表,这里用了本地的2222、2223两个端口--worker_hosts: 指定工作节点(Worker)的地址列表,对应本地的2224、2225两个端口
3. 分终端启动各个节点
分布式TensorFlow需要分别启动每个角色的节点,一定要先启动参数服务器,再启动工作节点,不然worker会因连不上ps报错。你需要打开4个终端窗口(每个节点对应一个):
启动参数服务器(PS)节点
- 第一个终端(PS 0):
python dist_minst_softmax.py --ps_hosts=localhost:2222,localhost:2223 --worker_hosts=localhost:2224,localhost:2225 --job_name=ps --task_index=0 - 第二个终端(PS 1):
python dist_minst_softmax.py --ps_hosts=localhost:2222,localhost:2223 --worker_hosts=localhost:2224,localhost:2225 --job_name=ps --task_index=1
启动工作节点(Worker)
- 第三个终端(Worker 0):
python dist_minst_softmax.py --ps_hosts=localhost:2222,localhost:2223 --worker_hosts=localhost:2224,localhost:2225 --job_name=worker --task_index=0 - 第四个终端(Worker 1):
python dist_minst_softmax.py --ps_hosts=localhost:2222,localhost:2223 --worker_hosts=localhost:2224,localhost:2225 --job_name=worker --task_index=1
4. 关键参数解释
新增的两个参数是核心:
--job_name: 告诉脚本当前节点是参数服务器(ps)还是工作节点(worker)--task_index: 标记当前节点在同角色节点中的序号,从0开始计数
5. 注意事项
- 如果提示端口被占用,直接把所有端口换成其他未被使用的(比如3332、3333、3334、3335)就行
- 如果是在多台机器上运行,把
localhost换成对应机器的IP地址,同时要确保机器之间网络互通,端口没有被防火墙拦截 - 启动后,worker节点会输出训练日志(比如损失值、准确率),等训练结束就完成啦
内容的提问来源于stack exchange,提问作者John Kleve
相关产品推荐
相关产品推荐

