blog.dopana

Back

Keras 3はkeras-teamによるマルチバックエンド深層学習フレームワーク — 「人のための深層学習」。Keras 2との最大の違い:TensorFlowへの依存がなくなりました。1つのコードベースがJAX、TensorFlow、PyTorch、OpenVINO(推論のみ)で動作。~64k GitHubスター、500万人以上の開発者が利用。

なぜマルチバックエンドか#

従来はフレームワークを選び、それに従うしかありませんでした。Keras 3はAPIを計算基盤から分離します:

  • ロックインなし — 環境変数1つでバックエンドを切替
  • 最良の性能 — モデルごとに最速のバックエンドを選択。Kerasのベンチマークでは20-350%の高速化、GPU/TPU/CPUでは通常JAXが勝利
  • エコシステムの選択肢 — KerasモデルはPyTorchのModuleであり、TensorFlowのSavedModelとしてエクスポートでき、JAXのステートレス関数としてもインスタンス化可能

バックエンドの選択#

export KERAS_BACKEND="jax" # または: tensorflow, torch, openvino
bash

または~/.keras/keras.jsonを編集。各バックエンドの最小バージョン(Keras 3安定版):TensorFlow 2.16.1、JAX 0.4.20、PyTorch 2.1.0、OpenVINO 2025.3。

バックエンド最適な用途
JAXGPU・TPUで最速の訓練/推論、XLA
TensorFlow既存のTFスタック、tf.dataパイプライン
PyTorchHFエコシステム、動的モデル、研究
OpenVINOCPU推論の最適化(Intel)

keras.ops — 統一されたNumPyライクAPI#

Keras 3には全バックエンドで動く完全なNumPy APIであるkeras.opsが付属 — カスタムレイヤー、損失関数、メトリクスがtf. / torch.インポートなしでどこでも動作:

import keras
import numpy as np

x = keras.ops.ones((3, 3))
y = keras.ops.matmul(x, keras.ops.transpose(x))
python

クロスフレームワークのデータパイプライン#

Keras 3モデルはどのパイプラインでも訓練可能 — tf.data.Datasettorch.utils.data.DataLoader、NumPy配列、Pandas DataFrame、keras.utils.PyDataset。書き換えは不要。

完全な高レベルAPI#

レイヤー、メトリクス、損失関数、オプティマイザ、コールバック、訓練ループ、保存/シリアライズ — すべてがバックエンド非依存で用意されています。カスタムtrain_step()はバックエンドごとに書く必要がありますが、compute_loss()はどこでも動作します。

例:同じモデル、どのバックエンドでも#

import os
os.environ["KERAS_BACKEND"] = "jax"   # 切替: "tensorflow", "torch"

import keras

model = keras.Sequential([
    keras.Input(shape=(28, 28)),
    keras.layers.Flatten(),
    keras.layers.Dense(128, activation="relu"),
    keras.layers.Dense(10, activation="softmax"),
])
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy")
model.fit(x_train, y_train, epochs=5)
python

同じコードがJAX、TF、PyTorchで動作します。

事前学習済みモデル#

  • Keras Applications: 40モデルすべて(ResNet、EfficientNet、MobileNet…)が全バックエンド対応
  • KerasCV & KerasHub: BERT、OPT、Whisper、T5、StableDiffusion、YOLOv8、SegmentAnything — 全バックエンド

Keras 2 / tf.kerasからの移行#

組み込みレイヤーのみのモデルはほぼ無変更で移行可能。カスタムのtf.*コードはkeras.opsへの置換が必要で、バックエンド固有のtrain_step()オーバーライドはバックエンドごとに実装します。移行後は環境変数1つでJAXやPyTorchへ切替可能。

長所と短所#

長所:

  • 一度書けば4つのフレームワークで動作
  • フレームワークロックインなし — 2026年では貴重
  • JAXバックエンドで最先端の性能
  • tf.kerasを作った同じチーム(François Chollet)が開発

短所:

  • カスタム訓練ループはバックエンドごとのコードが必要
  • OpenVINOは推論のみ
  • 新しいdistribution API(device mesh)は当面JAXのみ
  • ニッチなカスタムopはバックエンド固有のフォールバックが必要な場合も

まとめ#

Keras 3は、2026年において分野全体で最も統一された深層学習APIに近い存在です。TensorFlow、PyTorch、JAXのどちらが勝つかを選ぶのではなく、一度書いたモデルをどこでも実行し、各フレームワークの最高性能を引き出せます。ライブラリを作るチームや複数のユーザーに提供するチームにとって、標準的な推奨になりつつあります。

参考資料#