Keras 3 — Deep Learning Đa Backend
Keras 3 chạy trên JAX, TensorFlow, PyTorch và OpenVINO — một codebase, backend bất kỳ. Tăng tốc 20-350%, keras.ops, KerasCV/Hub. 64k sao GitHub.
Keras 3 là framework deep learning đa backend của keras-team — “deep learning cho con người.” Thay đổi chính so với Keras 2: nó không còn phụ thuộc TensorFlow. Một codebase giờ chạy được trên JAX, TensorFlow, PyTorch và OpenVINO (chỉ inference). ~64k sao GitHub, hơn 5 triệu developer dùng.
Vì Sao Đa Backend Quan Trọng#
Trước đây bạn phải chọn framework và sống với nó. Keras 3 tách API khỏi lớp tính toán bên dưới:
- Không khóa framework — đổi backend bằng cách sửa một biến môi trường
- Hiệu năng tốt nhất — chọn backend nhanh nhất cho từng model. Benchmark Keras cho thấy tăng tốc 20-350%, JAX thường thắng trên GPU/TPU/CPU
- Tùy chọn hệ sinh thái — model Keras là
ModulePyTorch, export được thànhSavedModelTensorFlow, hoặc tạo thành hàm JAX stateless
Chọn Backend#
export KERAS_BACKEND="jax" # hoặc: tensorflow, torch, openvinobashHoặc sửa ~/.keras/keras.json. Phiên bản tối thiểu của backend (Keras 3 stable): TensorFlow 2.16.1, JAX 0.4.20, PyTorch 2.1.0, OpenVINO 2025.3.
| Backend | Tốt nhất cho |
|---|---|
| JAX | Huấn luyện/inference nhanh nhất trên GPU & TPU, XLA |
| TensorFlow | Stack TF hiện có, pipeline tf.data |
| PyTorch | Hệ sinh thái HF, model động, nghiên cứu |
| OpenVINO | Tối ưu inference CPU (Intel) |
keras.ops — Một API Kiểu NumPy#
Keras 3 có keras.ops, một API NumPy đầy đủ chạy trên mọi backend — custom layer, loss, metric chạy ở đâu cũng được mà không cần import tf. / torch.:
import keras
import numpy as np
x = keras.ops.ones((3, 3))
y = keras.ops.matmul(x, keras.ops.transpose(x))pythonPipeline Dữ Liệu Đa Framework#
Model Keras 3 huấn luyện được với mọi pipeline — tf.data.Dataset, torch.utils.data.DataLoader, mảng NumPy, DataFrame Pandas, hoặc keras.utils.PyDataset. Không cần viết lại.
API Cấp Cao Đầy Đủ#
Tất cả phần quen thuộc đều có — layers, metrics, losses, optimizers, callbacks, vòng lặp huấn luyện, lưu/serialize — và không phụ thuộc backend. train_step() tùy chỉnh phải viết riêng cho từng backend, nhưng compute_loss() chạy ở mọi nơi.
Ví dụ: Cùng Model, Backend Bất Kỳ#
import os
os.environ["KERAS_BACKEND"] = "jax" # đổi: "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)pythonCùng code chạy trên JAX, TF hoặc PyTorch.
Model Tiền Huấn Luyện#
- Keras Applications: cả 40 model (ResNet, EfficientNet, MobileNet…) trên mọi backend
- KerasCV & KerasHub: BERT, OPT, Whisper, T5, StableDiffusion, YOLOv8, SegmentAnything — mọi backend
Di Trú Từ Keras 2 / tf.keras#
Model chỉ dùng built-in layer di trú gần như không thay đổi. Code tf.* tùy chỉnh cần thay bằng keras.ops, và override train_step() riêng theo backend. Sau khi di trú, bạn đổi sang JAX hoặc PyTorch chỉ bằng một biến env.
Ưu & Nhược Điểm#
Ưu điểm:
- Viết một lần, chạy trên 4 framework
- Không khóa framework — hiếm có trong 2026
- Hiệu năng đỉnh nhờ backend JAX
- Cùng đội ngũ (François Chollet) đã tạo tf.keras
Nhược điểm:
- Custom training loop cần code riêng theo backend
- OpenVINO chỉ dành cho inference
- API distribution mới (device mesh) hiện chỉ có cho JAX
- Custom op niche có thể cần fallback riêng theo backend
Kết Luận#
Keras 3 là thứ gần nhất với một API deep learning thống nhất trong năm 2026. Nó không chọn người thắng giữa TensorFlow, PyTorch và JAX — nó để bạn viết model một lần và chạy ở đâu cũng được, lấy hiệu năng tốt nhất mỗi framework cung cấp. Với đội ngũ làm thư viện hoặc phục vụ nhiều đối tượng dùng, đây ngày càng là lựa chọn mặc định.