ByteQRNN:BERTの1/300のサイズで同等性能なオンデバイスモデル(1/2)

AI

1.ByteQRNN:BERTの1/300のサイズで同等性能なオンデバイスモデル(1/2)まとめ

・トークンフリーモデルは文字列をバイト列として扱うのでモデルサイズを小さくできる
・サイズは小さくできるが推論の待ち時間や計算コストが増加する可能性がある
・GBSTやソフトトークナイゼーションアプローチを用いて計算コストの問題を解決した

2.トークンフリーモデルとは?

以下、ai.googleblog.comより「Efficient Sequence Modeling for On-Device ML」の意訳です。元記事は2022年8月3日、Arun Kandoorさんによる投稿です。

アイキャッチ画像はlatent diffusionでプロンプトはByteQRNN

機械学習(ML:Machine Learning)モデル推論のオンデバイス化(モバイル機器、タブレット等で動かす)に対する需要の高まりは、計算負荷の高いアプリケーションの増加、プライバシーやセキュリティ上の理由から特定のデータをデバイス上に保持する必要性、ネットワーク接続が利用できない可能性がある場合のサービス提供への要望などに起因しています。

しかし、オンデバイス推論には、モデリングからプラットフォームのサポート要件に至るまで、無数の課題があります。これらの課題は、モデルの品質を維持しながら、メモリと計算を最適化するために、異なるアーキテクチャをどのように設計するかに関連しています。

プラットフォームの観点からは、異なる製品間の使い方にうまく一般化できる方法で、操作を特定し、その上に構築することが課題となっています。

以前の研究で、私達はembeddingsを生成するための新しい技術(投影型embeddingsと呼ばれる)とQRNN(pQRNN)のような効率的なアーキテクチャを組み合わせ、それらが多くの分類問題に対して有能であることを証明しました。

これらを蒸留技術で補強することで、エンドツーエンドの品質をさらに向上させることができます。これは効果的なアプローチですが、より大規模で広範な語彙(すなわち、モデルに供給可能なすべてのユニコードまたは単語トークン)には拡張可能でありません。さらに、投影操作の出力自体には、学習可能な重みが含まれておらず、事前学習の優位性を利用する事ができません。

ByT5として紹介されたトークンフリーモデルは、モデルサイズを大きくすることなく事前学習と規模拡大の問題に対処できる、オンデバイスモデリングの良い出発点です。

これは、このアプローチがテキスト入力をバイトのストリームとして扱い(各バイトは0から255の範囲の値を持つ)、embeddingsテーブルのボキャブラリーサイズを約30,000から256に減らすことができるために可能なのです。

ByT5はオンデバイス・モデリングのための魅力的な代替手段を提供しますが、単語レベルの特徴表現からバイト・ストリーム特徴表現に移行すると、シーケンス長が直線的に増加します。平均単語長が4文字で1文字が最大4バイトの場合、バイト・シーケンス長は単語長に比例して増加します。このため、推論の待ち時間や計算コストが大幅に増加する可能性があります。

私達はこの問題に対処するため、SeqFlowLiteライブラリ用に3つの新しいバイトシーケンスモデル(ByteQRNN、ByteTransformer、ByteFunnelTransformer)を開発・リリースしました。

これらは全て教師なしデータで事前学習でき、特定のタスク用に微調整が可能です。これらのモデルは、Charformerによって導入された以下の革新的な技術を活用しています。

バイトレベルで直接操作する勾配型サブワード トークン化(GBST:Gradient-Based Subword Tokenization)アプローチを用いたfast character Transformerベースのモデルや、トークン境界を学習しシーケンス長を短縮できる「ソフト」トークナイゼーションアプローチなどです。

本投稿では、ByteQRNNに焦点を当て、事前学習済みのByteQRNNモデルの性能が、300倍小さいにもかかわらず、BERTと同等であることを実証しています。

シーケンスモデルアーキテクチャ

私達はByteQRNNというエンドツーエンドモデル(下図)を開発しました。

この際、pQRNN、ByT5、Charformerを、モデルサイズを1/4に縮小する学習中量子化(in-training quantization、推論モデルを量子化するために、モデルの活性化と重みの最小・最大フロート値を追跡する手法)などのプラットフォーム最適化とともに活用しました。

まず、ByteSplitter操作で入力文字列をバイトストリームに分割し、語彙サイズ259(256 + メタトークン3個追加)の小さなembeddingテーブルに供給します。

embedding 層からの出力はGBSTレイヤーに送られます。GBSTレイヤーは学習中量子化を備え、潜在的なサブワードでエンドツーエンドの学習を可能にしながら、バイトレベルの特徴表現とサブワード トークン化の効率性を兼ね備えています。

各サブワードのブロック長を数え上げ、各ストライドトークン位置(言い換えれば、一定の間隔で選択したトークン位置)で、量子化した密なレイヤーで計算したスコアと結合することにより、バイトストリームシーケンスを「ソフト」トークン化します。

次に、バイトストリームを管理可能なシーケンス長にダウンサンプリングし、エンコーダレイヤーに供給します。

GBSTレイヤーからの出力は、エンコーダの計算を効率的に行うために、より低いシーケンス長にダウンサンプリングすることができます。

または、Funnel Transformerのようなエンコーダで使用することもできます。これは、クエリ長をプールし、self-attention計算を削減してByteFunnelTransformerモデルを作成するものです。

エンドツーエンドモデルのエンコーダは、SeqFlowLiteライブラリのTransformerなど他のエンコーダレイヤーに置き換えて、ByteTransformerモデルを作成することができます。


バイトストリーム入力を用いた一般的なエンドツーエンドシーケンスモデルの図
ByteQRNNモデルは、SeqFlowLiteライブラリのQRNNエンコーダを使用しています。

3.ByteQRNN:BERTの1/300のサイズで同等性能なオンデバイスモデル(1/2)関連リンク

1)ai.googleblog.com
Efficient Sequence Modeling for On-Device ML

2)github.com
google-research / byt5
models/research/seq_flow_lite/models/

タイトルとURLをコピーしました