Samsung Electronics、Cloud TPU と TensorFlow により Bixby を強化
Google Cloud Japan Team
※この投稿は米国時間 2020 年 12 月 11 日に、Google Cloud blog に投稿されたものの抄訳です。
Android Galaxy スマートフォンのユーザーに広く知られている Bixby は Samsung Electronics が開発したインテリジェントな音声アシスタントで、9 言語に対応し、全世界で 1 億 6,000 万台以上のデバイスに搭載されています。Google は本日、Bixby の音声認識モデルが Cloud TPU を使用したトレーニングにより 18 倍の高速化を達成したことを発表しました。
Bixby や他の音声アシスタントは、自動音声認識(ASR)を使用して音声を文字に変換します。この技術が誕生してからすでに長い期間が経過していますが、依然として完全なものではなく、可能な最高の精度を達成するには ASR モデルで多くの回数にわたってトレーニングと再トレーニングを行えることが重要です。Samsung は Google Cloud の密接なパートナーとして、Google Cloud の機械学習専用プロセッサである Cloud TPU を使用して ASR モデルのトレーニングを高速化し、最終的に Bixby の精度向上を実現しました。
Samsung Electronics のモバイル通信ビジネス、AI 開発グループ バイス プレジデントである KG Kyoung-Gu Woo 氏は、「Samsung Electronics は、Google Cloud のローカル言語によるプレミアム サポートと、リージョンのテクニカル アカウント マネージャーの恩恵を受けられました。サポートと TAM の両方との緊密な協働により、当社は技術の進化を実現しながら、同時に処理時間をわずか半日に短縮できました。当社は、消費者が望む新しいモバイル環境を提供するには協働が鍵となることを確信しています」と述べています。
トレーニング データの増加による精度向上
ディープ ニューラル ネットワークと隠れマルコフモデル(DNN-HMM)のハイブリッド ASR システム アーキテクチャは何年にもわたり、多くの音声入力サービスの標準手法として使用され、Bixby の前世代もこの手法を採用していました。DNN-HMM システムでは音声認識パイプラインに音響、発音、言語のモデルが組み込まれます。しかしトレーニング プロセスが複雑なため、総合的な精度の最適化が困難です。
DNN-HMM ハイブリッド ASR システムの制限を克服するため、Bixby チームは最先端でエンドツーエンドのディープ ラーニング手法を使用してエンジンを刷新することを決定しました。Transformer アーキテクチャを基礎とする単一のディープ ニューラル ネットワーク モデルを活用することで、新しいエンジンはトレーニング プロセスが単純化されただけでなく、膨大なトレーニング データの集積にアクセス可能になりました。
しかし、このシステム変更により新しい課題も生まれました。以前のシステムと同等の精度を達成するため、新しいテストと調整が必要になったことです。さらに、新しい言語への拡大を続けながらライブサービスを最新の状態に維持するため、トレーニングを高速に繰り返すことが重要になりました。これらの要件を満たし、同時に増え続けるトレーニング データを吸収するため、Bixby チームは Cloud TPU を検討することを決定しました。
Cloud TPU でのパフォーマンス最適化
Google は 2013 年に、既存の CPU や GPU のインフラストラクチャでは AI で必要な計算量の増大に対応できないことを認識し、この目的に特化した新しいチップの開発を決定しました。その結果として誕生したのが Tensor Processing Unit(TPU)で、2015 年から Google のデータセンターにデプロイされています。Google はそれ以後に、複数の新世代 TPU チップに加えて TPU Pod という大規模なスーパーコンピューティング システムを開発しました。これは数千もの TPU チップをつなぎ合わせたもので、世界最速の ML トレーニング用スーパーコンピュータです。
また Google は TPU と TPU Pod を Google Cloud 経由で利用できるようにしました。これはスケーラビリティの高い Cloud TPU 構成で、最大 2,048 のコアと 32 TiB のメモリを含めることができます。今日では、ML 研究者やエンジニアは Cloud TPU を使用してより強力で正確なモデルをビルドできるようになっています。そして企業は Cloud TPU のおかげで AI アプリケーションをより短期間で市場に送り出すことができるようになっています。どちらの場合も、貴重な時間と費用の節約になっています。
Cloud TPU の能力を最大限に引き出すため、Bixby チームのエンジニアは Cloud TPU のパフォーマンス最適化に不可欠な Cloud TPU Profiler TensorBoard プラグインを使用しました。チームは TPU 互換性ビューを使用して TPU と互換性のないオペレーションを識別し、それを使用可能な TensorFlow のオペレーションに置き換え、高い利用率を実現しました。比較のため、TPU で実行するため最適化済みの公式にサポートされたモデルも提供しています。
もちろん、Google がサポートすることを目指しているエコシステムは TensorFlow だけではありません。現在では Cloud TPU 上で PyTorch モデルも実行でき、9 月に一般提供された PyTorch / XLA 統合も使用できます。TPU のポテンシャルを解放できる他のプラットフォームについては、JAX をご覧ください。これは Python、自動微分、XLA を組み合わせて、柔軟性が高い、快適で高パフォーマンスの機械学習研究を可能にしたものです。
Google とともに技術的課題を解決する
Bixby チームによる GPU から TPU への移行は円滑に行われたように見えましたが、TPU でトレーニングされたモデルを GPU に戻してテストするとき、チームは奇妙な問題に直面しました。TPU では 正常に動作したモデルが、GPU で推論を行った後に出力の繰り返しが発生するようになったのです。たとえば、「Bixby、今日の天気は?」という音声は「Bixby、今日の天気は?Bixby、今日の天気は?」に変換されるようになりました。
多くの場合、機械学習プロジェクトにおけるこのような技術的な問題のトラブルシューティングは非常に困難です。コード、プラットフォーム、インフラストラクチャ、データのうちどれに問題があるのか、必ずしも明確なわけではないからです。Bixby チームは、Google Cloud チームに原因究明のサポートを依頼しました。カスタマー エンジニアリング、TPU 製品チーム、Google Brain との共同作業の結果、根本原因が判明しました。
Bixby の ASR エンジンのようなシーケンシャル モデルは可変長の入力データを扱いますが、TPU 用の XLA コンパイルでは現在のところ、グラフ構築時にすべてのテンソルのサイズが既知であることが要件になっていました。TPU 上でトレーニングされたモデルは、入力音声の各シーケンスの後に長いパディングが存在することを予測していたのですが、この違いにより、GPU 上でパディングが短縮または削除された場合にセンテンスの終了を確実に予測できなかったのでした。このためセンテンスを終了できなくなり、同じフレーズを繰り返し出力することになったわけです。
根本原因が特定されると、原因への対処が速やか行われました。Bixby チームは、GPU での推論を行うときに各入力音声の末尾にパディングを追加し、TPU 環境をシミュレートすることを決定しました。トレーニングのコードは一切変更されませんでしたが、これによって新しいモデルは GPU でもセンテンスの末尾を正しく予測可能になり、繰り返しの問題は解決しました。
Google Cloud による革新の促進
TPU への移行の結果として、Bixby はトレーニングを 18 倍も高速化できました。自社のオンプレミスの 8 GPU を使用したトレーニング環境では 180 時間を要したトレーニングが、64 コアの v3 Cloud TPU では 10 時間で完了するようになりました。これによりテストの繰り返しが劇的に高速化したことで、チームは新しいエンドツーエンドのアーキテクチャへの移行に成功しました。この移行の結果、単語のエラー率が 4.7% 改善され、従来の 1/10 のサイズにまでモデルが軽量化され、推論が 11 倍高速化されました。
Samsung の Cloud TPU によるテストの詳細については、Bixby チームのエンジニアである Hanbyul Kim が Google Cloud Next OnAir Recap: Seoul で解説したこちらの動画(英語字幕付き)をご覧ください。
-テクニカル ソリューション エンジニア June Oh