The following are guidelines for contributing a complete technique into the toolkit, for example, connection pruning.
We will be evolving these guidelines to make the process more effective, and as we receive more contributions. For example, we are working on creating a repository of training scripts for different models and tasks aimed at simplifying technique validation (issue), making the project contributor-friendly (issue), and having reproducible results.
-
Please start by providing an RFC under model-optimization/community/rfcs. Consider the following guidelines:
- API and implementation should strive for similarity with existing techniques to provide the best user experience.
- consider the end-to-end experience for the user of your technique.
- be prepared for a potential design discussion.
-
Provide experimental results that demonstrate benefits to end-users across models and tasks. This is probably the main criteria for us to consider, so the stronger the validation the better. Some relevant aspects are:
- for Keras APIs, we recommend the following test tasks (and hope to be adding more):
- results in combination with other techniques (e.g. post-training integer quantization).
- results include not only accuracy but also deployment metrics (e.g. model, storage space, latency, memory, to mention a few).
- reproducible results are best: e.g. provide hyperparameters with minimal scripts to reproduce results.
- when possible, include trained models that showcase those benefits.
-
Documentation and tutorials:
- overview page that requires minimal end-user domain knowledge. Sample
- TODO(tfmot): template
- colab tutorial that covers the most common use cases and user journeys. Sample
- advanced documentation that may cover:
- advanced use cases not in tutorial. Sample
- internals not relevant to end-user (e.g. app and model developers) but relevant to others in ecosystem (e.g. hardware developers and other contributors).
- overview page that requires minimal end-user domain knowledge. Sample
-
Packaging and release:
- releases are managed by the TensorFlow Model Optimization team. Work with them to produce releases.
- auto-generated API docs.
-
Collaborative blog post (optional)
- samples: pruning API and post-training integer quantization