您當前的位置:首頁 > 攝影

TensorFlow Lite:從產品原型設計到部署落地

作者:由 谷歌開發者 發表于 攝影時間:2020-10-13

TensorFlow Lite 支援在邊緣裝置上執行機器學習框架 TensorFlow 模型推理。TensorFlow Lite 已部署在全球超過 40 億臺邊緣裝置上,且支援基於 Android、iOS 和 Linux 的物聯網裝置及微控制器。

自2017年底 TensorFlow Lite 首次釋出以來,我們一直在探索與改進,在保證可靠性的同時讓更多開發者(包括機器學習領域的新手)輕鬆上手使用。本文將重點介紹 TFLite 最近釋出的產品更新,指引您在移動端的機器學習框架學習,助力更加流暢的原型設計、開發應用和生產部署。

更多資訊歡迎觀看 TensorFlow DevSummit 2020 釋出的演講:

原型:從最前沿的模型入手

機器學習領域正在飛速發展,因此在投入資源開發功能之前,調研最新技術能帶來哪些改善是不可缺失的一環。我們提供了預訓練模型的程式碼庫與相應的示例應用。透過示例應用,無需編寫任何程式碼即可在您的裝置上試用 TensorFlow Lite 模型。您可以快速將模型整合到自己的應用上。您的應用從設計原型到開始測試使用者體驗,與以往訓練模型所需的時間相當。

我們已經發布多個新的預訓練模型,如問答模型和風格轉化模型。

此外,我們也致力於將研究團隊的前沿模型引入到 TensorFlow Lite。最近,我們已支援 3 種全新的模型架構:EfficientNet-Lite (論文)、MobileBERT(論文)和ALBERT-Lite(論文):

EfficientNet-Lite 是一種新型影象分類模型,可在使用更少引數、消耗更少算力的情況下,達到目前最佳準確率。模型針對 TensorFlow Lite 進行了最佳化,不僅支援量化且準確率損失微乎其微,還完全受 GPU Delegate 支援,可實現更快速的推理。如需瞭解詳情,請參閱我們的文章。

TensorFlow Lite:從產品原型設計到部署落地

在四執行緒 Pixel 4 CPU 上進行基準測試,2020 年 3 月

MobileBERT

是主流 BERT (論文)模型的最佳化版本,針對一系列 NLP 任務(如問答、自然語言推理等)都可達到目前最佳準確率。與 BERT 相比,MobileBERT 速度提升約 4 倍,體型更小,但準確率依舊維持原來的高水準。

ALBERT

是 BERT 的另一個輕量級版本,在保持相同準確率的同時對模型大小進行了最佳化。ALBERT-Lite 是相容 TensorFlow Lite 的 ALBERT 版本,體型僅為 BERT 的 1/6(比 MobileBERT 小 1。5x),但延遲與 BERT 相當。

TensorFlow Lite:從產品原型設計到部署落地

在四執行緒 Pixel 4 CPU 上進行基準測試,2020 年 3 月(模型超引數:序列長度 128,詞彙大小 30K)

開發模型:無需ML背景也可構建模型

在 TensorFlow Lite 中引入前沿研究模型的同時,我們還希望您能夠為自己的用例與需求輕鬆自定義這些模型。

我們很高興地釋出 TensorFlow Lite Model Maker,這款工具簡單易用。透過遷移學習,您可在您的資料集上應用前沿的機器學習模型。此工具將複雜的機器學習概念封裝在直觀的 API 中,無需機器學習專業知識,您也可以開啟機器學習之旅。只需 4 行程式碼即可訓練最前沿的影象分類:

data

=

ImageClassifierDataLoader

from_folder

‘flower_photos/’

model

=

image_classifier

create

data

loss

accuracy

=

model

evaluate

()

model

export

‘flower_classifier。tflite’

‘flower_label。txt’

with_metadata

=

True

Model Maker 支援

TensorFlow Hub

上提供的許多最前沿模型,其中包括

EfficientNet-Lite

模型。如果想獲得更高的準確率,僅需修改一行程式碼(保留其餘的訓練流水線),即可切換到不同的模型架構。

# EfficinetNet-Lite2。

model

=

image_classifier

create

data

efficientnet_lite2_spec

# ResNet 50。

model

=

image_classifier

create

data

resnet_50_spec

Model Maker 目前支援兩種用例:影象分類(教程)和文字分類(教程),不久將新增更多計算機視覺和 NLP 用例。

開發模型:關聯元資料無縫替換模型

TensorFlow Lite 檔案格式的元資料始終具有輸入/輸出張量形狀。如果模型的建立者同時也是應用開發者,那麼此檔案格式將會非常適用。但隨著裝置端機器學習生態的不斷髮展,更為常見的情況則是:這些任務由組織內的不同團隊,甚至由不同組織間合作完成。為適應上述情況以及讓資訊更好傳遞,我們在元資料中添加了新欄位。可分為兩大類:

機器可讀引數

:如標準化引數,像平均值和標準差、類別標籤檔案。其他系統可讀取這些引數,從而生成封裝類程式碼 (Wrapper Code)。我們在下一節中提供了一個相關示例。

人類可讀引數

:如模型描述、模型許可。這類引數可為使用模型的應用開發者提供關於如何正確使用模型的關鍵資訊:如他們應注意到的一些優點或缺點。此外,像許可這樣的欄位在決定是否可使用某個模型時也很關鍵。將此類欄位附加到模型可減少障礙,大幅提高採用率。

為強化這類工作,無論是 TensorFlow Lite Model Maker 建立的模型,還是

TensorFlow Hub

上與影象相關的 TensorFlow Lite 模型,都已附加元資料。如果您正在建立自己的模型,可以透過附加元資料實現更輕鬆地共享。

# Creates model info。

model_meta

=

_metadata_fb

ModelMetadataT

()

model_meta

name

=

“MobileNetV1 image classifier”

model_meta

description

=

“Identify the most prominent object in the ”

“image from a set of 1,001 categories such as ”

“trees, animals, food, vehicles, person etc。”

model_meta

version

=

“v1”

model_meta

author

=

“TensorFlow”

model_meta

license

=

“Apache License。 Version 2。0 ”

“http://www。apache。org/licenses/LICENSE-2。0。”

# Describe input and output tensors

# 。。。

# Writing the metadata to your model

b

=

flatbuffers

Builder

0

b

Finish

model_meta

Pack

b

),

_metadata

MetadataPopulator

METADATA_FILE_IDENTIFIER

metadata_buf

=

b

Output

()

populator

=

_metadata

MetadataPopulator

with_model_file

model_file

populator

load_metadata_buffer

metadata_buf

populator

load_associated_files

([

“your_path_to_label_file”

])

populator

populate

()

有關如何為 MobileNet v1 填充元資料的完整示例,請參閱本指南 。

開發應用:從模型自動生成程式碼

透過元資料的機器可讀部分,程式碼生成器能生成可用於整合的封裝類程式碼 (Wrapper Code),而非透過複製和貼上易出錯的樣板程式碼,將型別化物件(如點陣圖)轉換為 ByteArray 後再傳遞給 TensorFlow Lite 直譯器。

您可以使用我們為 Android 構建的首款程式碼生成器生成模型封裝類 (Wrapper)。同時,我們也在努力將此工具整合到 Android Studio。

開發應用:透過基準和分析工具瞭解效能

建立模型後,我們想要了解它在移動裝置上的效能表現。TensorFlow Lite 提供了基準工具來度量模型的效能。我們已為所有執行時選項添加了執行基準的支援,包括在 GPU 或其他受支援的硬體加速器上執行模型、指定執行緒數等。您還可以將推理延遲細分為單個操作粒度,以識別其中的最耗時操作,並最佳化模型推理。

將模型整合到應用後,您可能會遇到其他效能問題,這時可使用平臺提供的效能分析工具。例如,在 Android 上,您可以透過各種跟蹤工具來排查效能問題。我們在 Android 上釋出了 TensorFlow Lite 效能跟蹤模組,助您瞭解 TensorFlow Lite 的內部機制。預設情況下,該模組安裝在我們的 Nightly 版本中。使用者可透過跟蹤瞭解推理過程中是否出現了資源衝突問題。如需詳細瞭解在 Android 基準工具中使用模組的方法,請參閱文件。

我們將繼續努力改進 TensorFlow Lite 效能工具,在度量和調整各種裝置上的 TensorFlow Lite 效能時提供更直觀、更實用的工具。

部署:輕鬆擴充套件到多個平臺

如今,多數應用都需同時支援多個平臺。這也是我們構建 TensorFlow Lite 的原因:實現在 Android、iOS、Raspberry Pi 以及其他基於 Linux 的物聯網裝置間的無縫工作。TensorFlow Lite 的所有模型在官方支援的平臺上都是現成可用的,因此您可以專注於建立優質模型,無需擔心該如何根據不同平臺進行調整。

各平臺都有特定的硬體加速器,用於加速模型推理。TensorFlow Lite 已支援在 NNAPI(面向 Android)和 GPU(面向 iOS 和 Android)上執行模型。我們很高興地添加了更多硬體加速器:

在 Android 上,我們支援了可在數百萬臺裝置上使用的

Qualcomm Hexagon DSP

。如此一來,開發者便可在版本低於 Android 8。1 且不支援 Android NN API 的舊版裝置上利用 DSP。

在 iOS 上,我們釋出了 CoreML Delegate,以支援在 Apple 的 Neural Engine 上執行 TensorFlow Lite 模型。

此外,我們也將繼續改進了現有已支援平臺的效能,如下圖所示,我們對比了 2019 年 5 月和 2020 年 2 月的效能。只需升級到最新版 TensorFlow Lite 庫,您便可享受這些改進所帶來的好處。

TensorFlow Lite:從產品原型設計到部署落地

Pixel 4 - 單執行緒 CPU,2020 年 2 月

工作展望

未來幾個月,我們將致力於支援更多用例。與此同時,我們也將繼續改善開發者體驗:

不斷髮布最新、最前沿的裝置端模型,包括為 NLP 任務的 BERT 系列模型和全新視覺模型提供更佳支援。

釋出新教程以及展示更多應用示例,包括如何使用 C/C++ API 在移動裝置上進行推理。

增強 Model Maker 以支援更多工,包括物件檢測和多個 NLP 任務。我們將為 NLP 任務(如問答任務)新增 BERT 支援。如此一來,不具備機器學習專業知識的開發者也可透過遷移學習構建最前沿的 NLP 模型。

擴充套件元資料和 Codegen 工具以支援更多用例,包括物件檢測及更多 NLP 任務。

釋出更多平臺整合以打造更輕鬆的端到端體驗,包括更出色的 Android Studio 和

TensorFlow Hub

整合。

反饋

我們承諾將繼續改進 TensorFlow Lite,同時也期待看到您利用 TensorFlow Lite 構建的模型,以及收到您的反饋。您也在此直接提交,或在微信後臺留言與我們分享您的用例。如要報告錯誤和提 issue,請在 GitHub 上與我們聯絡。

致謝

感謝 Amy Jang、Andrew Selle、Arno Eigenwillig、Arun Venkatesan、Cédric Deltheil、Chao Mei、Christiaan Prins、Denny Zhou、Denis Brulé、Elizabeth Kemp、Hoi Lam、Jared Duke、Jordan Grimstad、Juho Ha、Jungshik Jang、Justin Hong、Hongkun Yu、Karim Nosseir、Khanh LeViet、Lawrence Chan、Lei Yu、Lu Wang、Luiz Gustavo Martins、Maxime Brénon、Mia Roh、Mike Liang、Mingxing Tan、Renjie Liu、Sachin Joglekar、Sarah Sirajuddin、Sebastian Goodman、Shiyu Hu、Shuangfeng Li、Sijia Ma、Tei Jeong、Tian Lin、Tim Davis、Vojtech Bardiovsky、Wei Wei、Wouter van Oortmerssen、Xiaodan Song、Xunkai Zhang、YoungSeok Yoon、Yuqi Li、Yi Zhou、Zhenzhong Lan、Zhiqing Sun 等人員。

如果您想詳細瞭解

本文提及

的相關內容,請參閱以下文件。這些文件深入探討了這篇文章中提及的許多主題:

EfficientNet-Lite (論文)

MobileBERT(論文)

ALBERT-Lite (論文)

BERT (論文)

谷歌開發者官方現已開通知乎專欄:TensorFlow 學習資源站,一站式收錄來自官方的 TensorFlow 相關實用技術資源,歡迎關注,及時收到更新提醒!

想獲取更多深度技術文章?歡迎關注 TensorFlow 官方微信公眾號(TensorFlow_official)!

TensorFlow Lite:從產品原型設計到部署落地

標簽: tensorflow  Lite  模型  Model  Android