在訓練計算機視覺機器學習模型時,數據加載是一種常見的性能瓶頸,可能導致 GPU 或 TPU 資源在等待數據加載到模型時得不到充分利用。以高效 TensorFlow Record (TFRecord)格式存儲數據集是解決這些問題的好方法,只不過,創建 TFRecords 往往需要大量的復雜代碼。
TensorFlow Record
https://tensorflow.google.cn/tutorials/load_data/tfrecord
我們上周開源了 TensorFlow Recorder 項目(也就是 TFRecorder),如此一來,數據科學家、數據工程師或 AI/ML 工程師只需幾行代碼即可創建基于圖像的 TFRecords。使用 TFRecords 對于創建高效 TensorFlow ML 流水線非常重要,而過去的創建方法非常繁瑣。在 TFRecorder 之前,要大規模創建 TFRecords,必須編寫一個數據流水線來解析結構化數據,從存儲中加載圖像并將結果序列化為 TFRecord 格式。TFRecorder 允許您直接從 Pandas dataframe 或 CSV 寫入 TFRecords,無需編寫任何復雜的代碼。
TensorFlow Recorder
https://github.com/google/tensorflow-recorder
以下是 TFRecoder 的示例,但我們先談談 TFRecords 的一些特定優勢。
TFRecords 如何提供幫助
TFRecord 文件格式可以將數據存儲在文件集中,每個文件都包含序列化為二進制記錄的 Protocol Buffers 序列,可以非常高效地讀取,有助于減少上述數據加載瓶頸。
Protocol Buffers
https://developers.google.com/protocol-buffers/
在使用 TFRecord 格式的同時實現預提取和并行交錯,可以進一步提高數據加載性能。當模型在當前步驟上執行訓練時,使用 prefetch 可以提前獲取下一個訓練步驟的數據,從而縮短每個模型訓練步驟的時間,Parallel interleave 允許您讀取多個 TFRecords 分片(TFRecord 文件的一部分),并對這些交錯的數據流進行預處理。這能夠減少讀取訓練批次所需的延遲,特別適用于從網絡讀取數據。
預提取和并行交錯
https://tensorflow.google.cn/guide/data_performance
使用 TensorFlow Recorder
使用 TFRecorder 只需幾行代碼即可創建 TFRecord。工作原理如下。
import pandas as pd import tfrecorder df = pd.read_csv(...) df.tensorflow.to_tfrecord(output_dir="gs://my/bucket")
TFRecorder 目前預期數據與 Google AutoML Vision 格式相同。
AutoML Vision
https://cloud.google.com/vision/automl/docs/prepare
這種格式與 Pandas dataframe 或 CSV 格式類似:
split | image_uri | label |
---|---|---|
TRAIN | gs://my/bucket/image1.jpg | cat |
其中:
split 可以取值 TRAIN、VALIDATION 和 TEST
image_uri 指定圖像文件的本地或 Google Cloud Storage 位置。
label 可以是將被整數化的基于文本的標簽,也可以是一個整數
將來,我們希望進一步擴展 TensorFlow Recorder,支持所有格式的數據。
這個示例雖然能夠將上千個圖像順利轉換成 TFRecords,但擴展到百萬計的圖像可能就難以處理。為了擴展到龐大的數據集,TensorFlow Recorder 提供了與 Google Cloud Dataflow 的連接,后者是一款無服務器 Apache Beam 流水線運行器。擴展到 DataFlow 僅需要多一點配置。
Google Cloud Dataflow
https://cloud.google.com/dataflow
Apache Beam
https://beam.apache.org/
df.tensorflow.to_tfrecord( output_dir="gs://my/bucket", runner="DataFlowRunner", project="my-project", region="us-central1)
未來計劃
我們希望您愿意嘗試 TensorFlow Recorder。您可以從 GitHub 獲取,或者直接 pip 安裝 tfrecorder。
TensorFlow Recorder 剛剛面世,我們非常期待您的反饋、建議和 Pull Requests。
原文標題:創建 TFRecords 的救星 — TensorFlow Recorder 現已開源!
文章出處:【微信公眾號:TensorFlow】歡迎添加關注!文章轉載請注明出處。
-
gpu
+關注
關注
28文章
4743瀏覽量
129006 -
DPU
+關注
關注
0文章
364瀏覽量
24205 -
計算機視覺
+關注
關注
8文章
1698瀏覽量
46022 -
Record
+關注
關注
0文章
4瀏覽量
6666
原文標題:創建 TFRecords 的救星 — TensorFlow Recorder 現已開源!
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論