TensorFlow
TensorFlowはGoogleのオープンソースMLフレームワークで、サーバー、ブラウザー、スマートフォン上でモデルを学習、デプロイできます。高水準APIとしてKerasを備えています。
TensorFlowは、GoogleがApache 2.0ライセンスの下で2015年11月に公開したオープンソースの機械学習(ML)フレームワークです。Google Brainチームが社内の研究や製品向けに開発しました。深層学習などの数値計算プログラムでは、テンソル(多次元の数値配列)に対する演算として計算を表現します。TensorFlowは演算を自動微分し、最適化されたグラフにコンパイルして、CPU、GPU、TPUで実行します。そのエコシステムは、学習からモデルデプロイまでのMLOps全体をカバーします。モデル定義用のKeras、実験追跡用のTensorBoard、本番環境でのモデルサービング用のTensorFlow Serving、ブラウザー向けのTensorFlow.js、そしてエッジAIを実行するスマートフォンや組み込みデバイス向けの、旧称TensorFlow LiteであるLiteRTが含まれます。2026年3月のTensorFlow 2.21で、Googleは今後のTensorFlow開発をセキュリティとバグ修正、依存関係の更新、コミュニティからの貢献に注力すると説明し、新しい生成AIプロジェクトにはKeras 3、JAX、またはPyTorchを案内しました。
TensorFlowの仕組み#
TensorFlow 1.xでは、ユーザーはまず静的計算グラフを構築し、その後セッション内で実行していました。2019年にリリースされたTensorFlow 2.0では、即時実行がデフォルトとなり、演算は通常のPythonコードと同様に直ちに実行される一方、グラフは最適化手段として引き続き利用されます。 tf.functionでデコレートされた関数は、入力シグネチャごとに一度トレースされてグラフに変換され、そのグラフはTensorFlowによる最適化やXLAコンパイラでのコンパイルが可能で、Pythonを使わずにデプロイできるようSavedModel形式で保存できます。tf.GradientTapeはフォワードパスの演算を記録し、TensorFlowが誤差逆伝播と勾配降下法の勾配を計算できるようにします。このコードはその両方を行います。
import tensorflow as tf
w = tf.Variable([[1.0], [-2.0]])
x = tf.constant([[3.0, 4.0]])
@tf.function # trace the Python function into a TensorFlow graph on the first call
def loss_fn(x):
print("Tracing") # Python code runs only while tracing, not on every call
return tf.reduce_sum((x @ w) ** 2)
# Record operations on a tape to compute the gradient of the loss with respect to w
with tf.GradientTape() as tape:
loss = loss_fn(x)
gradient = tape.gradient(loss, w)
loss_fn(x) # same input shape and dtype: reuses the traced graph without printing
print(f"loss {loss.numpy()}, gradient {gradient.numpy().ravel()}")Tracingを一度出力し、続けてloss 25.0, gradient [-30. -40.]を出力します。2回目の呼び出しではPython本体を実行せず、キャッシュされたグラフを実行しています。また、w = (1, -2)における(3w₁ + 4w₂)²の勾配は2 × (-5) × (3, 4)です。分散学習では、tf.distributeの戦略によって、複数のGPU、TPUスライス、またはマシンにモデルを複製します。
TensorFlowのエコシステム#
- Keras: レイヤーとモデルの定義、ならびに
fitを用いた学習のための高レベルAPIです。TensorFlow 2.16以降、TensorFlowをインストールするとKeras 3もインストールされます。Keras 3はJAXやPyTorchでも動作します。 - TensorBoard:トレーニング中の損失曲線、指標、ヒストグラム、モデルグラフを表示するダッシュボードです。Ultralytics YOLOのトレーニング実行を含む、ほかのフレームワークが出力したログも読み取ります。TensorFlow 2.21では依存関係としてインストールされなくなりました。
- TensorFlow Serving: SavedModelを読み込み、gRPCまたはREST経由で予測リクエストに応答するサービングシステムです。モデルを停止せずに入れ替えられるバージョン管理機能を備えています。
- TFX: データ検証、学習、評価、承認済みモデルのサービング環境へのデプロイを連結する、本番機械学習向けのパイプラインフレームワークです。
- TensorFlow.js: ブラウザーとNode.jsでモデルの実行および学習を行うため、データをサーバーに送信せずにユーザーのデバイス上で推論できます。
- LiteRT: Android、iOS、組み込みLinux、マイクロコントローラー向けのGoogleのオンデバイスランタイムで、2024年9月にTensorFlow Liteから名称変更されました。TensorFlow、PyTorch、またはJAXから変換した
.tfliteモデルを実行し、モバイルGPUやNPUによるアクセラレーションに対応します。
TensorFlowとPyTorch、JAXの比較#
- PyTorchとTensorFlowの比較: PyTorchは当初から即時実行を基本としており、
torch.compileによってグラフコンパイルにも対応しています。新しい研究コードやオープンウェイトモデルではデフォルトのフレームワークとなっています。一方、TensorFlowはサーバー、ブラウザー、モバイルデバイス向けの成熟したデプロイスタックが強みです。 - JAX: 合成可能な変換を備えたGoogleのNumPyスタイルのライブラリです。微分には
grad、XLAコンパイルにはjit、ベクトル化にはvmapを使います。GoogleはJAXを使ってGeminiモデルを学習しています。 - Keras: 独立したエンジンではなく、高レベルAPIです。Keras 3のコードはTensorFlow、JAX、PyTorchのいずれでも実行できるため、モデル定義によってプロジェクトが特定のフレームワークに限定されることはありません。
TensorFlowランタイム向けのモデル変換#
他のフレームワークで学習したモデルをTensorFlowのデプロイツールで使うには、コンバーターを利用します。onnx2tfはONNXグラフをTensorFlow SavedModelとして再構築し、jax2tfはJAX関数をTensorFlow関数としてラップします。また、GoogleのLiteRT TorchコンバーターはPyTorchからLiteRTモデルを直接生成します。Ultralytics YOLOモデルはPyTorchで記述されており、そのエクスポートモードでは、YOLO26向けにこれらの経路を利用します。format="saved_model"はONNXをエクスポートし、onnx2tfでSavedModelに変換してTensorFlow Servingで利用します。format="edgetpu"はCoral Edge TPU向けのINT8モデルをコンパイルします。また、format="litert"はLiteRT Torchを使用するため、TensorFlowのインストールは不要です。次のコードはSavedModelをエクスポートします。
from ultralytics import YOLO
# Load the smallest YOLO26 detection model
model = YOLO("yolo26n.pt")
# Convert through ONNX to a TensorFlow SavedModel directory
path = model.export(format="saved_model")
print(f"SavedModel: {path}")エクスポートによってyolo26n_saved_modelフォルダーが作成されます。このフォルダーはtf.saved_model.loadでPythonから読み込めるほか、Ultralytics YOLO自体でもYOLO("yolo26n_saved_model")を使って実行できます。










