願景進行深度學習簡單
MapReduce 15年前被引進時,它顯示一窺未來的世界。第一次,矽穀高科技公司的工程師可以分析整個互聯網。MapReduce,然而,提供低級api,使用非常困難,因此,這個“超級大國”是一件奢侈的事情——隻有一小部分高度複雜的工程師有很多資源可以使用它。
今天,深度學習已達到其“MapReduce”觀點:證明其潛能;它是人工智能的“超級大國”。幾年前它的成就是不可想象的:無人駕駛汽車和AlphaGo被認為是奇跡。
然而利用深度學習的超級大國今天昨天一樣具有挑戰性的大數據:深度學習框架陡峭的學習曲線,因為低級api;擴展到分布式硬件需要大量的手工工作;甚至與時間和資源的組合,獲得成功需要繁瑣的篡改和試驗參數。深度學習通常被稱為“黑魔法”。
七年前,我們一群人開始奇異的火花項目目標“民主化”大數據的“超級大國”,通過提供高級的api和一個統一的引擎做機器學習、ETL、流媒體和交互式SQL。今天,Apache火花使大數據可以從軟件工程師到SQL分析師。
繼續這一願景的民主化,我們興奮的宣布深度學習管道,一個新的開源庫,旨在使大家容易可伸縮的深度學習融入他們的工作流程,從機器學習實踐者到業務分析師。
深度學習管道基於Apache火花的毫升管道培訓,火花DataFrames和SQL部署模型。它包括高級api的共同方麵深度學習所以他們可以有效地完成幾行代碼:
- 圖片加載
- 應用pre-trained模型作為火花毫升管道變形金剛
- 轉移學習
- 分布式hyperparameter調優
- 在DataFrames部署模型和SQL
在文章的其餘部分中,我們詳細描述了每一個功能和例子。嚐試這些磚和進一步的例子,看看筆記本深度學習管道磚。
圖片加載
在圖像應用深度學習的第一步是加載圖像的能力。深度學習管道包括效用函數可以數以百萬計的映像加載到DataFrame和解碼自動在一個分布式的方式,允許大規模操縱。
df = imageIO.readImages (“/數據/模板”)
我們也致力於增加支持更多的數據類型,如文本和時間序列。
應用Pre-trained可伸縮的預測模型
深度學習管道支持運行pre-trained模型在一個分布式的方式與火花,在批處理和可用流媒體數據處理。它的一些最受歡迎的模型,讓用戶開始使用深度學習而不昂貴的步驟的培訓模式。例如,下麵的代碼創建了一個火花預測管道使用InceptionV3,最先進的卷積神經網絡(CNN)模型的圖像分類,並預測哪些對象在我們剛剛加載的圖片。當然,這種預測完成與所有有火花的好處:
從sparkdl進口readImages, DeepImagePredictor預測= DeepImagePredictor (inputCol =“圖像”outputCol =“predicted_labels”modelName =“InceptionV3”)predictions_df = predictor.transform (df)
除了使用內置的模型,用戶可以插入Keras模型在火花和TensorFlow圖預測管道。這把任何單節點模型在單節點工具變成一個可以應用在分布式的方式,在大量數據。
磚的統一的分析平台Beplay体育安卓版本,如果你選擇了基於gpu集群計算密集型部分會自動運行在gpu最佳效率。
轉移學習
Pre-trained模型是非常有用的,當他們適用於手頭的任務,但他們往往不為特定的數據集優化用戶解決。作為一個例子,InceptionV3模型優化了圖像分類在1000年廣泛的類別,但我們的域名可能是犬種分類。深度學習的常用技術轉移學習,適應一個模型訓練了一個類似任務手頭的任務。與培訓新模式從地麵行動相比,學習需要大幅減少數據傳輸和資源。這就是為什麼學習轉移已成為首選方法在許多實際的使用情況下,如癌症檢測。
深度學習管道允許快速轉移學習的概念Featurizer。下麵的例子結合InceptionV3模型和邏輯回歸火花InceptionV3適應我們的特定領域。DeepImageFeaturizer自動皮掉了最後一層pre-trained神經網絡,並使用所有前一層的輸出作為邏輯回歸算法的特性。由於邏輯回歸是一個簡單和快速算法,這種轉移學習訓練能迅速收斂比通常需要使用更少的圖像訓練來自地麵的深度學習模型。
從sparkdl進口DeepImageFeaturizer從pyspark.ml.classification進口LogisticRegressionfeaturizer = DeepImageFeaturizer (modelName =“InceptionV3”)lr = LogisticRegression ()p =管道(階段= [featurizer, lr))# train_images_df =…#加載圖片和標簽的數據集模型= p.fit (train_images_df)
分布式Hyperparameter調優
得到最好的結果在深學習需要嚐試不同的訓練參數的值,稱為hyperparameter調優的重要一步。自深度學習管道允許暴露深度學習訓練一步引發的機器學習管道,用戶可以依靠hyperparameter優化基礎設施已經建成了火花。
下麵的代碼將Keras估計量並執行hyperparameter優化使用網格搜索和交叉驗證:
myEstimator = KerasImageFileEstimator (inputCol =“輸入”,outputCol =“輸出”,modelFile =“/ my_models / model.h5”,imageLoader = _loadProcessKeras)kerasParams1 = {“batch_size”:10時代:10}kerasParams2 = {“batch_size”:5時代:20.}
myParamMaps =ParamGridBuilder () \.addGrid (myEstimator。kerasParams, \ [kerasParams1, kerasParams2]).build ()
簡曆= CrossValidator (myEstimator myEvaluator myParamMaps)cvModel = cv.fit ()kerasTransformer = cvModel.bestModel# KerasTransformer類型的
在SQL部署模型
一旦數據科學家構建所需的模型,深度學習管道使它簡單的讓它作為一個函數的SQL,因此任何人在他們的組織可以使用它——數據工程師,數據科學家,業務分析師,任何人。
sparkdl.registerKerasUDF (“img_classify”,“/ mymodels / dogmodel.h5”)
其次,組織中的任何用戶可以應用在SQL預測:
選擇形象,img_classify(圖片)標簽從圖片在哪裏包含(“吉娃娃”標簽)
類似的功能也可以在DataFrame編程API支持所有語言(Python, Scala, Java, R)。類似於可伸縮的預測,這一特性在批處理和工作結構化流。
結論
在這篇文章中,我們介紹了深度學習管道,一個新的庫,使深度學習大大更容易使用和規模。雖然這隻是一個開始,我們相信深度學習管道有潛力完成什麼火花大數據:讓大家深度學習的“超級大國”平易近人。
本係列的後續文章將介紹圖書館的各種工具詳細:圖像處理在規模、轉移學習,在規模預測,提供深度學習在SQL。
更多地了解圖書館,查看磚的筆記本以及github庫。我們鼓勵您給我們反饋。甚至更好,是一個貢獻者,幫助每個人實現可伸縮的深度學習的力量。