Tutorial Lengkap Streamlit Advanced: Build Production-Ready ML Apps
Streamlit adalah library Python yang powerful untuk membangun aplikasi web interaktif untuk machine learning dan data science. Tutorial advanced ini mencakup production patterns, optimasi performa, dan fitur enterprise.
Mengapa Streamlit untuk Production?
Keunggulan Streamlit:- Rapid development: Build apps dalam hitungan jam
- Pure Python: Tidak perlu frontend knowledge
- Interactive widgets: Rich UI components
- Easy deployment: Streamlit Cloud, Docker, Kubernetes
- Active ecosystem: Community components dan integrasi
- ML model demos dan dashboards
- Data exploration tools
- Internal analytics apps
- Customer-facing applications
- Prototyping dan MVPs
Instalasi
pip install streamlit
Dengan fitur tambahan
pip install streamlit-extras
pip install streamlit-aggrid
pip install plotly
Verify installation
streamlit --version
App Architecture
1. Multi-Page Apps
# pages/1Home.py
import streamlit as st
st.set
pageconfig(
page
title="ML Dashboard",
pageicon="🤖",
layout="wide",
)
st.title("Welcome to ML Dashboard")
st.write("Navigate menggunakan sidebar")
# pages/2DataExplorer.py
import streamlit as st
import pandas as pd
st.title("Data Explorer")
uploaded
file = st.fileuploader("Upload CSV", type="csv")
if uploaded
file:
df = pd.readcsv(uploadedfile)
st.dataframe(df)
# pages/3ModelInference.py
import streamlit as st
st.title("Model Inference")
Model inference code disini
2. Session State Management
import streamlit as st
Initialize session state
if 'counter' not in st.sessionstate:
st.sessionstate.counter = 0
if 'userdata' not in st.sessionstate:
st.sessionstate.userdata = {}
Update session state
def increment():
st.sessionstate.counter += 1
st.button("Increment", onclick=increment)
st.write(f"Counter: {st.sessionstate.counter}")
Store user data
name = st.textinput("Name", key="nameinput")
if name:
st.sessionstate.userdata['name'] = name
Access across pages
st.write(st.sessionstate.userdata)
3. Callbacks dan Events
import streamlit as st
Callback function
def onsubmit():
st.sessionstate.submitted = True
st.sessionstate.result = f"Hello, {st.sessionstate.namefield}!"
Form dengan callback
with st.form("myform"):
st.textinput("Name", key="namefield")
submitted = st.formsubmitbutton("Submit", onclick=onsubmit)
if st.sessionstate.get('submitted'):
st.success(st.sessionstate.result)
Multiple callbacks
def clearform():
st.sessionstate.namefield = ""
st.sessionstate.submitted = False
st.button("Clear", onclick=clearform)
Caching dan Performance
1. Cache Data
import streamlit as st
import pandas as pd
@st.cachedata(ttl=3600) # Cache selama 1 jam
def loaddata(url):
"""Load dan cache data"""
return pd.readcsv(url)
@st.cachedata(showspinner="Loading data...")
def expensivecomputation(df):
"""Expensive computation dengan spinner"""
# Simulate long computation
import time
time.sleep(5)
return df.describe()
Gunakan cached functions
df = loaddata("https://example.com/data.csv")
stats = expensivecomputation(df)
2. Cache Resources
import streamlit as st
from transformers import pipeline
import joblib
@st.cacheresource
def loadmodel():
"""Cache ML model (singleton)"""
return joblib.load("model.joblib")
@st.cacheresource