2017年5月のGoogle I/Oで発表があったTensorFlow(テンソルフロー)のモバイル・IoTバージョンですが、昨日11月14日にGoogle DevelopersのブログでTensorFlow Lite(テンソルフロー ライト)のディベロッパープレビューが公表されました。
現時点では、まだディベロッパープレビューですので、今後色々な機能が加わると思いますが、ひとまず本日からAndroidとiOSの両方で利用が可能となります!
本記事では、TensorFlow Liteの概要をまとめました。
TensorFlowですが、日本での読み方は主に2パターンあります。「テンソルフロー」と読む方と、一方「テンサーフロー」と読む方もいらっしゃいます。Google内部では「テンサーフロー」で統一されているようですが、他の機械学習エンジニアの方とお話をすると「テンソルフロー」が多い気がします。本記事では、日本語表記の際は「テンソルフロー」で統一します。
TensorFlow Liteの目的
細かい特徴は後ほど書きますが、そもそもなぜテンソルフロー ライトが開発されたのか?を紐解きましょう。TensorFlow Liteですが、携帯電話のデバイス上でモデルの訓練を行う為ではなく、すでに訓練されたモデルを使って、デバイス上で推論を素早く短時間に行うために開発されました。
ディープラーニングや機械学習でのモデルの訓練は、非常に膨大の量のデータを使います。少し荒い言い方となりますが、処理能力が劣る携帯電話のデバイス上でそれを行うのではなく、すでに訓練されたモデルに新しいデータを適用するのを楽にするのがTensorFlow Liteというわけです。
TensorFlow Lite(テンソルフローライト)の特徴
TensorFlowですが、Googleが開発した、現在一番使われている(と言われている)機械学習のオープンソースソフトウェアライブリです。今回、公開となりましたTensorFlow Liteですが、モバイルやIoTデバイス上で動かすことを想定して、全く新しく1からコーディングされたライブラリとなります。
テンソルフロー ライト 特徴
- 軽い (Lightweight)
処理能力が低い携帯電話のデバイス上でも起動や初期化が素早く行えるよう設計されています。 - 複数のプラットフォームで動く(Cross-platform)
TensorFlow Liteは色々なプラットフォーム上で動かすことが可能になります。今回のプレビューの初期段階では、一先ずアンドロイドOSとiOSが対応しています。 - 早い(Fast)
携帯電話やIotなどに最適化されており、モデルの読み込みなどが劇的に改善されています。
最新機種の携帯電話では、機械学習を処理するためのハードウェアなどが組み込まれているケースも増えてきました。TensorFlow Liteでは、アンドロイド・ニューラルネットワーク・APIの対応もしているそうです。(Android Oreo v8.1で搭載された、スマートフォン上でニューラルネットワークを動かす仕組み)
テンソルフローライトの設計構造
こちらがTensorFlow Liteの現時点でのアーキテクチャです。各構成コンポーネントを見てみましょう。
- Trained TensorFlow Model
ディスク上に保存されたすでに訓練済みのTensorFLowのモデル。 - TensorFlow Lite Converter
TensorFlowのモデルをTensorFlow Liteが使えるようにするコンバーター(変換器)。 - TensorFlow Lite Model File
FlatBuffers(英語)に準じたTensorFlow Liteのモデルファイルで最小化かつ最速に動くよう最適化されている。 - Java API
C++とAndroidのラッパー - C++ API
TensorFlow Liteのモデルファイルを読み込み、インタープリターを発動させます。AndroidとiOSの両方で使えます。 - Interpreter(インタープリター)
オペレーターを使ってTensorFlow Liteのモデル実行します。このインタープリターですが、部分的なオペレーターの実行も可能らしいです。オペレーター無しだとたったの70KBで、全てのオペレーターを読み込んでも300KB程度とのこと。TensorFlow Mobile(以前からあるテンソルフローの携帯電話バージョン)でさえ、通常のオペレーターで1.5Mが必要だったことを考えると、この部分の軽量化がすごいですね!
サポートしているモデル
TensorFlow Lite(テンソルフローライト)ですが、現時点で3つの既存の訓練済みモデルのサポートをしています。どれもGoogleや他の組織が携帯電話用に別途開発を進めていたモデルですが、これがTensorFlow Liteではサポートされているとのこと。非常に便利ですね。
- MobileNet(英語)
1000個以上のオブジェクトを認識できる事前に訓練されたビジョン系のモデル。もともと携帯電話上で使われることを想定しており軽量かつ効率的。 - Inception v3 (英語)
ILSVRCという大規模画像データセットを使った画像識別タスク用に1,000クラスの画像分類を行うよう学習されたモデルで、非常に高い精度の画像識別が可能。 - Smart Reply (英語)
すでにGmailで使っている方も多いと思いますが、文面を機械学習して3つの返信の提案をしてくれるあれです。
まとめ
今回の記事ではTensorFlow Liteの現時点でのプレビューの概要をまとめましたが、また後日に実際に触ってみて、レビューを書きたいと思います!
すでにTensorFlow Liteを試したことがある方がいらっしゃれば、ぜひコメント欄にてご感想を教えてください!