Keras 3: framework deep learning đa backend
Keras 3 làm tốt đúng một việc: viết model một lần rồi chạy trên JAX, TensorFlow, hoặc PyTorch mà không đụng đến training loop. Điểm đánh đổi là bạn phải chọn backend trước khi import, và trộn code riêng của một backend vào sẽ phá mất mục đích đó. Với team đã dùng tf.keras, nâng cấp gần như chỉ là đổi tên; với người dùng PyTorch muốn tốc độ của JAX, đây là lối đi trung thực hơn.
Keras 3 là gì?
Keras 3 là một framework deep learning đa backend, chạy cùng một API Python trên nền JAX, TensorFlow, hoặc PyTorch, cộng thêm backend OpenVINO chỉ dùng để suy luận khi triển khai. Các bản Keras trước đây đi kèm sẵn trong TensorFlow dưới dạng tf.keras, gắn chặt với một engine duy nhất; Keras 3 tách API khỏi engine thực thi, để backend trở thành một lựa chọn theo từng dự án, không phải một phụ thuộc cố định.
Tính năng chính của Keras 3
- ✓Chạy nguyên vẹn trên JAX, TensorFlow, hoặc PyTorch — đặt biến KERAS_BACKEND (hoặc sửa ~/.keras/keras.json) trước khi import, cùng một đoạn code model sẽ chạy trên bất kỳ engine nào bạn chọn.
- ✓Layer, model và metric tùy biến viết theo API của Keras có thể đưa thẳng vào một training loop viết tay bằng TF, JAX, hoặc PyTorch thuần.
- ✓Nhận cả pipeline tf.data.Dataset lẫn PyTorch DataLoader làm input, bất kể backend nào đang chạy.
- ✓Có định dạng lưu model .keras, được README nêu là để thay thế đường lưu SavedModel cũ của tf.keras.
- ✓Backend OpenVINO chỉ dùng để suy luận (inference), tách riêng khỏi ba backend có thể huấn luyện.
- ✓Model tf.keras cũ không dùng thành phần tùy biến chạy ngay trên JAX hoặc PyTorch mà không sửa code; model có custom train_step hoặc layer riêng thường cần viết lại ngắn theo hướng backend-agnostic.
Cài đặt Keras 3 và chọn backend
Cài Keras 3 từ PyPI bằng `pip install keras --upgrade`, sau đó thêm một backend: `tensorflow`, `jax`, hoặc `torch`. Backend OpenVINO cài riêng và chỉ phục vụ suy luận, không huấn luyện được. Keras 2 vẫn còn, đóng gói riêng thành `tf-keras`, nếu bạn chưa muốn chuyển. Keras 3 hỗ trợ trực tiếp Linux và macOS; trên Windows, README khuyên dùng WSL2. Phiên bản backend tối thiểu theo bảng tương thích: TensorFlow 2.16.1, JAX 0.4.20, PyTorch 2.1.0, OpenVINO 2026.2.0. Build từ source: cài `requirements.txt`, chạy `python pip_build.py --install` từ thư mục gốc repo, và chạy `./shell/api_gen.sh` nếu PR của bạn đụng tới API public keras_export. Để có GPU, file `requirements.txt` thường chỉ kéo bản CPU — bạn cần file `requirements-{backend}-cuda.txt` riêng cho từng backend, và README khuyên dùng một môi trường riêng cho mỗi backend (ví dụ dùng `conda create -n keras-jax python=3.10`) để tránh xung đột phiên bản CUDA giữa các backend.
Viết code không phụ thuộc backend với Keras 3
Đặt backend trước khi import bất cứ thứ gì: export `KERAS_BACKEND=jax` (hoặc `tensorflow`/`torch`) trong shell, hoặc sửa key backend trong `~/.keras/keras.json`. Trong notebook như Colab, đặt `os.environ["KERAS_BACKEND"]` trước dòng `import keras`. Sau khi import, backend bị khóa cho tiến trình đó. Nếu bạn đang chuyển một dự án tf.keras cũ, README gọi Keras 3 là drop-in replacement trên backend TensorFlow: đổi các lệnh `model.save()` sang định dạng `.keras` là phần còn lại nên chạy y nguyên. Model không có layer hay train_step tùy biến thường chạy ngay trên JAX hoặc PyTorch mà không cần sửa code; model có thành phần tùy biến thường cần viết lại ngắn theo hướng backend-agnostic, và README mô tả việc này thường mất vài phút chứ không phải thiết kế lại toàn bộ. Việc nạp dữ liệu cũng không bị khóa theo backend — cùng một model có thể nhận pipeline tf.data.Dataset hoặc DataLoader của PyTorch, bất kể backend nào trong ba backend huấn luyện đang chạy.
Điểm mạnh
- ✓Đổi backend chỉ là sửa một biến môi trường hoặc file config, không phải viết lại, miễn model tránh code custom train_step/layer.
- ✓Cùng một đoạn code model huấn luyện được trên pipeline tf.data.Dataset lẫn PyTorch DataLoader — không cần chuẩn hóa về một thư viện load dữ liệu duy nhất.
- ✓Dự án tf.keras dùng bộ layer chuẩn chuyển đổi gần như chỉ bằng việc nâng version, theo README.
- ✓Component Keras tùy biến có thể đưa thẳng vào training loop viết tay bằng TensorFlow, JAX, hoặc PyTorch thuần thay vì gọi fit() của Keras, cho team muốn kiểm soát ở mức thấp mà không bỏ layer API.
Hạn chế của Keras 3
- △Backend phải được chọn trước lần import keras đầu tiên (qua KERAS_BACKEND hoặc ~/.keras/keras.json) và giữ cố định suốt tiến trình đó — không thể chạy song song TensorFlow và JAX trong cùng một script.
- △OpenVINO chỉ lo phần model.predict() — bạn vẫn cần TensorFlow, JAX, hoặc PyTorch để thực sự huấn luyện model.
- △Custom train_step hoặc layer tùy biến từ một dự án tf.keras cũ không tự động chuyển được — đưa chúng chạy trên backend khác là một bước làm tay, không phải bật một flag.
- △Cài GPU đòi hỏi chọn đúng file requirements-{backend}-cuda.txt và, theo README, dùng một môi trường riêng cho mỗi backend để tránh xung đột CUDA — có ma sát setup thật sự nếu bạn muốn cài GPU cho nhiều hơn một backend cùng lúc.
Lựa chọn thay thế cho Keras 3
Câu hỏi thường gặp
Keras 3 chạy trên bốn backend: TensorFlow, JAX, và PyTorch để huấn luyện đầy đủ, cộng thêm OpenVINO chỉ để suy luận. Bạn chọn một backend cho mỗi tiến trình bằng cách đặt biến môi trường KERAS_BACKEND hoặc sửa file config ~/.keras/keras.json, và việc chọn phải diễn ra trước khi bạn import package keras.
Code tf.keras cũ được thiết kế để chạy được với Keras 3 như một drop-in replacement, miễn bạn ở lại backend TensorFlow, theo README — chỉ cần đảm bảo các lệnh model.save() dùng định dạng .keras mới. Model không có layer hay train_step tùy biến còn có thể chạy ngay trên backend JAX hoặc PyTorch.
Đổi backend trong Keras 3 nghĩa là đặt biến môi trường KERAS_BACKEND, hoặc key backend trong ~/.keras/keras.json, thành `tensorflow`, `jax`, hoặc `torch` trước khi import package keras — backend không đổi được nữa sau khi package đã được import trong tiến trình đó.
Keras 3 phát hành như một bản ổn định với bảng tương thích backend rõ ràng (tối thiểu TensorFlow 2.16.1, JAX 0.4.20, PyTorch 2.1.0, OpenVINO 2026.2.0), và README mô tả nó như một drop-in replacement cho đường production tf.keras trên backend TensorFlow. Độ ổn định trên JAX hoặc PyTorch phụ thuộc vào việc model của bạn có chỉ dùng component chuẩn của Keras hay không.
README của Keras 3 nêu mức tăng tốc từ 20% đến 350% so với framework khác, tùy vào backend bạn chọn cho một kiến trúc model cụ thể — thường là JAX, theo README, kèm trang benchmark liên kết. Mức tăng thực tế khác nhau theo model và backend, nên trang benchmark đó của README là nơi nên kiểm tra cho kiến trúc của riêng bạn.
Keras 3 phát hành theo giấy phép Apache-2.0, một giấy phép mã nguồn mở cho phép dùng thương mại, chỉnh sửa, và phân phối lại miễn là bạn giữ nguyên thông báo giấy phép và không ngụ ý được dự án Keras chứng thực. Repository trên GitHub liệt kê Apache-2.0 là giấy phép duy nhất.
Vấn đề mà Keras 3 giải quyết
Một model xây bằng tf.keras chỉ chạy trên engine của TensorFlow, còn model xây bằng PyTorch thuần hoặc Flax/JAX chỉ chạy trên engine đó — nên một team chọn TensorFlow từ đầu rồi sau này muốn tốc độ huấn luyện của JAX, hoặc ngược lại, sẽ phải viết lại phần code xây model, chứ không chỉ script huấn luyện. Keras 3 sinh ra để tách API layer/model khỏi engine thực thi, để việc viết lại đó không còn cần thiết.
Trường hợp sử dụng tốt nhất
- •Chuyển một dự án tf.keras hiện có ra khỏi sự phụ thuộc TensorFlow mà không phải viết lại toàn bộ.
- •Thử nghiệm trên eager execution của PyTorch, rồi chuyển cùng model đó sang JAX để huấn luyện nhanh hơn.
- •Xây một codebase duy nhất cho model vision, NLP, audio, hoặc timeseries mà vẫn cần chạy trên hạ tầng gắn với backend cụ thể.
- •Triển khai model đã huấn luyện chỉ để suy luận qua backend OpenVINO.
Nên dùng — và nên bỏ qua khi nào
Nên thử Keras 3 nếu bạn đã viết code kiểu tf.keras và muốn có lựa chọn huấn luyện trên JAX hoặc PyTorch mà không phải duy trì ba bản định nghĩa model riêng biệt, hoặc nếu bạn đang chọn framework deep learning đầu tiên và muốn hoãn quyết định TensorFlow-hay-PyTorch. Nên bỏ qua nếu team bạn đã có codebase sâu, gắn chặt với PyTorch module thuần hoặc phong cách functional của JAX — lớp trừu tượng layer/model của Keras nằm trên đó và thêm một lớp chuyển đổi bạn có thể không cần. Cũng nên bỏ qua nếu việc cần chỉ là suy luận qua OpenVINO, vì backend đó không huấn luyện được.
Repo liên quan
Vẫn đang phân vân về keras?
Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về keras.
