概要
TensorFlowは、機械学習および人工知能のためのソフトウェアライブラリである。幅広いタスクに使用できるが、主にニューラルネットワークのトレーニングと推論に使用される。PyTorchなどと並んで、最も人気のあるディープラーニングフレームワークの一つである。TensorFlowはフリーかつオープンソースのソフトウェアであり、Apache License 2.0のもとでリリースされている。
歴史
DistBelief
2011年から、Google Brainはディープニューラルネットワークに基づく独自の機械学習システムとしてDistBeliefを構築した。その利用は、Alphabet傘下の多様な企業において、研究および商用アプリケーションの両方で急速に拡大した。Googleは、Jeff Deanを含む複数のコンピュータ科学者を割り当て、DistBeliefのコードベースをより高速で堅牢なアプリケーション向けライブラリへと簡素化およびリファクタリングした。これがTensorFlowとなった。2009年には、Geoffrey Hintonが率いるチームが一般化されたバックプロパゲーションおよびその他の改良を実装し、これにより大幅に高い精度を持つニューラルネットワークの生成が可能となった。例えば、音声認識におけるエラーが25%削減された。
TensorFlow
TensorFlowはGoogle Brainの第2世代システムである。バージョン1.0.0は2017年2月11日にリリースされた。リファレンス実装は単一デバイス上で動作する一方、TensorFlowは複数のCPUおよびGPU上で実行できる(グラフィックス処理ユニット上の汎用計算向けのオプションのCUDAおよびSYCL拡張を備える)。TensorFlowは64ビットLinux、macOS、Windows、およびAndroidやiOSを含むモバイルコンピューティングプラットフォームで利用可能である。その柔軟なアーキテクチャにより、さまざまなプラットフォーム(CPU、GPU、TPU)間での計算の容易な展開が可能であり、デスクトップからサーバークラスター、モバイルおよびエッジデバイスに至るまで対応する。TensorFlowの計算は、状態を持つデータフローグラフとして表現される。TensorFlowという名前は、そのようなニューラルネットワークが多次元データ配列に対して実行する操作に由来し、その配列はテンソルと呼ばれる。2016年6月のGoogle I/Oカンファレンスで、Jeff DeanはGitHub上の1,500のリポジトリがTensorFlowに言及しており、そのうちGoogleからのものはわずか5つであると述べた。2018年3月、GoogleはJavaScriptでの機械学習向けにTensorFlow.jsバージョン1.0を発表した。2019年1月、GoogleはTensorFlow 2.0を発表し、これは2019年9月に正式に利用可能となった。2019年5月、Googleはコンピュータグラフィックスにおけるディープラーニング向けのTensorFlow Graphicsを発表した。
テンソル処理ユニット(TPU)
2016年5月、Googleはテンソル処理ユニット(TPU)を発表した。これは機械学習専用に構築され、TensorFlow向けに調整された特定用途向け集積回路(ASIC)である。TPUは、低精度演算(例:8ビット)の高スループットを提供するように設計されたプログラム可能なAIアクセラレータであり、モデルのトレーニングよりも使用または実行を指向している。Googleは、1年以上にわたりデータセンター内でTPUを稼働させており、機械学習においてワットあたりの性能が一桁優れた最適化を実現していることを発表した。2017年5月、Googleは第2世代TPUと、Google Compute Engineでの利用可能性を発表した。第2世代TPUは最大180テラフロップスの性能を提供し、64台のTPUのクラスターに編成すると最大11.5ペタフロップスを提供する。2018年5月、Googleは最大420テラフロップスの性能と128GBの高帯域幅メモリ(HBM)を提供する第3世代TPUを発表した。Cloud TPU v3 Podsは100ペタフロップス以上の性能と32TBのHBMを提供する。2018年2月、GoogleはGoogle Cloud Platform上でTPUをベータ版として利用可能にすると発表した。
Edge TPU
2018年7月、Edge TPUが発表された。Edge TPUは、スマートフォンなどの小型クライアントコンピューティングデバイス上でTensorFlow Lite機械学習モデルを実行するために設計された、Googleの専用ASICチップであり、エッジコンピューティングとして知られる。
TensorFlow Lite
2017年5月、Googleはモバイルおよび組み込みデバイス向けの機械学習モデルをサポートするソフトウェアスタックとしてTensorFlow Liteを発表し、2017年11月に開発者プレビューを提供した。2019年1月、TensorFlowチームは、Androidデバイス上のOpenGL ES 3.1 Compute ShadersおよびiOSデバイス上のMetal Compute Shadersを使用したモバイルGPU推論エンジンの開発者プレビューをリリースした。2019年5月、GoogleはTensorFlow Lite Micro(TensorFlow Lite for Microcontrollersとも呼ばれる)とARMのuTensorが統合されることを発表した。2024年にLiteRTと改名された。
TensorFlow 2.0
研究論文におけるTensorFlowの市場シェアがPyTorchの優位に減少していたため、TensorFlowチームは2019年9月にライブラリの新しいメジャーバージョンのリリースを発表した。TensorFlow 2.0は多くの変更を導入し、最も重要なものはTensorFlow eagerであり、自動微分方式が静的計算グラフから、もともとChainerによって普及し後にPyTorchが採用した「Define-by-Run」方式に変更された。その他の主要な変更には、古いライブラリの削除、異なるバージョンのTensorFlow間でのトレーニング済みモデルの相互互換性、およびGPU上の性能の大幅な改善が含まれる。
特徴
自動微分
自動微分は、モデルの各パラメータに対する勾配ベクトルを自動的に計算するプロセスである。この機能により、TensorFlowはモデル内のパラメータの勾配を自動的に計算でき、これは性能を最適化するために勾配を必要とするバックプロパゲーションなどのアルゴリズムに有用である。これを行うために、フレームワークはモデル内の入力テンソルに対して実行された操作の順序を追跡し、適切なパラメータに対する勾配を計算する必要がある。
Eager実行
TensorFlowには「eager実行」モードが含まれており、これは操作が後で実行される計算グラフに追加されるのではなく、即座に評価されることを意味する。Eagerに実行されるコードは、データが計算グラフ内で後でではなく各行のコードで拡張されるため、デバッガーを通じてステップバイステップで検査できる。この実行パラダイムは、そのステップバイステップの透明性によりデバッグが容易であると考えられている。
分散
Eager実行とグラフ実行の両方において、TensorFlowはさまざまな分散戦略を使用して複数のデバイスに計算を分散するためのAPIを提供する。この分散コンピューティングは、TensorFlowモデルのトレーニングおよび評価の実行を高速化できることが多く、AI分野では一般的な手法である。
損失関数
モデルをトレーニングおよび評価するために、TensorFlowは一連の損失関数(コスト関数とも呼ばれる)を提供する。一般的な例には、平均二乗誤差、カテゴリカル交差エントロピー、ヒンジ損失などがある。これらの関数は予測値と実際の値の差を測定し、トレーニング中の最適化プロセスを導く。
メトリクス
TensorFlowには、精度、適合率、再現率、ROC曲線下面積など、モデルの性能を評価するための関数を提供するメトリクスモジュールが含まれる。これらのメトリクスは、トレーニングおよび検証の進行状況を監視するために一般的に使用される。
オプティマイザー
TensorFlowは、確率的勾配降下法(SGD)、Adam、RMSProp、Adagradなど、トレーニング中にモデルパラメータを更新するためのさまざまなオプティマイザーを提供する。これらのオプティマイザーは、損失関数を効率的に最小化するために異なる更新ルールを実装する。
Keras
TensorFlowは、モデルの構築とトレーニングを簡素化する高レベルニューラルネットワークAPIであるKerasと統合されている。Kerasは、レイヤー、モデル、トレーニングループを定義するためのユーザーフレンドリーなインターフェースを提供し、初心者と専門家の両方がアクセスしやすい。
TensorBoard
TensorBoardはTensorFlowに含まれる可視化ツールであり、ユーザーがトレーニングメトリクスを監視し、モデルグラフを可視化し、埋め込みを検査できるようにする。これはデバッグおよびモデルの動作の理解に役立つ。
TensorFlow Serving
TensorFlow Servingは、機械学習モデル向けの柔軟で高性能なサービングシステムであり、本番環境向けに設計されている。モデルのバージョニング、ローリングアウトをサポートし、複数のモデルを同時に処理できる。
TensorFlow Hub
TensorFlow Hubは、再利用可能な機械学習モジュールのためのライブラリである。ユーザーが事前トレーニング済みのモデルコンポーネントを共有および発見できるようにし、転移学習を促進し、ゼロからモデルをトレーニングする必要性を減らす。
TensorFlow Extended(TFX)
TensorFlow Extended(TFX)は、本番MLパイプラインを展開するためのエンドツーエンドのプラットフォームである。データ検証、前処理、トレーニング、サービングのためのコンポーネントが含まれており、スケーラブルで信頼性の高いMLワークフローを可能にする。
アプリケーション
TensorFlowは、画像認識、自然言語処理、音声認識、レコメンデーションシステムなど、幅広いアプリケーションで使用されている。また、物体検出、感情分析、生成的モデリングなどのタスクにおいて、研究および産業の両方で採用されている。その柔軟性とスケーラビリティにより、実験と大規模展開の両方に適している。
関連項目
参考文献
- TensorFlow公式ドキュメント
- Wikipedia: TensorFlow
- Google AIブログ
- TensorFlowリリースノート