http://c.biancheng.net/view/2004.html
本節以分布式方式訓練完整的 MNIST 分類器。
該案例受到下面博客文章的啟發:http://ischlag.github.io/2016/06/12/async-distributed-tensorflow/,運行在 TensorFlow 1.2 上的代碼可以在網址https://github.com/ischlag/distributed-tensorflow-example上找到。
注意,這個案例基於上一節,所以按順序閱讀可能會很方便。
具體做法
- 導入一些標准模塊並定義運行計算的 TensorFlow 集群,然后為指定任務啟動服務:
- 讀取 MNIST 數據並定義用於訓練的超參數:
- 檢查角色是參數服務器還是 worker,如果是 worker 就定義一個簡單的稠密神經網絡,定義一個優化器以及用於評估分類器的度量(例如精確度):
- 啟動一個監督器作為分布式設置的主機,主機是管理集群其余部分的機器。會話由主機維護,關鍵指令是 sv=tf.train.Supervisor(is_chief=(FLAGS.task_index==0))。另外,通過 prepare_or_wait_for_session(server.target),監督器將等待模型投入使用。請注意,每個 worker 將處理不同的批量模型,然后將最終的模型提供給主機:
這個案例描述了一個分布式 MNIST 分類器的示例,在這個例子中,TensorFlow 允許定義一個三台機器的集群,一個用作參數服務器,另外兩個用作獨立批量訓練數據的 worker。