姓名:周雪寧
學(xué)號(hào):1702110196
轉(zhuǎn)載:https://mp.weixin.qq.com/s/65HiEwCyzeA_d9flPBcpLQ
【嵌牛導(dǎo)讀】:
谷歌宣布推出?TensorFlowLite,這是?TensorFlow?的針對(duì)移動(dòng)設(shè)備和嵌入式設(shè)備的輕量級(jí)解決方案酬荞。這個(gè)框架針對(duì)機(jī)器學(xué)習(xí)模型的低延遲推理進(jìn)行了優(yōu)化那婉,重點(diǎn)是小內(nèi)存占用和快速性能塑荒。利用TensorFlow Lite,即使在半監(jiān)督的設(shè)置下玩裙,也可實(shí)現(xiàn)在手機(jī)端跨平臺(tái)訓(xùn)練ML模型兼贸。
【嵌牛鼻子】:Tensorflow,深度學(xué)習(xí)
【嵌牛提問(wèn)】:TensorFlowLite是否可以真的可以嵌入手機(jī)端吃溅,內(nèi)存占用如何溶诞?
【嵌牛正文】:
今年早些時(shí)候,谷歌推出了 Android Wear 2.0罕偎,這是“設(shè)備上”(on-device)機(jī)器學(xué)習(xí)技術(shù)用于智能通訊的第一款產(chǎn)品很澄。這使得基于云的技術(shù),例如智能回復(fù)(Smart Reply)颜及,以前在 Gmail甩苛、Inbox 和 Allo 中提供,現(xiàn)在在任何應(yīng)用中都可以直接使用俏站,包括第三方的消息應(yīng)用讯蒲,而無(wú)需連接到云端。也就是說(shuō)肄扎,你可以直接在智能手表上對(duì)收到的聊天信息作出回復(fù)墨林。
昨天,谷歌宣布推出 TensorFlow Lite犯祠,這是 TensorFlow 的針對(duì)移動(dòng)設(shè)備和嵌入式設(shè)備的輕量級(jí)解決方案旭等。這個(gè)框架針對(duì)機(jī)器學(xué)習(xí)模型的低延遲推理進(jìn)行了優(yōu)化,重點(diǎn)是小內(nèi)存占用和快速性能衡载。作為庫(kù)的一部分搔耕,谷歌還發(fā)布了一個(gè)設(shè)備上會(huì)話模型(on-device conversational model)和一個(gè)用于 demo 的 app,它提供了一個(gè)由 TensorFlow Lite 驅(qū)動(dòng)的自然語(yǔ)言應(yīng)用程序的示例痰娱,以便讓開發(fā)人員和研究人員更容易地構(gòu)建基于設(shè)備上推理(on-device inference)的新機(jī)器智能特征弃榨。這個(gè)模型能夠在輸入會(huì)話聊天信息時(shí)生成回復(fù)建議菩收,通過(guò)有效的推理,可以很容易地插入到聊天應(yīng)用程序中鲸睛,從而為設(shè)備上會(huì)話智能提供動(dòng)力娜饵。
谷歌發(fā)布的設(shè)備上會(huì)話模型使用了一種新的ML架構(gòu),用于訓(xùn)練緊湊的神經(jīng)網(wǎng)絡(luò)(以及其他機(jī)器學(xué)習(xí)模型)官辈,它基于一個(gè)聯(lián)合優(yōu)化的框架箱舞,最初是在
ProjectionNet?的論文中提出的(參考:ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections)。這個(gè)架構(gòu)可以在具有有限計(jì)算能力和內(nèi)存的移動(dòng)設(shè)備上高效地運(yùn)行钧萍,通過(guò)使用有效的“投影”(projection)操作褐缠,將任何輸入轉(zhuǎn)換為緊湊的位向量(bit vector)表示——類似的輸入被投影到鄰近的向量上,這些向量或密集风瘦,或稀疏队魏,取決于投影的類型。例如万搔,“嘿胡桨,你好嗎?”(hey, how's it going?)”和“老兄,最近怎么樣?”(How's it going buddy瞬雹?)昧谊,這兩個(gè)消息可能被投影到相同的向量表示。
在這個(gè)想法下酗捌,會(huì)話模型在低計(jì)算力和內(nèi)存占用的情況下將這些操作高效地結(jié)合起來(lái)呢诬。谷歌使用一個(gè)ML框架對(duì)這個(gè)設(shè)備上的模型進(jìn)行了端到端的訓(xùn)練,這個(gè)框架聯(lián)合訓(xùn)練兩種類型的模型——一個(gè)緊湊的 projection 模型(如前文所述)和一個(gè) trainer 模型胖缤。這兩個(gè)模型采用聯(lián)合的方式進(jìn)行訓(xùn)練尚镰, projection 模型從 trainer 模型中學(xué)習(xí)—— trainer 具有專家的特征,并且使用更大哪廓、更復(fù)雜的ML架構(gòu)進(jìn)行建模狗唉,而projection模型就像一個(gè)從專家那里學(xué)習(xí)的學(xué)生。在訓(xùn)練過(guò)程中涡真,還可以利用量化(quantization)?或“蒸餾”(distillation)等其他技術(shù)分俯,從而進(jìn)一步壓縮或選擇性地優(yōu)化目標(biāo)函數(shù)的某些部分。訓(xùn)練完畢后哆料,較小的 projection 模型就可以直接用于設(shè)備上的推理缸剪。
對(duì)于推理,訓(xùn)練的 projection 模型被編譯成一組 TensorFlow Lite 操作东亦,這些操作經(jīng)過(guò)優(yōu)化杏节,可以在移動(dòng)平臺(tái)上快速執(zhí)行,并直接在設(shè)備上執(zhí)行。下圖是用于設(shè)備上會(huì)話模型的 TensorFlow Lite 推理圖拢锹。
?????????????????????????????????????????? 設(shè)備上會(huì)話模型的 TensorFlow Lite 執(zhí)行
今天發(fā)布的開源對(duì)話模型(連同代碼)都是使用上面描述的聯(lián)合ML架構(gòu)來(lái)進(jìn)行端到端訓(xùn)練的。今天的發(fā)布還包括一個(gè)demo應(yīng)用萄喳,你可以很容易地下載并在你的移動(dòng)設(shè)備上試用一鍵智能回復(fù)卒稳。這個(gè)架構(gòu)支持基于應(yīng)用程序需求配置模型大小和預(yù)測(cè)質(zhì)量。在GitHub庫(kù)上我們提供了一個(gè)示例消息列表他巨。系統(tǒng)還可以從聊天對(duì)話中觀察到的流行回復(fù)意圖中學(xué)習(xí)并編譯的固定集的回復(fù)充坑。其底層的模式與谷歌在其應(yīng)用中使用的智能回復(fù)響應(yīng)不同。
模型下載:download.tensorflow.org/models/tflite/smartreply_1.0_2017_11_01.zip
code:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite/models/smartreply
對(duì)話模型之外
有趣的是染突,上面描述的ML架構(gòu)允許靈活選擇底層模型捻爷。我們還設(shè)計(jì)了與不同機(jī)器學(xué)習(xí)方法兼容的架構(gòu)——例如,當(dāng)使用TensorFlow深度學(xué)習(xí)時(shí)份企,我們學(xué)習(xí)了一個(gè)用于底層模型的輕量級(jí)的神經(jīng)網(wǎng)絡(luò)(ProjectionNet)也榄,而不同的架構(gòu)(ProjectionGraph)則使用圖形框架代替神經(jīng)網(wǎng)絡(luò)來(lái)表示模型。
這個(gè)聯(lián)合的框架還可以用來(lái)為其他任務(wù)使用不同的ML建模架構(gòu)來(lái)訓(xùn)練輕量級(jí)的設(shè)備上模型司志。舉個(gè)例子甜紫,我們推導(dǎo)出了一個(gè)ProjectionNet 架構(gòu),該架構(gòu)使用一個(gè)復(fù)雜的前饋或循環(huán)的架構(gòu)(如LSTM)骂远,并結(jié)合一個(gè)由動(dòng)態(tài)投影操作和幾個(gè)窄的完全連接層組成的簡(jiǎn)單projection 架構(gòu)囚霸。整個(gè)架構(gòu)都是在 TensorFlow 中使用反向傳播進(jìn)行端到端的訓(xùn)練。訓(xùn)練完成后激才,就可以直接使用緊湊的ProjectionNet 進(jìn)行推理拓型。使用這種方法,我們已經(jīng)成功地訓(xùn)練了小型的 ProjectionNet 模型瘸恼,它可以顯著地減小模型大辛哟臁(最大能夠減小幾個(gè)數(shù)量級(jí)),并且在多個(gè)視覺和語(yǔ)言的分類任務(wù)上的準(zhǔn)確性方面表現(xiàn)出色钞脂。類似地揣云,我們使用圖形學(xué)習(xí)框架訓(xùn)練其他的輕量級(jí)模型,即使是在半監(jiān)督的設(shè)置下也如此冰啃。
用于訓(xùn)練設(shè)備上模型的ML架構(gòu):使用深度學(xué)習(xí)訓(xùn)練的ProjectionNet(左)和使用圖形學(xué)習(xí)訓(xùn)練的ProjectionGraph(右)我們將繼續(xù)改進(jìn)并發(fā)布最新的TensorFlow Lite模型邓夕。我們認(rèn)為,使用這些ML架構(gòu)學(xué)習(xí)的現(xiàn)有模型(以及將來(lái)發(fā)布的模型)可以重復(fù)用于許多自然語(yǔ)言處理和計(jì)算機(jī)視覺的應(yīng)用程序阎毅,或者插入到現(xiàn)有的應(yīng)用程序中焚刚,以實(shí)現(xiàn)機(jī)器智能。我們希望機(jī)器學(xué)習(xí)和自然語(yǔ)言處理社區(qū)能夠在這些基礎(chǔ)上更進(jìn)一步扇调,解決新的問(wèn)題并提出我們尚未想到的用例矿咕。
TensorFlow Lite 特征、架構(gòu)、模型
今天碳柱,我們很高興地宣布TensorFlowLite的開發(fā)人員預(yù)覽版捡絮,這是 TensorFlow 針對(duì)移動(dòng)和嵌入式設(shè)備的輕量版解決方案!
TensorFlow一直運(yùn)行在許多平臺(tái)上莲镣,從服務(wù)器機(jī)架到小型物聯(lián)網(wǎng)設(shè)備福稳。但隨著過(guò)去幾年機(jī)器學(xué)習(xí)模型的采用呈指數(shù)級(jí)增長(zhǎng),因此需要將其部署在移動(dòng)和嵌入式設(shè)備上瑞侮。
TensorFlow Lite能夠?qū)υO(shè)備上的機(jī)器學(xué)習(xí)模型進(jìn)行低延遲推斷的圆。
TensorFlow Lite具有以下特征:
輕量使設(shè)備上機(jī)器學(xué)習(xí)模型推斷具有小型二進(jìn)制規(guī)模和快速初始化/啟動(dòng)。
跨平臺(tái):可以在多個(gè)平臺(tái)運(yùn)行半火,包括安卓和iOS越妈。
快速:針對(duì)移動(dòng)設(shè)備進(jìn)行了快速優(yōu)化,包括模型加載時(shí)間顯著加快钮糖,并支持硬件加速等梅掠。
越來(lái)越多的移動(dòng)設(shè)備采用專用的定制硬件來(lái)更有效地處理機(jī)器學(xué)習(xí)工作負(fù)載。TensorFlow Lite支持安卓神經(jīng)網(wǎng)絡(luò)API藐鹤,以充分利用這些新的加速器瓤檐。
當(dāng)加速器硬件不可用時(shí),TensorFlow Lite會(huì)回退到優(yōu)化的CPU執(zhí)行狀態(tài)娱节,從而確保模型仍然可以在大量設(shè)備上快速運(yùn)行挠蛉。
架構(gòu):下圖展示了TensorFlow Lite的架構(gòu)設(shè)計(jì)
組成部分如下
TensorFlow模型:保存在磁盤上經(jīng)過(guò)訓(xùn)練的TensorFlow模型。
TensorFlow Lite轉(zhuǎn)換器:是一個(gè)將模型轉(zhuǎn)換為TensorFlow Lite文件格式的程序肄满。
TensorFlow Lite模型文件:基于FlatBuffers的模型文件格式谴古,已經(jīng)過(guò)速度和大小優(yōu)化。
TensorFlow Lite模型文件被應(yīng)用在移動(dòng)應(yīng)用程序中:
Java API:在安卓平臺(tái)上圍繞著C++ API的包裹器稠歉。
C++ API:加載TensorFlow Lite模型文件并調(diào)用Interpreter掰担。安卓和iOS上有同樣的庫(kù)。
Interpreter:使用一組operator來(lái)執(zhí)行模型怒炸。Interprete支持選擇性操作員加載带饱。沒有operator的情況下,只有70KB阅羹,加載了所有operator勺疼,有300KB。這比TensorFlow Mobile所要求的1.5M的明顯降低捏鱼。
在選定的安卓設(shè)備上执庐,Interpreter將使用安卓神經(jīng)網(wǎng)絡(luò)API實(shí)現(xiàn)硬件加速。若無(wú)可用导梆,則默認(rèn)為CPU執(zhí)行轨淌。
開發(fā)人員也可以使用C++ API實(shí)現(xiàn)定制內(nèi)核迂烁。
模型
TensorFlow Lite已支持許多經(jīng)過(guò)訓(xùn)練和優(yōu)化的模型:
MobileNet:一類視覺模型,能夠識(shí)別1000個(gè)不同的對(duì)象類別递鹉,專門為移動(dòng)和嵌入式設(shè)備上的高效執(zhí)行而設(shè)計(jì)盟步。
Inception v3:圖像識(shí)別模型,功能與MobileNet類似躏结,提供更高的準(zhǔn)確性址芯,但更大。
Smart Reply:一種設(shè)備上的會(huì)話模型窜觉,可以對(duì)流入的對(duì)話聊天消息進(jìn)行一鍵式回復(fù)。第一方和第三方消息傳遞應(yīng)用在Android Wear上使用此功能北专。
Inception v3和MobileNets已經(jīng)在ImageNet數(shù)據(jù)集上訓(xùn)練禀挫。你可以通過(guò)遷移學(xué)習(xí),在自己的圖像數(shù)據(jù)集上重新訓(xùn)練拓颓。
模型下載:download.tensorflow.org/models/tflite/smartreply_1.0_2017_11_01.zip
code:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite/models/smartreply
參考:https://research.googleblog.com/2017/11/on-device-conversational-modeling-with.html
https://developers.googleblog.com/2017/11/announcing-tensorflow-lite.html