Streamlit Kullanarak ML Modellerini Dağıtmak İçin Adım Adım Kılavuz
Yayınlanan: 2020-12-07İçindekiler
Tanıtım
Makine Öğrenimi meraklılarının çoğu, AI ve ML'ye başlamak için bazı kurslara ve müfredatlara kaydoluyor. Bu kurslar birçok temel konuyu kapsar ve öğrencilere son teknoloji ML modellerini oluşturmaları ve eğitmeleri için düzgün bir şekilde rehberlik eder.
Ancak yeni başlayanların çoğunun mücadele ettiği bir şey, dağıtım kısmıdır. Bir makine öğrenimi projesi, çevresinde herhangi bir etkileşimli uygulama olmadan olduğu gibi bırakılamaz. Kullanıcıların modelle kolayca etkileşime girmesine ve hatta projelerimizi sergilemesine izin vermek için onları web uygulamalarına, android uygulamalarına veya bulut hizmetlerini kullanan bir tür API yapılarına sarmamız gerekiyor.
Modellerimiz için bu sarmalayıcıları oluşturmanın çeşitli yolları vardır, ancak bu makalede, Streamlit'i bu sorun için çözüm olarak nasıl kullanabileceğinize ve neden bu kadar güçlü bir araç olarak gördüğüme odaklanacağım.
Bu makale, bir makine öğrenimi projesi oluşturmak ve bunun için Streamlit kullanarak bir web uygulaması platformu oluşturmak için adım adım bir kılavuza sahip olacak. Yapacağımız proje California Konut Fiyat Tahmin modelidir. Site dinamik olacak ve öğrenme hızı, nöron sayısı gibi hiperparametreler doğrudan web uygulaması üzerinden değiştirilebilir ve denenebilir.
Flask veya Django gibi bazı çerçeveler kullanarak böyle bir web uygulaması oluşturmaya devam ederseniz, ilk önce bu kullanıcı arayüzünü oluşturmanın çok zaman alacağından neredeyse eminim ve sonra onu bir sunucuda barındırmanın başka bir sorunu var. herkes tarafından erişilebilir olabilir.
Ve burada asıl soru ortaya çıkıyor, 'Makine Öğrenimi meraklıları, bu değerli zamanı daha iyi modeller oluşturmak için öğrenmek için kullanabilecekken neden bazı UI çerçevelerini öğrenmek için zamanlarını boşa harcamalılar?'

Projeleriniz için Streamlit'i nasıl kullanacağınızla ilgili burada pek çok konu ele alınacaktır. Daha fazla bilgi edinmek istediğiniz bölümlere geçmekten çekinmeyin.
- Neden Streamlit?
- Temel bir ML modeli oluşturma
- Streamlit kullanarak sihir ekleme
- Streamlit web uygulamasını dağıtma
- Çözüm
Neden Streamlit?
Streamlit, bir Makine Öğrenimi web uygulaması oluşturmamızı çok kolay ve hızlı hale getiriyor. ML modelleri için bu tür sarmalayıcılar geliştirmek için mevcut olan diğer yollar çok rahat değildir.
Flask , kullanıcıların web uygulamaları geliştirmesine ve bunları python dilini kullanarak dağıtmasına olanak tanıyan bir python çerçevesidir. İyi bir python bilgisi gerektirir ve ayrıca onu öğrenmek için zaman ayırmamız gerekir. Bundan sonra bile bir web uygulaması geliştirmek Streamlit ile karşılaştırıldığında çok kolay değil.
Django , web geliştirme için Python tabanlı başka bir çerçevedir. Flask'ın daha iyi ve karmaşık bir versiyonu olduğu söylenebilir. Bu çerçeveyi öğrenmek çok fazla zaman gerektiriyor ve sonunda onu kullanarak bir web uygulaması oluşturmak istediğimiz kadar hızlı değil.
Tensorflow.js , web platformlarıyla uyumlu modelleri kaydetmenin çok harika bir yoludur ve daha sonra bu modeller web uygulamaları oluşturmak için kullanılabilir. Makine öğrenimi modellerinin ve üst düzey mimarilerin karmaşık uygulamalarının çoğu henüz Tensorflow.js tarafından desteklenmemektedir. Tensorflow.js kitaplığında Python'da çalışacak ve Javascript'te çalışmayabilecek birçok model var.
Daha önce de söylediğim gibi, bu çerçeveleri öğrenmek için zamanımızı boşa harcamamalı ve bunun yerine iyi ML modellerini nasıl oluşturacağımızı öğrenmeliyiz. İşte bu noktada Streamlit devreye giriyor. Web uygulamaları geliştirmenin en basit ve en hızlı yoludur. Streamlit kullanılarak oluşturulan web uygulamaları harika UI öğelerine sahiptir ve kullanımı çok kolaydır.
Streamlit'in ML web uygulamaları oluşturmanın en kolay ve en hızlı yolu olduğu iddiamı desteklemek için, bu çerçeveyle nasıl tanıştığımı sizinle paylaşmama izin verin. GAN'ları nasıl oluşturacağımı ve yapay yüzler oluşturmak için kullanmayı, siyah beyaz eskizleri renklilere dönüştürmeyi ve benzeri uygulamaları öğreniyordum.
Modeller Jupyter not defterinde iyi çalıştı ama başkalarıyla paylaşmak istedim. Bir uygulama oluşturmak ve modeli barındırmak için çerçeveler aramaya başladım, ancak diğer GAN uygulamalarını keşfetmek istediğim için başka bir çerçeve öğrenmek için zamanımı boşa harcamak istemedim.
Daha önce bu makalede bahsettiğim tüm alternatif kaynakları kontrol ettim. Sketch-To-Color oluşturma projesinde kullanılan jeneratör modeli biraz karmaşıktır. Bu bir U-Net mimari modelidir ve bağlantıları atlamanızı gerektirir.
Yüksek karmaşıklığı nedeniyle, Javascript için son modeli Tensorflow.js kullanarak dönüştüremedim. Flask veya Django'yu sıfırdan öğrenmek benim için bir seçenek değildi, bu yüzden başka çerçeveler veya kütüphaneler aramaya başladım.
Streamlit ile o zaman tanıştım. Adrien Treuille'in bir makalesinde, 13 satırlık kodla bir TL-GAN için nasıl harika bir web uygulaması oluşturduğunu gösteriyor. Bunların hepsi sadece Streamlit sayesinde mümkün oldu.
Resmi web sitesindeki belgeler de çok kesin ve faydalıdır. Sketch to Color GANs modelim için bir Streamlit web uygulaması yapmayı denedim ve bu harikaydı. Mevcut python koduma sadece 12 satır kod eklemek zorunda kaldım. Bu yüzden sonunda Streamlit'i keşfetmeye ve onu kullanarak başka projeler oluşturmaya başladım.
Temel Bir Makine Öğrenimi Modeli Oluşturma
Daha önce belirtildiği gibi, bu örnek için California Konut Fiyat Tahmini problemine bakacağız. Öncelikle bunun için normalde nasıl bir model oluşturduğumuzu görelim. Bu bir gerileme sorunudur.
İlk olarak, basit ML modelimiz için gerekli kütüphaneleri içe aktaracağız. Burada TensorFlow, pandas ve NumPy kullanacağız.
tensorflow'u tf olarak içe aktar
numpy'yi np olarak içe aktar
pandaları pd olarak içe aktar
Şimdi, California konut veri setini indirmek için Scikit-Learn'den gelen veri setlerini kullanacağız.
sklearn.datasets'ten fetch_california_housing'i içe aktarın
konut = fetch_california_housing()
Ardından, yüklenen verileri tren, doğrulama ve test kümelerine ayırmamız gerekiyor. Bunu yapmak için birçok yöntem mevcuttur. Scikit-Learn kitaplığında bulunan train_test_split işlevini kullanacağız. Bunu iki kez kullanmak, veri kümesini 3 dizi tren, doğrulama ve teste bölecektir.
sklearn.model_selection'dan train_test_split'i içe aktarın
X_train_full, X_test, y_train_full, y_test = train_test_split(
konut.veri, konut.hedef
)
X_train, X_valid, y_train, y_valid = train_test_split(
X_train_full, y_train_full
)
Bize sunulan veriler, her girişin enlem ve boylam değerlerine sahiptir. Bunu daha iyi görselleştirmek için bir harita üzerinde dağılım grafiği yapabiliriz. Haritaları kullanmak için Altair kütüphanesini içe aktaracağız.
altair'i alt olarak içe aktar
map_data = pd.DataFrame(
X_tren,
sütunlar=[
'MedInc',
'Ev Çağı',
'AveOdalar',
'AveBedrms',
'Nüfus',
'AveOccup',
'enlem',
'boylam'
])
orta nokta = (np.average(map_data[“enlem”]), np.average(map_data[“boylam”]))
st.write(pdk.Deck(
map_style=”mapbox://styles/mapbox/light-v9″,
initial_view_state={
"enlem": orta nokta[0],
“boylam”: orta nokta[1],
"yakınlaştırma": 6,
"perde": 75,
},
katmanlar=[
pdk.Katman(
"Altıgen Katman",
veri=harita_veri,
get_position=["boylam", "enlem"],
yarıçap=1000,
yükseklik_ölçek=4,
yükseklik_aralığı=[0, 10000],
seçilebilir=Doğru,
kalıptan çekilmiş=Doğru,
),
],
))
Şimdi elimizdeki veriler model için iyi işlenmedi. Daha iyi sonuçlar alabilmek için ön işlemeyi yapmamız gerekiyor. Her şeyden önce, Veriler küçük bir değer aralığında olduğunda Makine Öğrenimi modellerinin çoğu en iyi şekilde çalıştığından değerleri normalleştirmemiz gerekecek. Bunun için sklearn kütüphanesinden StandardScaler sınıfını kullanacağız.
sklearn.preprocessing'den içe aktarma StandardScaler
ölçekleyici = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_valid = scaler.transform(X_valid)
X_test = scaler.transform(X_test)
Verileri hazırladıktan sonra şimdi bir model oluşturacağız. Bu model, bir regresyon problemi olduğu için ilk giriş katmanında belirli sayıda nöron ve son katmanda tek bir nöron bulunan bir sinir ağı olacaktır. Bu, TensorFlow kitaplığı kullanılarak gerçekleştirilebilir.
tensorflow'u tf olarak içe aktar
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(n_neurons, activation='relu', input_shape=X_train.shape[1:]),
tf.keras.layers.Dense(1)
])
TensorFlow'da modeli oluşturduktan sonra derlememiz gerekiyor. Burada kullanacağımız kayıp fonksiyonundan ve ayrıca istediğimiz optimize ediciden bahsetmemiz gerekiyor. Ortalama kare hata kaybı işlevini ve belirli bir öğrenme oranıyla SGD optimize ediciyi kullanacağız.
model.derle(
kayıp='mean_squared_error',
optimizer=tf.keras.optimizers.SGD(l_rate)
)
Artık her şey yerli yerinde. Tek yapmamız gereken modeli eğitmek. TensorFlow'da bu, basitçe fit() yöntemi çağrılarak yapılabilir. Tüm günlükleri bir değişkene kaydedebiliriz, history .
tarih = model.fit(
X_tren,
y_tren,
çağ=n_dönem,
validation_data=(X_valid, y_valid)
)
Eğitimden sonra da değerlendirme() yöntemini kullanarak modelimizin doğruluğunu ve kaybını değerlendirebiliriz.
değerlendirme = model.evaluate(X_test, y_test)
Şimdi, bu modeli kullanarak herhangi bir ev fiyatını tahmin etmek istiyorsak, bunu sadece tahmin() yöntemini çağırarak yapabiliriz .
X_new = X_test[:3]
tahminler = model.predict(X_new)
TensorFlow, scikit-learn ve pandaları kullanarak basit bir ev fiyatı tahmin modelini bu şekilde oluşturabilirsiniz. Ancak gördüğünüz gibi sorun şu ki, bu modeli diğer kullanıcılara onunla etkileşime girebilecekleri bir yerde göstermenin bir yolu yok ve bu sadece bir Jupyter Notebook'un içindeki bir model. Şimdi Streamlit ile biraz sihir ekleyelim!
Ayrıca Okuyun: Makine Öğrenimi Proje Fikirleri
Streamlit Kullanarak Sihir Ekleme
Bir Machine Learning web uygulaması yapmak için, Streamlit işlev çağrıları için birkaç satır kod eklemeniz yeterlidir, hepsi bu. Herhangi bir HTML, CSS veya Javascript'e ihtiyacınız yok. Sadece saf piton!
Evet, doğru okudun. Başka bir şey için endişelenmene gerek yok. Sadece sisteminize Streamlit'i kurun ve gitmeye hazır olacaksınız. Terminallerinizde aşağıdaki komutu kullanın:
pip kurulumu akıcı
Merhaba dünya uygulamasında etrafı keşfetmek için aşağıdaki komutu kullanabilirsiniz. Web uygulamalarının Streamlit kullanılarak nasıl göründüğüne dair güzel bir örnek:
akıcı merhaba
Streamlit'i yerel olarak kurduktan ve koda sihirli satırı ekledikten sonra, uygulamayı yerel olarak çalıştırmak için aşağıdaki komutu çalıştırmanız yeterlidir:
akıcı çalışma file_name.py
Şimdi soru şu: "Bu sihirli kod satırları nelerdir?" Oldukça basitler. Önce Streamlit'te kullanılan temel işlevleri açıklayacağım ve ardından doğrudan örnekle ilişki kurabilmeniz için kodu göstereceğim.
Her şeyden önce, aşağıdaki kod satırını kullanarak akıcı kitaplığı içe aktaracağız:
akıcılığı st olarak içe aktar
İlk önemli özellik, herhangi bir şeyi 3 çift tırnak içine yazabilmenizdir, metni web uygulamasında olduğu gibi gösterir. Markdown dili sözdizimini destekler. Böylece başlıklar, madde işaretleri, tablolar ve çok daha fazlası gibi pek çok şey yapabilirsiniz. Bu gösterim yerine st.write() işlevini de kullanabilirsiniz . Aynı işlevselliğe sahiptir.
Sonraki with st.echo(): işlevi. Bu temelde içinde yazılı olan python kodunu çalıştırır ve ardından onu web uygulamasında da gösterir. Bu şekilde, nasıl oluşturulduğunu gösteren bir web uygulaması oluşturabiliriz.
st.empty() daha sonra bazı dinamik içerikler için ayrılmış bir alandır.
st.spinner() , bir kod parçasının yürütülmesinde biraz gecikme olduğunda bir yükleme öğesini gösterir.
st.success() yeşil renkte bir mesaj gösterir. Bu, başarı diyaloglarının harika bir tasarım yönüne sahiptir.
st.sidebar() , içeriği varsayılan olarak soldaki bir kenar çubuğunda görüntüler.
st.sidebar.slider() , belirli bir sayı aralığından değerleri seçmek için kenar çubuğunda bir kaydırıcı sağlar. st.sidebar.selectbox() , verilen listeden bir değer seçmenize izin verir ve Streamlit, onunla birlikte paketlenmiş daha birçok harika fonksiyona ve özelliğe sahiptir. Bazı özellikler aşağıdaki gibidir:
- Dosyayı kaydettiğinizde canlı değişiklikler
- Klavyede R tuşuna basarak uygulamayı yeniden çalıştırın
- Klavyede C tuşuna basarak temiz bir önbellek
- Web uygulamasını kaydedin ve herkesle paylaşmak için yerel olarak bir video dosyası kaydedin
…Ve daha fazlası
Mutlaka Okuyun: Makine Öğreniminde Kariyer
kod
akıcılığı st olarak içe aktar
altair'i alt olarak içe aktar
pydeck'i pdk olarak içe aktar

train_area = st.boş()
“””
# California Konut Fiyatları
Bu, 1990 ABD Nüfus Sayımı'ndan alınan verileri içeren Kaliforniya Konut Fiyatları veri setidir. Aşağıdaki tablo, veri kümesindeki her bir özellik için açıklamalar, veri aralıkları ve veri türleri sağlar.
## Önce ithalata bir göz atalım
“””
st.echo() ile:
tensorflow'u tf olarak içe aktar
numpy'yi np olarak içe aktar
pandaları pd olarak içe aktar
“””
## Veri Kümesini Yükleme
Scikit-learn'in veri seti modülünü bizim için zaten temizlenmiş ve sadece sayısal özelliklere sahip verileri yönlendirmek için kullanacağız.
“””
st.echo() ile:
sklearn.datasets'ten fetch_california_housing'i içe aktarın
konut = fetch_california_housing()
“””
Bu, aşağıda görebileceğiniz gibi tüm verileri 'konut' değişkenine yükleyecektir.
“””
st.subheader('Giriş Özellikleri')
konut.veri
st.subheader('Çıktı Etiketleri')
konut.hedef
“””
## Verileri Eğitim, Test ve Geliştirme setlerine bölme
Bu, herhangi bir Modelin sonucu olarak, verileri bu kümelere ne kadar iyi dağıttığınıza büyük ölçüde bağlı olabileceğinden, herhangi bir Makine Öğrenimi çözümünün başlangıcındaki en önemli şeylerden biridir.
Neyse ki bizim için, 2 satır kod kadar kolay hale geldiği kurtarmaya scikit-learn'ı bulduk.
“””
st.echo() ile:
sklearn.model_selection'dan train_test_split'i içe aktarın
X_train_full, X_test, y_train_full, y_test = train_test_split(
konut.veri, konut.hedef
)
X_train, X_valid, y_train, y_valid = train_test_split(
X_train_full, y_train_full
)
“””
'train_test_split()' işlevi, verileri 2 kümeye böler, burada test kümesi toplam veri kümesinin %25'idir. Aynı işlevi train_full üzerinde onu tren ve doğrulama kümelerine bölmek için tekrar kullandık. %25 varsayılan bir parametredir ve bunu ihtiyaçlarınıza göre ayarlayabilirsiniz. [Scikit-Learn's Documentation](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html)'den buna bir göz atın.
## Tren verilerine bir göz atmak
Sütunlar aşağıdaki verileri temsil eder:
“””
st.write(housing.feature_names)
“””
Şimdi Enlem ve Boylam değerlerini kullanarak evlerin konumlarını haritaya çizerek bakalım:
“””
st.echo() ile:
map_data = pd.DataFrame(
X_tren,
sütunlar=[
'MedInc',
'Ev Çağı',
'AveOdalar',
'AveBedrms',
'Nüfus',
'AveOccup',
'enlem',
'boylam'
])
orta nokta = (np.average(map_data[“enlem”]), np.average(map_data[“boylam”]))
st.write(pdk.Deck(
map_style=”mapbox://styles/mapbox/light-v9″,
initial_view_state={
"enlem": orta nokta[0],
“boylam”: orta nokta[1],
"yakınlaştırma": 6,
"perde": 75,
},
katmanlar=[
pdk.Katman(
"Altıgen Katman",
veri=harita_veri,
get_position=["boylam", "enlem"],
yarıçap=1000,
yükseklik_ölçek=4,
yükseklik_aralığı=[0, 10000],
seçilebilir=Doğru,
kalıptan çekilmiş=Doğru,
),
],
))
“””
**Haritanın 3B görüş açısını gerektiği gibi değiştirmek için ALT tuşuna basarken yakınlaştırmaktan veya sürüklemekten çekinmeyin.**
## Ön işleme
Daha önce de belirtildiği gibi, bu veri kümesi, herhangi bir NaN değeri ve diğer şeyler hakkında endişelenmeden doğrudan kullanmamız için scikit-learn tarafından zaten iyi bir şekilde önceden işlenmiştir.
Bununla birlikte, modelimizin verimli çalışmasına yardımcı olmak için `StandardScaler` kullanarak değerleri belirli aralıklarda ölçekleyeceğiz.
“””
st.echo() ile:
sklearn.preprocessing'den içe aktarma StandardScaler
ölçekleyici = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_valid = scaler.transform(X_valid)
X_test = scaler.transform(X_test)
“””
## Model oluşturma
İlk katman 30 nöron içeren ve RELU'nun aktivasyon fonksiyonu ile basit bir Sıralı Model oluşturacağız.
Modelin sınıflandırma problemleri gibi sadece ikili veya çok sınıflı sonuçları değil, bir dizi değeri tahmin etmesini istediğimizden, bir sonraki katman aktivasyon fonksiyonu olmayan tek bir nöron katmanı olacaktır.
“””
st.sidebar.title('Hiperparametreler')
n_neurons = st.sidebar.slider('Nöronlar', 1, 128, 30)
l_rate = st.sidebar.selectbox('Öğrenme Oranı', (0.0001, 0.001, 0.01), 1)
n_epochs = st.sidebar.number_input('Dönem Sayısı', 1, 50, 20)
#n_neurons, l_rate ve _nepoch'lar, modeli eğitmek için kullanıcıdan alınan girdilerdir. Onlar için varsayılan değerler de ayarlanır. n_neurons için varsayılan değer 30'dur, l_rate için varsayılan değer 0.01'dir ve n_epochs için varsayılan değer 20'dir. Yani başlangıçta modelin ilk katmanda 30 nöronu olacak, öğrenme oranı 0.01 olacak ve için epoch sayısı modelin eğiteceği şey 20'dir.
st.echo() ile:
tensorflow'u tf olarak içe aktar
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(n_neurons, activation='relu', input_shape=X_train.shape[1:]),
tf.keras.layers.Dense(1)
])
“””
## Modeli derleme
Tensorflow keras API, model için optimize ediciler, kayıp işlevi ve diğer birkaç ayrıntıyı atamak için bize `model.compile()` işlevini sağlar.
“””
st.echo() ile:
model.derle(
kayıp='mean_squared_error',
optimizer=tf.keras.optimizers.SGD(l_rate)
)
“””
## Modeli eğitme
Modeli eğitmek için, eğitim ve doğrulama seti ve modelin eğitmesini istediğiniz birkaç dönem ile modelde 'fit()' işlevini çağırmanız yeterlidir.
**Sol taraftaki kenar çubuğundan hiperparametrelerle oynamayı deneyin ve eğitimi başlatmak için aşağıda verilen 'Tren Modeli' düğmesine tıklayın.**
“””
tren = st.button('Tren Modeli')
eğer tren:
st.spinner ile('Eğitim Modeli…'):
st.echo() ile:
model.summary(print_fn=lambda x: st.write(“{}”.format(x))))
tarih = model.fit(
X_tren,
y_tren,
çağ=n_dönem,
validation_data=(X_valid, y_valid)
)
st.success('Model Eğitimi Tamamlandı!')
“””
## Model Performansı
“””
st.echo() ile:
st.line_chart(pd.DataFrame(history.history))
“””
## Modelin Test setinde değerlendirilmesi
Yine bir diğer önemli ama kolay adım, modelinizi daha önce hiç görmediği test verileri üzerinde değerlendirmektir. Bunu yalnızca oluşturduğunuz model hakkında yeterince emin olduktan sonra yapmanız gerektiğini ve modeli test setinde değerlendirdikten sonra herhangi bir hiperparametre ayarlamasına direnmeniz gerektiğini unutmayın, çünkü bu sadece test seti için daha iyi olur ve yine orada olacaktır. Model üretim aşamasında yeni veriler gördüğünde genelleme problemi olur.
“””
st.echo() ile:
değerlendirme = model.evaluate(X_test, y_test)
değerlendirme
“””
> Test setindeki bu kayıp, modelin test setinden görüntüleri hiç görmediği için beklendiği gibi doğrulama setindeki kayıptan biraz daha kötü.
“””
“””
## Modeli Kullanan Tahminler
“””
st.echo() ile:
X_new = X_test[:3]
tahminler = model.predict(X_new)
“””
### Tahminler
“””
tahminler
“””
### Zemin gerçeği
“””
y_test[:3]
Bu oydu! Yalnızca birkaç satır fazladan kod ve zaten güzel görünen ve dinamik içeriğe sahip harika bir web uygulaması oluşturdunuz. O kadar da zor değildi, değil mi? Belgelerinden farklı projeler oluşturmayı ve Streamlit'in diğer işlevlerini kullanmayı deneyin. Oldukça kolay ve sezgisel.
Okuyun: Python ile Makine Öğrenimi
Streamlit Web Uygulamasını Dağıtma
Streamlit web uygulamaları, internette bulunan çeşitli seçenekler aracılığıyla doğrudan kullanım için dağıtılabilir. Bunları kısaca gözden geçirebilir ve nasıl yapılabileceğini görebiliriz.
Web uygulamalarımızı dağıtmamıza yardımcı olabilecek diğer platformlara geçmeden önce, Streamlit'in bize neler sunduğuna bir bakalım. Yaptıkları çok yeni bir özellik sürümü, Streamlit Sharing'dir. Bu, kullanıcıların Streamlit web uygulamalarını tek bir tıklamayla dağıtmalarını sağlar.
Kodunuzu GitHub depolarınıza yüklediyseniz, Streamlit'in kontrol panelinden depoyu seçmeniz yeterlidir ve kod sizin için otomatik olarak barındırır. Çok şaşırtıcı ve şu an itibariyle tamamen ücretsiz. Daha önce makine öğrenimi web uygulamalarını dağıtmanın daha kolay bir yolu yoktu.
Heroku , Streamlit web uygulamasını dağıtmak için başka bir iyi yöntemdir. Bu şekilde, herhangi bir bulut sunucusu seçmeniz ve ardından bu sunucularda sanal örnekler kurmanız gerekmeyecektir. Hepsi Heroku tarafından halledilir.
Heroku'nun basit bir dezavantajı, ücretsiz sürümünün, ücretsiz bir sürümde 512 MB boyutundan daha büyük tüm paketlere sahip olmanıza izin vermemesidir. Proje için kullandığım TensorFlow 2.2.0, belirtilen alandan biraz daha büyük olduğu için başka servisleri kullanmak zorunda kaldım.
AWS (Amazon Web Services) , Streamlit uygulamalarınızı dağıtmanın da güzel bir yoludur. Yeni başlayanlar için biraz karmaşık ama kullandıkça kurulumu daha kolay hale geliyor. Yeni kullanıcılar için ücretsiz EC2 bulut sunucuları sağlarlar. Birini Ubuntu 18.04 veya üzeri ile başlatabilir ve uygulama için gerekli olan tüm bağımlılıkları yükleyebilirsiniz.
Her şey ayarlandıktan sonra, komutu kullanarak uygulamayı çalıştırabilirsiniz – streamlit run filename.py. Burada, herkesle paylaşılabilecek genel bir URL alacaksınız. Buradaki en büyük dezavantaj, örneği kapatırsanız uygulamanın çevrimiçi olarak kullanılamamasıdır. Yani ücretsiz bir örneğin bazı sınırlamaları olacaktır.
GitHub deposunda kodunuz varsa, uygulamanızı barındırmanın başka bir harika yolu vardır. Çok profesyonel ve yasal değil çünkü kullanıcının sistemlerinde de Streamlit'in kurulu olması gerekiyor.
Streamlit sistemde mevcutsa ve Streamlit uygulamasının python dosyası için bağlantıya sahipseniz, web uygulamasını basitçe şu komutu yürüterek çalıştırabilirsiniz: streamlit run url . Streamlit'i yüklediyseniz uygulamamı yerel olarak kontrol edebilirsiniz. Terminallerinizde aşağıdaki komutu kullanın:

akıcı çalıştırma https://raw.githubusercontent.com/tejasmorkar/housing_price_prediction_aws/master/CaliforniaHousingPrices.py
Çözüm
Streamlit'in ne kadar basit ama güçlü olduğunu gördünüz. Bana bu kadar yardımcı olan ve geliştirme hayatımı kolaylaştıran böyle bir araçla daha önce karşılaşmadım. İşte bu yüzden, Streamlit'in herkesin Makine Öğrenimi geliştirmesinin önemli bölümlerine odaklanmasına ve AI ve ML'nin ana öğrenimlerine daha fazla konsantre olmamıza yardımcı olabilecek etkileyici bir çerçeve olduğunu düşünüyorum. Bu, öğrenme eğrisini çok daha kolay hale getirir ve hobi projelerini kolayca oluşturup dağıtmamızı sağlar.
Bu çerçeveyi uygulama için bu kadar basit yapan şeylerden biri de resmi belgeleridir. Belgelerde yazılan her şey kesin ve sadedir. Dokümanları bir kez gözden geçirmenizi ve yeni bir proje uygulamayı denemenizi öneririm. Herhangi bir yeni çerçeveye başlamanın en iyi yolu budur. Aşağıdaki bağlantıda Streamlit resmi belgelerini bulun — https://docs.streamlit.io/en/stable/ target=”_blank” rel=”nofollow” .
Topluluk, bir şeyler öğrenmek ve çözümlerimizle ilgili bir sorun bulmak için her zaman en iyi kaynaktır. Streamlit, bir Streamlit uygulamasının geliştirme süreci, dağıtımla ilgili tüm şüpheler, özellik istekleri, hata raporları ve uygulamanızı başarılı bir şekilde oluşturmanıza yardımcı olabilecek diğer her şeyle ilgili tüm sorularınızı gönderebileceğiniz harika bir tartışma forumuna sahiptir. Aşağıdaki bağlantıdaki tartışma forumuna katılın — https://discuss.streamlit.io/
Makine öğrenimi hakkında daha fazla bilgi edinmek istiyorsanız, çalışan profesyoneller için tasarlanmış ve 450+ saat zorlu eğitim, 30'dan fazla vaka çalışması ve ödev, IIIT- sunan IIIT-B & upGrad'ın Makine Öğrenimi ve Yapay Zeka PG Diplomasına göz atın. B Mezun statüsü, 5+ pratik uygulamalı bitirme projesi ve en iyi firmalarla iş yardımı.
Bir makine öğrenimi projesini devreye almanın en büyük zorluğu nedir?
Bir Makine Öğrenimi projesini devreye almanın en büyük zorluğu, veri toplamanın tamamlanmamış olmasıdır. Çoğu zaman zaman ve para, doğru bir analiz yapmak için gereken tüm verileri toplamak için yeterli değildir. Bu nedenle, toplanan veriler güvenilir ve kaliteli olmalıdır. Ek olarak, doğru veriler seçilmelidir. Veri seçimi, bir projenin dağıtımının anahtarıdır.
Makine öğreniminde Streamlit nedir?
Streamlit, makine öğrenimi için artımlı bir algoritmadır. Sinir ağlarının arama uzayının çok büyük olması ve eğitimin hızlı olması gerçeğinden yararlanır ve bu nedenle tüm uzayı aramaya ihtiyaç duymaz, ancak yerel olarak bir sinir ağı kurabilir. StreamLit, sıralı verileri işlemek için kullanılan bir uzun kısa süreli bellek biçimidir. Verileri sayı vektörlerine kodlamak için RNN'leri kullanan bir derin öğrenme algoritmasıdır. Bu vektörler, verileri grafiklerde veya metinlerde temsil etmek için kullanılabilir. Doğal dil metni oluşturmak için de kullanılabilir.
Streamlit kullanarak nasıl dağıtırım?
Streamlit ile dağıtım yapmak basittir. İlk olarak, bir Streamlit hesabınızın olması gerekir. İkincisi, dağıtabilecek bir yazılıma ihtiyacınız var. Örneğin, Beanstalk, S3 veya rsync. Üçüncüsü, yazılımınızı dağıtım için hazırlamanız gerekir. Uygulamanızı rsync kullanarak web sunucunuza kopyalayın. Yeni bir web sitesi dağıtıyorsanız, web sitesi kopyaladığınız dizindir. Mevcut bir web sitesini dağıtıyorsanız, yüklenen web sitesi kopyaladığınız dizindir. Ekranın sol tarafında, altında
