Google開源了深度學習框架TensorFlow相關專案TFRecorder,TFRecorder讓用戶利用幾行程式碼,就能夠創建基於圖像的TFRecords格式資料,以解決因資料載入瓶頸,所導致機器學習效能低落的問題。

在訓練機器學習模型的時候,資料載入有時候會成為效能瓶頸,這是由於GPU或TPU加速器運算速度很快,但將資料載入到模型的速度相對較慢,因此造成GPU或TPU需要等待資料的狀況,而使得運算資源利用率不足。

要解決資料載入瓶頸的方法之一,便是使用TFRecord檔案格式將資料儲存成為檔案集,每個檔案集包含了被序列化為二進位紀錄的Protocol Buffer序列,能夠被有效率地讀取。TFRecord格式透過預擷取的方式提高資料載入效能,也就是說,當模型正在執行訓練的時候,下一階段要用到的訓練資料,就已經先開始載入,這樣平行交錯的方式,系統可以同時讀取多個TFRecord分片,並且對這些資料串流進行預處理,以減少讀取訓練批次的延遲,對於需要透過網路讀取資料的情境特別有用。

Google提到,雖然使用TFRecord格式能夠解決資料載入瓶頸問題,但是要產生TFRecord需要複雜的程序。過去,開發者為了要產生大量的TFRecord資料,需要編寫資料工作管線,以解析結構化資料,並從儲存裝置載入圖像,最終還要序列化結果為TFRecord格式,為此,Google開源釋出了TFRecorder來簡化格式轉換,讓用戶能夠將資料從Pandas資料框架或是CSV格式,簡單地產出TFRecord格式資料。

TFRecorder目前還是有一些限制,TFRecorder可用格式有限,Google提到,他們之後希望可以擴展TFRecorder支援的格式。另外,TFRecorder有規模限制,雖然可以簡單地處理數千張圖像,但是要處理數百萬張圖像又是另一回事,為了解決規模問題,TFRecorder可以連接到Google雲端的Apache Beam服務Dataflow,以處理大量圖像應用。


熱門新聞

Advertisement