在訓(xùn)練計(jì)算機(jī)視覺機(jī)器學(xué)習(xí)模型時(shí),數(shù)據(jù)加載是一種常見的性能瓶頸,可能導(dǎo)致 GPU 或 TPU 資源在等待數(shù)據(jù)加載到模型時(shí)得不到充分利用。以高效 TensorFlow Record (TFRecord)格式存儲(chǔ)數(shù)據(jù)集是解決這些問題的好方法,只不過,創(chuàng)建 TFRecords 往往需要大量的復(fù)雜代碼。
TensorFlow Record
https://tensorflow.google.cn/tutorials/load_data/tfrecord
我們上周開源了 TensorFlow Recorder 項(xiàng)目(也就是 TFRecorder),如此一來,數(shù)據(jù)科學(xué)家、數(shù)據(jù)工程師或 AI/ML 工程師只需幾行代碼即可創(chuàng)建基于圖像的 TFRecords。使用 TFRecords 對(duì)于創(chuàng)建高效 TensorFlow ML 流水線非常重要,而過去的創(chuàng)建方法非常繁瑣。在 TFRecorder 之前,要大規(guī)模創(chuàng)建 TFRecords,必須編寫一個(gè)數(shù)據(jù)流水線來解析結(jié)構(gòu)化數(shù)據(jù),從存儲(chǔ)中加載圖像并將結(jié)果序列化為 TFRecord 格式。TFRecorder 允許您直接從 Pandas dataframe 或 CSV 寫入 TFRecords,無需編寫任何復(fù)雜的代碼。
TensorFlow Recorder
https://github.com/google/tensorflow-recorder
以下是 TFRecoder 的示例,但我們先談?wù)?TFRecords 的一些特定優(yōu)勢(shì)。
TFRecords 如何提供幫助
TFRecord 文件格式可以將數(shù)據(jù)存儲(chǔ)在文件集中,每個(gè)文件都包含序列化為二進(jìn)制記錄的 Protocol Buffers 序列,可以非常高效地讀取,有助于減少上述數(shù)據(jù)加載瓶頸。
Protocol Buffers
https://developers.google.com/protocol-buffers/
在使用 TFRecord 格式的同時(shí)實(shí)現(xiàn)預(yù)提取和并行交錯(cuò),可以進(jìn)一步提高數(shù)據(jù)加載性能。當(dāng)模型在當(dāng)前步驟上執(zhí)行訓(xùn)練時(shí),使用 prefetch 可以提前獲取下一個(gè)訓(xùn)練步驟的數(shù)據(jù),從而縮短每個(gè)模型訓(xùn)練步驟的時(shí)間,Parallel interleave 允許您讀取多個(gè) TFRecords 分片(TFRecord 文件的一部分),并對(duì)這些交錯(cuò)的數(shù)據(jù)流進(jìn)行預(yù)處理。這能夠減少讀取訓(xùn)練批次所需的延遲,特別適用于從網(wǎng)絡(luò)讀取數(shù)據(jù)。
預(yù)提取和并行交錯(cuò)
https://tensorflow.google.cn/guide/data_performance
使用 TensorFlow Recorder
使用 TFRecorder 只需幾行代碼即可創(chuàng)建 TFRecord。工作原理如下。
import pandas as pd import tfrecorder df = pd.read_csv(...) df.tensorflow.to_tfrecord(output_dir="gs://my/bucket")
TFRecorder 目前預(yù)期數(shù)據(jù)與 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 可以是將被整數(shù)化的基于文本的標(biāo)簽,也可以是一個(gè)整數(shù)
將來,我們希望進(jìn)一步擴(kuò)展 TensorFlow Recorder,支持所有格式的數(shù)據(jù)。
這個(gè)示例雖然能夠?qū)⑸锨€(gè)圖像順利轉(zhuǎn)換成 TFRecords,但擴(kuò)展到百萬計(jì)的圖像可能就難以處理。為了擴(kuò)展到龐大的數(shù)據(jù)集,TensorFlow Recorder 提供了與 Google Cloud Dataflow 的連接,后者是一款無服務(wù)器 Apache Beam 流水線運(yùn)行器。擴(kuò)展到 DataFlow 僅需要多一點(diǎn)配置。
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)
未來計(jì)劃
我們希望您愿意嘗試 TensorFlow Recorder。您可以從 GitHub 獲取,或者直接 pip 安裝 tfrecorder。
TensorFlow Recorder 剛剛面世,我們非常期待您的反饋、建議和 Pull Requests。
原文標(biāo)題:創(chuàng)建 TFRecords 的救星 — TensorFlow Recorder 現(xiàn)已開源!
文章出處:【微信公眾號(hào):TensorFlow】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
gpu
+關(guān)注
關(guān)注
27文章
4591瀏覽量
128146 -
DPU
+關(guān)注
關(guān)注
0文章
343瀏覽量
24044 -
計(jì)算機(jī)視覺
+關(guān)注
關(guān)注
8文章
1685瀏覽量
45811 -
Record
+關(guān)注
關(guān)注
0文章
4瀏覽量
6634
原文標(biāo)題:創(chuàng)建 TFRecords 的救星 — TensorFlow Recorder 現(xiàn)已開源!
文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論