TensorBoard源碼的小改動讓你的模型性能調優如絲般順滑

       利用Tensorflow進行訓練時,訓練性能是用戶經常 關心 的問題,訓練速度慢 導致模型迭代慢工作效率低。尤其在一些在線訓練場景會導致數據堆積,模型跟不上數據變化。解決性能問題的關鍵是快速定位到算法中的性能瓶頸 。在Tensorflow中提供了默認 的性能指標收集機制FULL_TRACE。
       FULL_TRACE可以幫助用戶查看訓練全過程耗時指標。但是使用時需要用戶在運行之前在Session RunOption中加入運行配置項 ,然後將運行過程中收集的指標信息保存到文件中,使用 chrome查看性能圖。僞代碼如下


       這種實現方法使用很不方便,尤其在分佈式訓練時,用戶需要 修改代碼,重新提交任務導出文件到本地,步驟繁瑣 。其實在 TensorBoard中集成了性能文件展示功能,只是官方暫未開放,因此只要對TensorBoard源碼稍作修改即可實現性能指標收集與 TensorBoard展示無縫對接。實現功能如下:

  1. 提供配置化生成trace文件功能
  2. 打通TensorBoard 展示 trace文件的通道。

      Trace文件生成配置化的實現很簡單,只需在框架層面實現一個自定義的Hook根據用戶配置的策略(可以是定期策略)在Session運行之前將 RunOption 修改,在Session Run 結束之後將收集到的指標信息生成到指定目錄即可。TensorBoard默認的目錄結構 在 TB 源碼的註釋中可以 查看, 如下圖所示:


       TensorBoard在啓動時,如果發現 plugins/profile中存在Trace文件,則會嘗試解析,但是TensorBoard期望Trace文件是PB序列化格式。但是實際保存過程中我們常常採用的是裸字節流的形式(如上代碼所示)。因此需要將TensorBoard源代碼中PB解析的邏輯去除(見TensorBoard源碼profile_plugin.py中的process_raw_trace函數 。

       這種小的改造工作能給算法開發人員帶來較大幫助,提高排查性能問題效率,在實際生產中能夠取得很好的收益。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章