亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

您現(xiàn)在的位置是:首頁 > 技術(shù)閱讀 >  從云到端智能進(jìn)展:谷歌移動(dòng)端深度學(xué)習(xí)框架TensorFlow Lite正式發(fā)布

從云到端智能進(jìn)展:谷歌移動(dòng)端深度學(xué)習(xí)框架TensorFlow Lite正式發(fā)布

時(shí)間:2024-01-28

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

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


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

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

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


現(xiàn)在,越來越多移動(dòng)設(shè)備內(nèi)置了專門的自定義硬件以高效處理機(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 模型,保存在磁盤中。

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

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


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


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

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

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

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


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


模型


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


  • MobileNet:一種能夠識別超過 1000 種不同物體的視覺模型,專為移動(dòng)端和嵌入式設(shè)備設(shè)計(jì);

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

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


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


關(guān)于 TensorFlow Mobile API


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


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


我們很高興開發(fā)者正上手使用 TensorFlow Lite。我們計(jì)劃以從事 TensorFlow 項(xiàng)目的同樣力度來支持和維護(hù)外部社區(qū),并迫不及待想看看 TensorFlow Lite 會帶來什么。


TensorFlow Lite 模型示例


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


我們發(fā)布的這個(gè)對話模型使用了一種新型機(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ì)算力和儲存能力的移動(dòng)設(shè)備上高效地運(yùn)行。通過高效的「投影」操作,我們可以將任何輸入轉(zhuǎn)換為緊湊的向量表示,即類似的輸入根據(jù)投影的類型被投影到密集或稀疏的近鄰向量。例如消息「hey, how's it going?」和「How's it going buddy?」就可能被投影到相似的向量表征。


根據(jù)這個(gè)概念,會話模型在較低的計(jì)算力水平和內(nèi)存占用下結(jié)合了這些高效的運(yùn)算。我們使用一個(gè) ML 框架以端到端的方式訓(xùn)練這個(gè)設(shè)備上的模型,該框架能聯(lián)合訓(xùn)練兩個(gè)類型的模型,即緊密的 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í)它所知道的知識。在訓(xùn)練過程中,我們能疊加其它如量化或精煉等技術(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)平臺上快速執(zhí)行,或直接在設(shè)備上執(zhí)行。下面是設(shè)備端對話模型的 TensorFlow Lite 推斷圖:

TensorFlow Lite 執(zhí)行設(shè)備端對話模型

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

超越會話模型


有趣的是,以上所描述的機(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è)備端模型。例如,谷歌開發(fā)者推出了一個(gè) ProjectionNet 架構(gòu),使用復(fù)雜的前饋/循環(huán)架構(gòu)(就像 LSTM)作為訓(xùn)練模型,聯(lián)合一個(gè)簡單的投影架構(gòu)——其中包含動(dòng)態(tài)投影操作以及一些窄帶全連接層。整個(gè)架構(gòu)使用反向傳播在 TensorFlow 上進(jìn)行端到端訓(xùn)練,在訓(xùn)練完成后,我們就可以直接使用緊湊的 ProjectionNet 進(jìn)行推理了。通過這種方法,我們可以訓(xùn)練尺寸很小的 ProjectionNet 模型,兼顧小尺寸(比常規(guī)模型小幾個(gè)數(shù)量級)與高性能,在一些視覺和語言分類任務(wù)中達(dá)到滿意的效果。


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


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

用于設(shè)備端模型訓(xùn)練的機(jī)器學(xué)習(xí)架構(gòu):ProjectionNet 使用深度學(xué)習(xí)訓(xùn)練(左),ProjectionGraph 使用圖學(xué)習(xí)訓(xùn)練(右)。


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

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

本文轉(zhuǎn)自物聯(lián)網(wǎng)智庫

來源:機(jī)器之心

往期推薦

云計(jì)算之隱喻風(fēng)起云涌

邁向混合云

云計(jì)算的人工智能雖然發(fā)展緩慢,但得到更多的關(guān)注

主站蜘蛛池模板: 万源市| 兴仁县| 九龙坡区| 承德县| 简阳市| 新密市| 广宗县| 阳春市| 陆河县| 张掖市| 商洛市| 毕节市| 宿松县| 喀什市| 那坡县| 闽侯县| 万年县| 钦州市| 三穗县| 铜陵市| 宁安市| 南部县| 江口县| 巴南区| 全南县| 南漳县| 苍山县| 阳信县| 婺源县| 琼海市| 香格里拉县| 即墨市| 闸北区| 巴东县| 朝阳区| 衡山县| 武胜县| 施秉县| 仁化县| 灌阳县| 大姚县|