Context
🚀**A great opportunity to contribute to two popular AI projects with just one PR:: Keras 3 and OpenVINO.**🚀
Keras 3 enables seamless switching between supported backends—PyTorch, TensorFlow, and JAX—for both training and inference of traditional models and LLMs/GenAI pipelines. Since Keras 3.8.0, we've introduced a preview version of the OpenVINO backend (for inference only), allowing developers to leverage OpenVINO for model predictions directly within Keras 3 workflows. Activating the OpenVINO backend requires just one line of code to run inference on Keras 3-trained models. Here’s an example for a BERT model from Keras Hub:
import os
os.environ["KERAS_BACKEND"] = "openvino"
import numpy as np
import keras
import keras_hub
features = {
"token_ids": np.ones(shape=(2, 12), dtype="int32"),
"segment_ids": np.array([[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0]] * 2),
"padding_mask": np.array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0]] * 2),
}
classifier = keras_hub.models.BertTextClassifier.from_preset("bert_base_en_uncased", num_classes=4, preprocessor=None)
output = classifier.predict(features)
Currently, the OpenVINO backend lacks support for some operations. Our goal is to resolve this gap and to optimize it for inference on Intel devices—including CPUs, integrated GPUs, discrete GPUs, and NPUs—by supporting as many models as possible while delivering optimal performance. We aim to make the OpenVINO backend the No. 1 choice for model inference within the Keras 3 workflow.
What needs to be done?
Steps to Contribute
- Set up your developer environment:
- fork and clone keras repo
- install requirements for OpenVINO backend development
pip install -r requirements-openvino.txt. The requirements file can be found in the root directory of cloned repository
-
Provide decomposition in Python for numpy.diagonal using OpenVINO opset
-
Include tests by removing line corresponding to the implemented operation in excluded_concrete_tests.txt file.
-
Make sure that tests are passing
- create
pytest.ini file and place it in the root directory of the clone repository. This file should contain the following content:
[pytest]
env =
KERAS_BACKEND=openvino
- run tests
pytest-c ./pytest.ini ./keras/src/ops/numpy_test.py
- Commit your changes and create PR in keras repository. Mention @rkazants in PR description for review.
Below is an exemplar PR of how support for numpy.amax has been implemented.
Example Pull Requests
Resources
Contact points
@rkazants
Ticket
No response
Context
🚀**A great opportunity to contribute to two popular AI projects with just one PR:: Keras 3 and OpenVINO.**🚀
Keras 3 enables seamless switching between supported backends—PyTorch, TensorFlow, and JAX—for both training and inference of traditional models and LLMs/GenAI pipelines. Since Keras 3.8.0, we've introduced a preview version of the OpenVINO backend (for inference only), allowing developers to leverage OpenVINO for model predictions directly within Keras 3 workflows. Activating the OpenVINO backend requires just one line of code to run inference on Keras 3-trained models. Here’s an example for a BERT model from Keras Hub:
Currently, the OpenVINO backend lacks support for some operations. Our goal is to resolve this gap and to optimize it for inference on Intel devices—including CPUs, integrated GPUs, discrete GPUs, and NPUs—by supporting as many models as possible while delivering optimal performance. We aim to make the OpenVINO backend the No. 1 choice for model inference within the Keras 3 workflow.
What needs to be done?
Steps to Contribute
pip install -r requirements-openvino.txt. The requirements file can be found in the root directory of cloned repositoryProvide decomposition in Python for numpy.diagonal using OpenVINO opset
Include tests by removing line corresponding to the implemented operation in excluded_concrete_tests.txt file.
Make sure that tests are passing
pytest.inifile and place it in the root directory of the clone repository. This file should contain the following content:pytest-c ./pytest.ini ./keras/src/ops/numpy_test.pyBelow is an exemplar PR of how support for numpy.amax has been implemented.
Example Pull Requests
Resources
Contact points
@rkazants
Ticket
No response