Benjamin-Lee / Benjamin-Lee/deep-rules
Future-proof: Plan how you will support and share your model
- Dominant language
- HTML
- Stars
- 226
- Forks
- 44
- PR merge metrics
- No merged PRs in 30d
Description
**Have you checked the [list of proposed rules](https://github.com/Benjamin-Lee/deep-rules/issues?q=is%3Aissue+is%3Aopen+label%3Arule) to see if the rule has already been proposed?**
- [X] Yes
**Did you add yourself as a [contributor](https://github.com/Benjamin-Lee/deep-rules/blob/master/contributors.md) by making a pull request if this is your first contribution?**
- [x] Yes, I added myself or am already a contributor
Much of the discussion this far has concerned with creating/crafting a model, but as far as I can tell, there hasn't been much discussion on what happens afterwards (perhaps, let's say, after you publish the model). Since lots of deep learning is done to solve problems, making the model available as a tool seems just as important as crafting it.
This conversation is not unique to deep learning, but I think it's especially relevant because the hard work being done to make the application layer (e.g. Tensorflow, pytorch) runnable across machines/architectures and to support it.
In the past, there's been a question of "can you get everything running on your machine", say to process the input data in the format necessary for inference (in my experience, this is not trivial) and then actually run the inference code. However, with deep learning, often times the input is the raw data itself (perhaps with a tad bit of processing). In my experience with sequence bioinformatics, people are building models that use the DNA or protein sequence itself, without any sort of featurization calculations/pre-processing.
With a deep learning model, if it's built on a "standard" platform, sharing the model and running it oneself is significantly simplified.
When building a deep learning model (or perhaps shortly after), my suggestion is that the authors think about how they will share it with the user community. Here are some ideas:
* Will they provide the model, weights, and a code example of how to use it for inference (least convenient)?
* Will they run a web application that takes in data, runs the inference, and then returns the output to the user in a easy-to-understand way (and where will they run this? heroku? locally?)?
* Will they have a database of precomputed inputs and provide this to the user (simply as data? or though a web api?)?
* Will they create a static website that can take input data and run inference in the user's browser itself and render the output there itself? There's lots of work being done (e.g. [TensorFlowJS](https://js.tensorflow.org/), [TensorRT](https://developer.nvidia.com/tensorrt)) on the inference stage/lifetime of a model. (possibly the most convenient in the long term)
And, how will they maintain the application going forward? What if they (or someone else) puts out a model that's performs better at the same benchmarks? Will they turn their service off if the second model is made available? Will they host this second model?
PS. This is an awesome effort!
Contributor guide
Assessment
This issue has not been assessed yet.