We've been using Plotly's Dash framework for about a year and a half at work and its been fantastic and only getting better. I do like the idea of not having callbacks here, though I've started to get a lot more comfortable with it and it feels a bit more robust.
At first glance, this feels like a competitor to Dash, but after chatting about this with my team, we realized it actually is closer to being a Jupyter Notebook/Lab replacement!
One of the things we all, my team that is, dislike about notebooks is the autocomplete and half baked IDE feeling. All of us prefer to stay in PyCharm and Streamlit lets you do just that, while keeping the interactive interface in addition to caching, which emulates the best part of notebook cells, saving your state and not having to rerun the entire script!
I'm currently doing the "develop in jupyter notebooks, deploy in python scripts" thing, however I'm only deploying predictive models, using AWS Lambda.
Would Streamlit be a good fit for this? I can see the value of the inline visualisation for code demos, testing, etc but it is not clear how I would then go about deploying any part of this into production ML environment, where the "data vis" part is less useful.
I'd love something that allowed me to deploy some code to Lambda, while also deploying Streamlit as a "swagger docs" type of explanation/exploration tool showing how what I've built works.
I'm going to try and build this into my current deployment, but I don't see anything on Streamlit in terms of an opinion on "deployment" concepts/options.
I've never used Lambda, but your question prompted two thoughts:
(1) Streamlit has an interesting property which we haven't yet publicized which is that if you:
python a_streamlit_sctipt.py
instead of
streamlit run a_streamlit_sctipt.py
It runs a_streamlit_sctipt.py from top to bottom but disables all the Streamlit code! This is intended so that Streamlit scripts can doouble-duty as both ordinary python scripts and inline visualizations. Now. I'm not sure how this would behave with lambda, but I'd be very curious to hear your experience.
(2) The more standard Streamlit approach would be to deploy your model to lambda, and then write a Streamlit app which connects to that model on lambda and visualizes your model.
I hope that helps. Please do share your experiences! Streamlit is an emerging technology and we're still very much figuring out how it fits in the ecosystem. I think figuring out Streamlit <-> Lambda is important and I very curious to hear what you find!
Btw, the best place to continue the conversation would be at discuss.streamlit.io because there are probably more people there with Lambda experience who could help you. Also, more Streamlit users could benefit from your insights. :)
Open-source Streamlit (github.com/streamlit) free forever. Our business model is to charge for our the enterprise version, Streamlit for Teams (streamlit.io/forteams), which provides one-click deploy, on-prem hosting, easy sharing, access controls, and other "pro" features. Please contact us if you're interested in these features!
That's great to hear! Check out 0.47 which we released yesterday! There are tons of great new features, but we've been too busy with the launch to post the changelog yet! :)
Nice, this looks well thought out, thanks! Haven't played with it yet, but it looks like it can be used for 'normal' data science stuff as well as machine learning, is that right?
We've been using Plotly's Dash framework for about a year and a half at work and its been fantastic and only getting better. I do like the idea of not having callbacks here, though I've started to get a lot more comfortable with it and it feels a bit more robust.
At first glance, this feels like a competitor to Dash, but after chatting about this with my team, we realized it actually is closer to being a Jupyter Notebook/Lab replacement!
One of the things we all, my team that is, dislike about notebooks is the autocomplete and half baked IDE feeling. All of us prefer to stay in PyCharm and Streamlit lets you do just that, while keeping the interactive interface in addition to caching, which emulates the best part of notebook cells, saving your state and not having to rerun the entire script!