谷歌移動(dòng)端深度學(xué)習(xí)框架TensorFlow Lite正式發(fā)布

姓名:蘆凱 ? ? ?學(xué)號(hào):17011210546

轉(zhuǎn)載自:公眾號(hào)“機(jī)器之心”梯皿,原文鏈接:https://mp.weixin.qq.com/s/V5XvXw7Aagf_EWkLlj4h7g

【嵌牛導(dǎo)讀】今年 5 月疯趟,谷歌曾在 I/O大會(huì)上宣布即將推出 TensorFlow Lite病往,今日统翩,谷歌終于發(fā)布了新工具的開(kāi)發(fā)者預(yù)覽版本侄榴,這是一款 TensorFlow用于移動(dòng)設(shè)備和嵌入式設(shè)備的輕量級(jí)解決方案。TensorFlow 可以在多個(gè)平臺(tái)上運(yùn)行,從機(jī)架式服務(wù)器到小型 IoT設(shè)備。但是隨著近年來(lái)機(jī)器學(xué)習(xí)模型的廣泛使用擅编,出現(xiàn)了在移動(dòng)和嵌入式設(shè)備上部署它們的需求。而 TensorFlow Lite允許設(shè)備端的機(jī)器學(xué)習(xí)模型的低延遲推斷箫踩。在本文中爱态,TensorFlow 團(tuán)隊(duì)將向我們介紹 TensorFlow Lite的特點(diǎn),并展示一個(gè)可用的輕量級(jí)模型境钟。

【嵌牛鼻子】機(jī)器學(xué)習(xí)锦担,輕量級(jí)模型,谷歌慨削,多平臺(tái)

【嵌牛提問(wèn)】什么是TensorFlow Lite洞渔?

【嵌牛正文】

設(shè)計(jì)初衷:

輕量級(jí):允許小 binary size 和快速初始化/啟動(dòng)的設(shè)備端機(jī)器學(xué)習(xí)模型進(jìn)行推斷。

跨平臺(tái):運(yùn)行時(shí)的設(shè)計(jì)使其可以在不同的平臺(tái)上運(yùn)行理盆,最先允許的平臺(tái)是安卓和 iOS痘煤。

快速:專(zhuān)為移動(dòng)設(shè)備進(jìn)行優(yōu)化,包括大幅提升模型加載時(shí)間猿规,支持硬件加速衷快。

現(xiàn)在,越來(lái)越多移動(dòng)設(shè)備內(nèi)置了專(zhuān)門(mén)的自定義硬件以高效處理機(jī)器學(xué)習(xí)工作負(fù)載姨俩。TensorFlow

Lite 支持安卓神經(jīng)網(wǎng)絡(luò)API(https://developer.android.com/ndk/guides/neuralnetworks/index.html)蘸拔,以充分利用新的可用加速器。

當(dāng)加速器硬件不可用時(shí)环葵,TensorFlow Lite 返回至經(jīng)優(yōu)化的 CPU 執(zhí)行操作调窍,確保模型仍然可在大量設(shè)備上快速運(yùn)行。

架構(gòu)

下圖展示了 TensorFlow Lite 的架構(gòu)設(shè)計(jì):

組件包括:

TensorFlow 模型(TensorFlow Model):訓(xùn)練后的 TensorFlow 模型张遭,保存在磁盤(pán)中邓萨。

TensorFlow Lite 轉(zhuǎn)換器(TensorFlow Lite Converter):該程序?qū)⒛P娃D(zhuǎn)換成 TensorFlow Lite 文件格式。

TensorFlow Lite 模型文件(TensorFlow Lite Model File):該格式基于 FlatBuffers菊卷,經(jīng)過(guò)優(yōu)化以適應(yīng)最大速度和最小規(guī)模缔恳。

然后將 TensorFlow Lite 模型文件部署到移動(dòng) App 中:

Java API:安卓設(shè)備上適用于 C++ API 的便利封裝。

C++ API:加載 TensorFlow Lite 模型文件洁闰,啟動(dòng)編譯器歉甚。安卓和 iOS 設(shè)備上均有同樣的庫(kù)。

編譯器(Interpreter):使用運(yùn)算符執(zhí)行模型扑眉。解釋器支持選擇性加載運(yùn)算符纸泄;沒(méi)有運(yùn)算符時(shí)赖钞,編譯器只有 70KB,加載所有運(yùn)算符后聘裁,編譯器為 300KB雪营。這比 TensorFlow Mobile(具備一整套運(yùn)算符)的 1.5M 要小得多。

在選擇的安卓設(shè)備上咧虎,編譯器將使用安卓神經(jīng)網(wǎng)絡(luò) API 進(jìn)行硬件加速卓缰,或者在無(wú)可用 API 的情況下默認(rèn)執(zhí)行 CPU。

開(kāi)發(fā)者還使用 C++ API 實(shí)現(xiàn)自定義 kernel砰诵,它可被解釋器使用。

模型

TensorFlow Lite 已經(jīng)支持多個(gè)面向移動(dòng)端訓(xùn)練和優(yōu)化的模型:

MobileNet:一種能夠識(shí)別超過(guò) 1000 種不同物體的視覺(jué)模型捌显,專(zhuān)為移動(dòng)端和嵌入式設(shè)備設(shè)計(jì)茁彭;

Inception V3:一種圖像識(shí)別模型,功能上類(lèi)似于 MobileNet扶歪,但能提供更高的準(zhǔn)確率(當(dāng)然模型也更大)理肺;

Smart Reply:一種設(shè)備端對(duì)話模型,能對(duì)接收到的會(huì)話聊天信息提供觸發(fā)性應(yīng)答善镰。第一方和第三方通信 App 可在 Android Wear 上使用該特性妹萨。

Inception v3 和 MobileNet 都在 ImageNet 數(shù)據(jù)集上訓(xùn)練過(guò),你可以通過(guò)遷移學(xué)習(xí)輕松地在自己的圖像數(shù)據(jù)集上重新訓(xùn)練這些模型炫欺。

關(guān)于 TensorFlow Mobile API

如你所知乎完,TensorFlow已經(jīng)支持通過(guò) TensorFlow Mobile API 在移動(dòng)端和嵌入端部署模型。進(jìn)一步來(lái)說(shuō)品洛,TensorFlow Lite 可以看作TensorFlow Mobile 的升級(jí)树姨,它成熟之后,就可以作為在移動(dòng)設(shè)備桥状、嵌入設(shè)備上部署模型的首要推薦帽揪。此次公開(kāi)的 TensorFlow Lite 是開(kāi)發(fā)者預(yù)覽版,而 TensorFlow Mobile 依舊支持 APP 開(kāi)發(fā)辅斟。

TensorFlow Lite的適用范圍很廣转晰,并依然處于積極開(kāi)發(fā)之中。通過(guò)這一開(kāi)發(fā)者預(yù)覽版本士飒,我們特意從一個(gè)受限平臺(tái)開(kāi)始查邢,保證其在最重要的常用模型上的性能。我們計(jì)劃優(yōu)先考慮根據(jù)用戶(hù)需求擴(kuò)展未來(lái)的功能变汪。我們持續(xù)開(kāi)發(fā)的目標(biāo)是簡(jiǎn)化開(kāi)發(fā)者體驗(yàn)侠坎,并在一系列移動(dòng)端和嵌入式設(shè)備上實(shí)現(xiàn)模型部署。

我們很高興開(kāi)發(fā)者正上手使用TensorFlow Lite裙盾。我們計(jì)劃以從事 TensorFlow 項(xiàng)目的同樣力度來(lái)支持和維護(hù)外部社區(qū)实胸,并迫不及待想看看TensorFlow Lite 會(huì)帶來(lái)什么他嫡。更多信息請(qǐng)參見(jiàn):http://tensorflow.org/mobile/tflite。

TensorFlow Lite 模型示例

作為T(mén)ensorFlow Lite 庫(kù)的一部分庐完,我們還發(fā)布了一個(gè)設(shè)備端對(duì)話模型和演示 APP钢属,該 APP 提供了一個(gè)基于 TensorFlow Lite的自然語(yǔ)言應(yīng)用。該應(yīng)用有助于開(kāi)發(fā)者和研究人員構(gòu)建在設(shè)備上執(zhí)行推斷的新型機(jī)器智能應(yīng)用门躯。我們這次發(fā)布的模型會(huì)自動(dòng)生成建議的回復(fù)以作為聊天對(duì)話信息的輸入淆党,且它還能執(zhí)行高效的推斷以作為插件嵌入聊天應(yīng)用中,從而可以實(shí)現(xiàn)移動(dòng)設(shè)備上的對(duì)話智能讶凉。

我們發(fā)布的這個(gè)對(duì)話模型使用了一種新型機(jī)器學(xué)習(xí)架構(gòu)染乌,該架構(gòu)將基于一種聯(lián)合優(yōu)化框架而訓(xùn)練緊湊的神經(jīng)網(wǎng)絡(luò)模型或其它機(jī)器學(xué)習(xí)模型。該架構(gòu)最初是在論文 ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections 中提出懂讯,且它能在有限計(jì)算力和儲(chǔ)存能力的移動(dòng)設(shè)備上高效地運(yùn)行荷憋。通過(guò)高效的「投影」操作,我們可以將任何輸入轉(zhuǎn)換為緊湊的向量表示褐望,即類(lèi)似的輸入根據(jù)投影的類(lèi)型被投影到密集或稀疏的近鄰向量勒庄。例如消息「hey,how's it going?」和「How's it going buddy?」就可能被投影到相似的向量表征。

根據(jù)這個(gè)概念瘫里,會(huì)話模型在較低的計(jì)算力水平和內(nèi)存占用下結(jié)合了這些高效的運(yùn)算实蔽。我們使用一個(gè)ML 框架以端到端的方式訓(xùn)練這個(gè)設(shè)備上的模型,該框架能聯(lián)合訓(xùn)練兩個(gè)類(lèi)型的模型谨读,即緊密的 Projection 模型和 Trainer模型局装。這兩個(gè)模型以聯(lián)合的方式進(jìn)行訓(xùn)練,Projection 模型從 Trainer 模型中學(xué)習(xí)信息漆腌,而 Trainer模型更像一個(gè)導(dǎo)師贼邓,它一般使用更大和復(fù)雜的 ML 架構(gòu)進(jìn)行建模,因此 Projection 就像一個(gè)學(xué)生從 Trainer模型中學(xué)習(xí)它所知道的知識(shí)闷尿。在訓(xùn)練過(guò)程中塑径,我們能疊加其它如量化或精煉等技術(shù)而實(shí)現(xiàn)更加強(qiáng)大的壓縮或選擇性地優(yōu)化目標(biāo)函數(shù)的特定部分。一旦訓(xùn)練完成填具,較小的投影模型就能直接在移動(dòng)設(shè)備上執(zhí)行推斷了统舀。

至于推斷,訓(xùn)練后的投影模型被編譯成一系列 TensorFlow Lite 運(yùn)算符劳景,并被優(yōu)化以在移動(dòng)平臺(tái)上快速執(zhí)行誉简,或直接在設(shè)備上執(zhí)行。下面是設(shè)備端對(duì)話模型的 TensorFlow Lite 推斷圖:

今天發(fā)布的開(kāi)源會(huì)話模型(包括代碼)使用以上提到的聯(lián)合機(jī)器學(xué)習(xí)架構(gòu)進(jìn)行端到端的訓(xùn)練盟广。今天的發(fā)布內(nèi)容還包括了一個(gè)演示APP闷串,從而可以輕松地下載和在你的移動(dòng)設(shè)備上試用一鍵智能回復(fù)。該架構(gòu)允許基于應(yīng)用需求對(duì)模型尺度和預(yù)測(cè)質(zhì)量進(jìn)行簡(jiǎn)易配置筋量。你可以在 GitHub里找到從該模型輸出的高質(zhì)量的對(duì)話樣本烹吵。該系統(tǒng)還可以回退到從(通過(guò)對(duì)聊天的對(duì)話中所觀察到的常用應(yīng)答目的進(jìn)行學(xué)習(xí)和編譯得到的)一個(gè)固定的集合中提供建議的回復(fù)碉熄。其背后的模型和谷歌在其app 中使用的智能回復(fù)(Smart Reply)是不同的。

超越會(huì)話模型

有趣的是肋拔,以上所描述的機(jī)器學(xué)習(xí)架構(gòu)能為背后的模型提供靈活的選擇锈津。我們還設(shè)計(jì)了可兼容不同機(jī)器學(xué)習(xí)方法的架構(gòu),例如凉蜂,當(dāng)使用TensorFlow進(jìn)行深度學(xué)習(xí)的時(shí)候琼梆,我們是為背后的模型學(xué)習(xí)了一個(gè)輕量神經(jīng)網(wǎng)絡(luò)(ProjectionNet),然而當(dāng)用另一個(gè)不同的架構(gòu)(ProjectionGraph)的時(shí)候窿吩,我們是使用圖框架而不是神經(jīng)網(wǎng)絡(luò)表示模型茎杂。

聯(lián)合框架也可以為不同機(jī)器學(xué)習(xí)模型架構(gòu)訓(xùn)練輕量的設(shè)備端模型。例如纫雁,谷歌開(kāi)發(fā)者推出了一個(gè)ProjectionNet 架構(gòu)蛉顽,使用復(fù)雜的前饋/循環(huán)架構(gòu)(就像LSTM)作為訓(xùn)練模型,聯(lián)合一個(gè)簡(jiǎn)單的投影架構(gòu)——其中包含動(dòng)態(tài)投影操作以及一些窄帶全連接層先较。整個(gè)架構(gòu)使用反向傳播在 TensorFlow上進(jìn)行端到端訓(xùn)練,在訓(xùn)練完成后悼粮,我們就可以直接使用緊湊的 ProjectionNet 進(jìn)行推理了闲勺。通過(guò)這種方法,我們可以訓(xùn)練尺寸很小的ProjectionNet 模型扣猫,兼顧小尺寸(比常規(guī)模型小幾個(gè)數(shù)量級(jí))與高性能菜循,在一些視覺(jué)和語(yǔ)言分類(lèi)任務(wù)中達(dá)到滿(mǎn)意的效果。

相關(guān)示例可參閱論文《ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections》:https://arxiv.org/abs/1708.00630

同樣的申尤,谷歌也為圖學(xué)習(xí)框架訓(xùn)練了其他輕量級(jí)模型癌幕,甚至引入了半監(jiān)督學(xué)習(xí)。

在未來(lái)昧穿,谷歌將持續(xù)提升TensorFlow Lite模型的性能勺远,并開(kāi)源更多模型。這些使用機(jī)器學(xué)習(xí)架構(gòu)的模型(以及未來(lái)即將推出的模型)將被很多自然語(yǔ)言處理與計(jì)算機(jī)視覺(jué)應(yīng)用所采用时鸵,嵌入到已有 APP中胶逢,為終端設(shè)備帶來(lái)智能。谷歌希望以此促進(jìn)機(jī)器學(xué)習(xí)與自然語(yǔ)言處理社區(qū)持續(xù)發(fā)展饰潜,讓技術(shù)解決更多問(wèn)題初坠。

Note:目前的設(shè)備端模型是面向小尺寸、低延遲應(yīng)用進(jìn)行訓(xùn)練和優(yōu)化的彭雾,適用于手機(jī)和可穿戴設(shè)備碟刺。在谷歌自有的APP中,智能回復(fù)的預(yù)測(cè)是通過(guò)更大薯酝、更復(fù)雜的模型完成的半沽。在商用化系統(tǒng)中爽柒,谷歌也會(huì)使用多種分類(lèi)器對(duì)不適當(dāng)內(nèi)容進(jìn)行探測(cè),并對(duì)用戶(hù)體驗(yàn)進(jìn)行進(jìn)一步優(yōu)化抄囚。谷歌建議開(kāi)發(fā)者們?cè)谑褂肨ensorFlow Lite 時(shí)也可以遵循這樣的使用范例以達(dá)到更好效果霉赡。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市幔托,隨后出現(xiàn)的幾起案子穴亏,更是在濱河造成了極大的恐慌,老刑警劉巖重挑,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗓化,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡谬哀,警方通過(guò)查閱死者的電腦和手機(jī)刺覆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)史煎,“玉大人谦屑,你說(shuō)我怎么就攤上這事∑螅” “怎么了氢橙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)恬偷。 經(jīng)常有香客問(wèn)我悍手,道長(zhǎng),這世上最難降的妖魔是什么袍患? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任坦康,我火速辦了婚禮,結(jié)果婚禮上诡延,老公的妹妹穿的比我還像新娘滞欠。我一直安慰自己,他們只是感情好孕暇,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布仑撞。 她就那樣靜靜地躺著,像睡著了一般妖滔。 火紅的嫁衣襯著肌膚如雪隧哮。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天座舍,我揣著相機(jī)與錄音沮翔,去河邊找鬼。 笑死曲秉,一個(gè)胖子當(dāng)著我的面吹牛采蚀,可吹牛的內(nèi)容都是我干的疲牵。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼榆鼠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼纲爸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起妆够,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤识啦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后神妹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體颓哮,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年鸵荠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冕茅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛹找,死狀恐怖姨伤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情庸疾,我是刑警寧澤姜挺,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站彼硫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏凌箕。R本人自食惡果不足惜拧篮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牵舱。 院中可真熱鬧串绩,春花似錦、人聲如沸芜壁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)慧妄。三九已至顷牌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間塞淹,已是汗流浹背窟蓝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饱普,地道東北人运挫。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓状共,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親谁帕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子峡继,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容