簡化數據轉換從Apache火花TensorFlow PyTorch
Petastorm從乳房是一個流行的開源庫,使單台機器或分布式訓練和評估深度學習模型的數據集在Apache鑲花的格式。我們興奮地宣布Petastorm 0.9.0支持簡單的轉換的數據來自Apache火花DataFrame TensorFlow數據集和PyTorch DataLoader。新的火花數據轉換器API更容易對大規模數據進行分布式模型訓練和推理,從多個數據源。引發數據轉換器API被孟Xiangrui貢獻,魏晨,和張亮(磚),會同Yevgeni Litvin和特拉維斯Addair(超級)。
為什麼數據轉換為深度學習難嗎?
一個關鍵步驟在任何深度學習管道的輸入格式將數據轉換為DL框架。Apache火花是最受歡迎的大數據框架。數據轉換過程從Apache引發深度學習框架可以是乏味的。例如,將一個Apache火花DataFrame特性列和一個標簽列TensorFlow數據集文件格式,用戶需要保存Apache火花DataFrame鑲花的一個分布式文件係統格式和負載轉換後的數據與第三方工具如Petastorm,或者直接將其保存在TFRecord文件使用TFRecordDataset spark-tensorflow-connector和加載它。這兩種方法將超過20行代碼管理的中間數據文件,依賴於不同的解析語法,需要額外的關注來處理火花DataFrames中的列。這些工程摩擦阻礙數據科學家的工作效率。
解決方案一眼就
磚貢獻了一個新的火花數據轉換器APIPetastorm簡化這些枯燥的數據轉換過程步驟。使用新的API,需要幾行代碼引發DataFrame轉換為TensorFlow數據集或者一個PyTorch DataLoader使用默認參數。
從petastorm.spark進口SparkDatasetConverter, make_spark_converter#指定緩存目錄spark.conf。集(SparkDatasetConverter.PARENT_CACHE_DIR_URL_CONF'文件:/ / / dbfs / tmp /…”)
df = spark.read……轉換器= make_spark_converter (df)#創建轉換器與converter.make_tf_dataset ()作為數據集:#皈依TensorFlow數據集#培訓或推理代碼與數據集…與converter.make_torch_dataloader ()作為dataloader:#皈依PyTorch DataLoader#培訓或推理與dataloader代碼…
引發數據轉換器是幹什麼的?
引發數據轉換器API提供了以下特點:
- 緩存管理。轉換器在分布式文件係統緩存火花DataFrame和解釋器退出時刪除緩存的文件最好的努力。明確的刪除也提供了API。
- 豐富的參數來定製輸出數據集。用戶可以定製和控製輸出數據集通過設置batch_size workers_count和預取,以達到最好的I / O性能。
- 變換函數上定義熊貓dataframe。許多深度學習的數據集包括圖像、音頻或視頻字節,可以加載到火花DataFrames作為二進製列。這些二進製列需要解碼喂養在茫茫的學習模型。轉換的轉換器暴露一個鉤子函數來指定解碼邏輯。變換函數將作為輸入大熊貓從火花dataframe dataframe轉換,而且必須返回一個熊貓dataframe解碼數據。
- MLlib向量處理。除了原始數據類型,轉換器支持火花MLlib向量類型通過自動將它們轉換為數組列緩存火花DataFrame之前。你也可以重塑1 d多維數組的數組變換函數。
- 遠程數據加載。轉換器可以醃引發工人和用於創建TensorFlow數據集或PyTorch DataLoader工人。您可以指定是否要閱讀特定的碎片或整個數據集的參數。
- 簡單的從單節點遷移到分布式計算。單節點推理代碼遷移到分布式推理不需要在數據處理代碼更改,它隻適用於火花。分布式訓練,你隻需要添加兩個參數表明碎片的API指數和總數量的碎片。在我們的端到端示例筆記本,我們演示了如何將單節點的代碼遷移到分布式推理和分布式訓練Horovod。
付款的詳細信息,參考資料部分中的鏈接。
開始
嚐試下麵筆記本連接的端到端範例和參考資料部分中對磚運行時機器學習7.0測試版安裝了所有的需求。
AWS的筆記本
Azure的筆記本
確認
由於Petastorm作者Yevgeni Litvin和特拉維斯Addair超級詳細的評論和討論來啟用這個功能!
資源
磚與端到端示例文檔(AWS|Azure)
Petastorm GitHub主頁
Petastorm SparkDatasetConverter API文檔