在剛剛過去的 DevFest 上海站,Google 資深工程師顧仁民,分享了 TensorFlow Extended 如何幫助開發者快速落地項目,解決數據驗證,數據轉換,模型分析,部署上線等問題。
身邊的 TensorFlow 示例
上圖是一副海洋區域內船只活動軌跡圖,其中每個船的活動點都是一個亮點,可以看到人類在海洋區域的活動非常頻繁。我們可以通過船只運行的軌跡了解到其深處的奧秘。假如有一艘船運行的軌跡是轉來轉去的,而不是直接從 A 點開到 B 點,其實它是在捕魚。我們根據這個軌跡可以判斷出這艘船是貨船或者是某一種特別的漁船,并用機器學習的方式來對船只的軌跡進行分類。
根據這一結論,我們可以進行進一步的環境保護的操作,從而保證魚不會被過度捕撈。
除此之外,還有一些形象的示例,如關于保險公司商業策略:保險公司可以通過TensorFlow,針對一些比較容易發生事故的司機,特定地增加一定比率的保費。
關于汽車拍賣定價:TensorFlow 可以幫助企業快速地通過圖片完成汽車相關的各種車況檢查,也包括理賠信息檢查等。
上圖中給出的是應用了 TensorFlow 的 Google 用例,如翻譯、語音生成、醫療,以及節能等,他們有各自的意義,比如根據用戶實際情況,節能用在數據中心最大可以節約 40% 。
一起進入 TensorFlow Extended 階段
機器學習為我們帶來了很多便利,但上面的三個示例具體應該如何實現呢?我們可以先想想機器學習的代碼層面是什么樣子。
用過 Keras 的工程師會比較清楚,它從代碼上看比較簡單。
再復雜一點的 Wide & Deep。可能大家很多時候需要做一個機器系統去做推薦工作,這個稍微有點復雜,但要實現這樣一個模型要多少代碼呢?
只有圖中所示的這些,直接就可以上手了!所以,可以認為以往我們認為最難的機器學習核心部分的模型代碼,實際上最終的量都比較小。
什么是 TensorFlow Extended ?
在機器學習里,我們非常關注模型代碼,而 TensorFlow Extended ,不只是模型。
TensorFlow Extended 解決了哪些問題呢?前面提到,機器學習的代碼很簡單,但為了實現機器學習,開發者日常需要花費大量的人力在數據收集、配置、機器管理等各種各樣的事情上,反而曾經認為最難的機器學習的模型代碼部分是最簡單的,那么這些需要花費外圍力量的工作我們是必須鋪人力去做,還是能夠通過其他方式實現,從而讓項目快速實施落地呢?
TensorFlow Extended 就是 Google 推出的一個能夠幫助解決這些問題,幫助開發者實現快速實施落地項目的有效工具。
TensorFlow Extended 可以解決上圖所列的一部分問題,雖然還有很多模塊還沒開源,但將會陸續開源出來,例如在上圖中出現的最底層的儲存層、管理層等工作。
如何準備 TensorFlow Extended 的數據?
TensorFlow Extended 可以分為四個部分。我們知道在機器學習中,有人工智能、機器學習、深度學習等多個概念,機器學習可以認為是數據驅動的智能,所以數據是非常重要的,它本質上是放入數據,產出模型,中間有些算法。
但如果數據是垃圾數據的話,出來的模型肯定也是有問題的。如果再加上迭代,用模型再去改進它獲取新的數據,那相當于錯上加錯,所以這會進入一個惡性循環,效果會越來越差。
怎樣防止這個問題?
要在第一步數據問題上做保證,這也是 TensorFlow Extended 的作用。舉例說明它的作用:我們首先在 TensorFlow Extended 中收集一部分(比如一天)的數據,假設第一天數據可能有錯,也可能是正確的,所以需要人工檢查來確保無錯,形成一個好的數據集,作為以后的參考。
怎樣檢查數據集是好還是壞?
一個方法是逐條查看,另一個方法是查看統計信息,此時,使用 TensorFlow Extended 可視化檢查相對比較方便,能在下方看到它的最大值、最小值、均值、方差等相關統計信息。
人工檢查信息后,我們還可以檢查得更復雜一些。圖中紅色的部分能告訴我們哪些數據可能有問題,不一定真的有問題,但從統計的角度這些數據可能屬于離群數據,是比較特別的數據,TensorFlow Extended 會提示人工進行更詳細的檢查。
待這些檢查工作完成后,基本可以認為第一天的數據是比較干凈、比較正確的。然后我們可以根據這個數據生成一個相對更固定的 schema ,形成刻劃后的第一天的數據。當然還可以進一步細調這一 schema 并將之用在其他地方,如 TensorFlow 這個場景上。
解決好第一天的數據后,進入第二天,我們假設第二天的數據肯定是對的,但是有可能是特別的,這有兩種情況:
第二天跟第一天不一樣,模型需要調整。
第二天的數據是臟的。
怎樣發現這個問題?
第二天的數據也可以生成 stats 數據,我們可以在 TensorFlow Extended 中把兩天的數據合在一起,如將第一天和第二天的數據一起展現,來查看其均值、方差等各種指標是否匹配,如不匹配,說明第一天和第二天的數據在統計上的分布情況差異較大,則第一天訓練的模型不太能用在第二天。我們也可以更詳細的去查看很多可視化的解釋。
當查看完后,我們還要再進一步的看第一天和第二天是否還有較大的差異。除去可視化,如果想自動化這一過程,或不頻繁看圖表,該怎么辦呢?用 stats 去檢查差異性。比如,把第一天的 stats 和第二天的 stats 進行比較,如第一天統計出的值域是 0-100,第二天為120,說明最大化發生了變化,有可能發生了不太正常的事情。
接下來是Data validation,有可能需要針對模型轉換的數據、數據轉換的數據,包括線上設定的數據等進行該工作, TensorFlow Extended 有多種處理方式可以完成這一驗證。
TensorFlow Extended 模型出錯如何解決?
數據整理完成后是 TensorFlow 中與機器學習相關的如分桶,或者一些 NLP 上做特征交叉的工作。
下面是 TensorFlow Extended 非常有用的一點,可能開發者使用單一模型不能解決所有的問題,需要用多個機器學習模型拼接起來才能解決一個大的問題。如做圖象識別類、文本識別類的工作,第一步要建立一個檢測模型,第二步做識別模型對行里做序列檢測,接下來進入到機器學習核心代碼部分去做訓練。
此時開發者可能會面臨一個問題:這個模型有可能是錯的,或者說數據有可能還是錯的,或者說這個模型定義是有問題的,沒有表達出這個數據的一些特別的特征出來。此時,我們需要去做一些分析,要建立適合用來分析的版本,然后進入這個模塊。
以一個典型的例子為例,刻劃所做工作是否準確有幾個指標,但這幾個指標是針對所有測試集數據的宏觀指標,它只能說明總體是怎么樣的情況,就像一場考試,老師給給出的總分數,無法說明答題者選擇題還是填空題做的好。如果我們知道哪一部分做的好、哪一部分做的不好,就可以針對做的不好的部分進行深挖,下次可以做的更好一點,這是 TensorFlow Extended 的一個重要功能,它可以告訴開發者更細致的信息。
下面有幾個例子:
1. 打車的場景,它可以體現上午比較好還是下午比較好,在高峰時間數據比較多,低谷時間數據比較小,我們可以用這樣一個工具很快的去分析出到底哪些不對。
2. 電商的場景,如果業務在大城市表現很好,但是在中小型城市表現不好,是不是中小型城市數據不夠均勻,參數刻劃的不夠好等等問題,TensorFlow Extended 可以幫助你從數據切片的角度來分析到底哪些出了問題。
模型不可能一直不變,是要進行迭代更新的。迭代時,比如上個月的版本和本月的版本,兩個模型是有差異的,原因可能是數據產生了變化,算法產生了變化,或者一些別的特殊的業務規則的變化等各種各樣的原因。
這時如果能跟蹤隨著時間變化,這一機器學習小組的產出,或者說模型效果是越來越好,還是越來越不好,還是一直處于比較穩定的狀態 —— 那將是比較好的情況。
我們可以從時間軸上跟蹤多個版本來進行自動測試,到底這個系統的產出是不是一直變得更好,如果變得更好,我們可以看到哪個時間點開始變得更好了,可以總結出該時間段內做了怎樣的工作使得模型變得好了,這樣的話寫報告給老板,這個工作做的意義;還有一種情形是昨天跑的很好,今天反而不好了,我們可以反思一下這段時間系統上線了什么東西,適當的調整模型或者修改特定的BUG,幫助我們第一時間找到模型哪里變得不好。
模型部署上線需要考慮的問題
模型從時間、數據切片等角度效果都比較好之后,說明開發工作已經做得比較好了,需要考慮上線的問題。
上線我們保存為另一個更精簡的版本,這時再用 TensorFlow 就可以直接部署使用了,當然部署的時候可以結合里面的一些工具直接進行部署等,這些資源管理類的開源框架都可以幫開發者完成一些事情。
我們現在提供兩種部署方式,一種叫 gRPC,另一種是 RESTful。
所有東西做完之后要做一個回饋,日志是一個公司非常寶貴的資源,如果信息可以回饋到一開始最上面或者更上游一層,會有助于更良性的循環。
當然 TensorFlow Extended 在這里的開源可能還不夠充分,但如果開發者可以結合自己公司已有的處理機制去做這些環節,再進入下一個迭代循環的話,可以幫助開發者第一時間去發現業務系統是不是發生了一些狀況。
基本上走完整個流程后,便可以結合人工和自動的方式來確保機器學習整個處于一個良性的循環當中。這就是 TensorFlow Extended 體現出來的價值。
現在上圖所示是 TensorFlow Extended中已經開源的四個部分。還有更多的東西會陸續地開放,當然還會結合 TensorFlow 資源調度類的框架做一些更深度的整合。
TensorFlow Extended 能夠在數據驗證即轉換,模型分析、部署上線等環節幫助開發者降低人力和投入的消耗,從而實現項目的快遞實施落地,除此之外,TensorFlow 還在對日常開發中更多需要消耗大量人力及資源的模塊進行改善和開發,并將之開源供開發者使用,希望開發者可以持續關注。
-
人工智能
+關注
關注
1800文章
48094瀏覽量
242215 -
機器學習
+關注
關注
66文章
8460瀏覽量
133433 -
深度學習
+關注
關注
73文章
5527瀏覽量
121885
原文標題:TensorFlow Extended 幫你快速落地項目
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
《HarmonyOS第一課》煥新升級,賦能開發者快速掌握鴻蒙應用開發
【免費報名】4月11日,Ubuntu開發者創新大賽落地培訓(重慶站)
OpenHarmony開發者文檔
誠邀報名丨首期OpenHarmony開發者成長計劃分享日
HDC 2022 開發者主題演講與技術分論壇干貨分享(附課件)
喜報|HarmonyOS開發者社區連獲業內獎項,持續深耕開發者生態
提出一個快速啟動自己的 TensorFlow 項目模板

AI開發平臺如何幫助嵌入式開發者加速應用產品化落地

TensorFlow Community Spotlight獲獎項目
華為開發者HarmonyOS零基礎入門:HarmonyOS UI編程框架快速上手

openEuler Summit開發者峰會:歐拉社區與開發者持續活躍 原創項目代碼倉新增50%

HUAWEI HiAI Foundation端云協同助力開發者快速上線新業務

Flutter 中國開發者大會 | Flutter Forward Extended China
涂鴉開發者大會即將開幕,賦能開發者打造IoT發展新引擎

評論