Streamlit Sharing ile AI Projelerinizi ücretsiz Deploy edin !

Dr. Fatih Hattatoglu
Academy Team
Published in
5 min readMar 4, 2024

Bu makalede Data Science alanında Deployment işlemlerini Streamlit kullanarak gerçekleştirdiğimiz yazı serisinin üçüncüsü olarak projemizi Streamlit platformu üzerinden paylaşmayı göreceğiz, yani kısaca Streamlit Sharing. Bu makaledeki genel çerçeveyi daha iyi anlamak için önce “Streamlit ile Data Science alanında Deployment İşlemleri” ve “Free AWS Hesabı ile Streamlit Projesini Deploy Etmek” makalelerimizi okumanızı tavsiye ederim. Yine de genel çerçeveyi kısaca burada tekrar ele alalım.

DALL-E ile üretilmiştir

Streamlit, Python geliştiricilerine interaktif ve çekici web uygulamaları oluşturma imkanı sunan bir kütüphanedir. Özellikle Data Science ve Machine Learning (ML) projeleri için biçilmiş bir kaftan. Kodunuzu birkaç satırlık Streamlit komutları ile zenginleştirerek, analizlerinizi ve model sonuçlarınızı tüm dünya ile paylaşabilir hale getirebilirsiniz.

Streamlit ile genel olarak sayfa ara yüzünü oluşturduktan sonra arka planda çalışacak Machine Learning projemizin gerekli dosyaları da zaten var olunca, önceki makalede bu dosyayı Free AWS hesabımız üzerinden deploy etmeyi başarmıştık. AWS’ in alternatifi olarak diğer Cloud platformları, Vercel gibi ücretsiz platformlar ve diğer hosting imkanları da olduğunu ilgili makalemizde alttaki resim ile belirtmiştik.

Deployment Süreci

Deployment alternatiflerden birisi olarak bu makalede Streamlit in bize sunduğu Streamlit Sharing platformunu nasıl kullanacağımızı göreceğiz. Bu platform, Streamlit in sunduğu ücretsiz bir cloud ortamıdır. AWS üzerinden yaptığımız deploy işleminin benzerini buradan gerçekleştireceğiz. Hatta ilaveten bir de güzel bir URL domain ismi kullanma şansı yakalayacağız.

Streamlit Sharing

Streamlit Sharing, Streamlit tarafından sunulan ve geliştiricilerin Streamlit ile oluşturdukları web uygulamalarını kolayca deploy edip, dünya genelinde paylaşabilmelerini sağlayan bir hosting hizmetidir. Yani, lokalde çalışan bir uygulamanızı, dünya genelinde herkesin erişebileceği bir web sitesine dönüştürme imkanı yakalamış olacaksınız. En güzeli ise, bu işlem son derece basit!

· Streamlit Sharing, uygulamanızı birkaç tıklama ile deploy edebileceğiniz kullanıcı dostu bir arayüze sahiptir. Karmaşık sunucu ayarları veya konteyner yönetimi ile uğraşmanıza gerek kalmaz.

· GitHub ile doğrudan entegrasyon sayesinde, kodunuzu GitHub’a push etmek, uygulamanızın güncellenmesi için yeterlidir. Bu, sürekli entegrasyon ve sürekli dağıtım (CI/CD) süreçlerini basitleştirir.

· Kişisel projeler ve küçük ölçekli uygulamalar için ücretsiz erişim sunar. Bu, öğrenme aşamasındaki bireyler veya startup’lar için mükemmel bir fırsattır.

· Streamlit Sharing, geniş bir kullanıcı topluluğuna sahiptir. Bu topluluk, sorunlarınızı çözmede ve ilham almak için bir kaynak olabilir.

Adım Adım Streamlit Sharing ile Deployment

Adım 1: GitHub Hesabı

Streamlit Sharing ile uygulamanızı paylaşabilmek için ilk adım, projenizin GitHub’ da size ait bir repoda bulunması gerekliliğidir. Eğer projeniz hala lokaldeyse, ilk adımınız onu GitHub’a taşımak olacak. Bu, projenizin bir kopyasını cloud ortamında saklayacak ve Streamlit Sharing’in projenize erişip onu deploy etmesini sağlayacak. Bu repo, proje uygulamanızın kaynak kodunu, requirements.txt dosyanızı (uygulamanız için gerekli Python paketlerini içeren) ve diğer gerekli dosyaların barındırır.

Adım 2: Gerekli Dosyalar

Projenizi GitHub’a yüklerken, bir requirements.txt dosyası oluşturmanız gereklidir. Bu dosya, uygulamanızın çalışması için gerekli olan Python kütüphanelerini ve versiyonlarını içermelidir. Streamlit Sharing, bu dosyayı kullanarak gerekli ortamı sizin için otomatik olarak oluşturacaktır veya import edecektir diyebiliriz.

requirements.txt dosyası: Uygulamanızın hangi kütüphanelere ihtiyacı olduğunu belirten bir requirements.txt dosyası oluşturun. Bu dosyayı, projenizin kök dizinine yerleştirin. Örneğin, eğer projeniz pandas ve numpy kullanıyorsa, bu txt dosyasında şu şekilde bir içerik olmalıdır (Aşağıda linki verilecek GitHub reposunda bu dosyaları bulabileceksiniz):

scikit-learn==1.2.1
joblib==1.3.2
pandas
streamlit

Versiyon numaraları önemlidir çünkü uygulamanızın belirli bir kütüphane sürümüne bağımlı olabileceğini unutmayın.

Adım 3: Streamlit Sharing’e Kaydolun

Streamlit’in resmi web sitesine giderek Streamlit Sharing için kaydolun veya mevcut bir hesabınızla giriş yapın. Streamlit Sharing, GitHub hesabınızla entegre çalışır, bu yüzden GitHub bilgilerinizle giriş yapmanız istenir. Kayıt olduktan ve giriş yaptıktan sonra, projenizi deploy etmek istediğiniz GitHub reposunu seçerek devam edeceksiniz.

https://share.streamlit.io/ adresine girip alttaki resimde görülen ekrana ulaşalım ve okla gösterilen “Continue with GitHub” linkinden giriş yapalım.

Streamlit Sharing-1

İlgili alanlar alttaki resimde görülen ekranda doldurulur.

Streamlit Sharing-2

Proje Seçimi: Streamlit Sharing’e griş yaptıktan sonra, deploy etmek istediğiniz projeyi seçmek için bir arayüzle karşılaşacaksınız. Burada, GitHub’daki projenizin reposunu bulup seçmeniz gerekecek.

Resimdeki New APP kısmına tıklayarak GitHub reposunu bağlayalım.

Streamlit Sharing-3

Adım 4: Deploy Etme — URL alma ve Paylaşma

Repo seçimi yaptıktan sonra, “Deploy” butonuna basın. İşte bu kadar! Streamlit, kodunuzu inceler, gerekli ortamı oluşturur ve sizin için bir URL yayınlar. Bu URL’yi herkesle paylaşabilir ve uygulamanızı dünya genelindeki insanlarla buluşturabilirsiniz.

Bunun için alttaki resimdeki alanları doldurarak GitHub repo bilgilerini oluşturalım. Bu çalışmada linkte bulunan repo kullanılmıştır (Önceki makalelerde kullanılan Car Price Prediction çalışmasına ait dosyalar). Sadece sizin Streamlit’e giriş yaptığınız GitHub hesabınızdaki dosyalar ile deploy yapabilirsiniz. Farklı bir hesaptaki Github reposu üzerinden bu işlem yapılamıyor.

Streamlit Sharing -4

Üstteki resimdeki Main file path kısmında ise reponuzda bulunan ve “app.py” şeklindeki Run edeceğiniz dosya adını yazmanız gerekmektedir (bu çalışmada GitHub reposundaki dosyalarda gördüğünüz app.py dosyası olarak verilmiştir).

Resimde en altta “App URL” kısmında ise istediğiniz domain adını (tabii kullanımı mümkün ise) kullanabilirsiniz. Bu çalışma için car-price-prediction-medium ismini kullandık.

Deploy: Yukarda yapılan ayarlar neticesinde seçtiğiniz repo için şimdi “Deploy” butonuna basın. Streamlit, bu aşamada GitHub reposundan kodunuzu çekecek, requirements.txt dosyanızdaki kütüphaneleri kuracak ve uygulamanızı hazır hale getirecektir.

URL Paylaşımı: Deploy işlemi tamamlandığında, Streamlit size uygulamanızın canlı olduğu bir URL verecektir. Bu URL’yi artık herkesle paylaşabilirsiniz. İnsanlar bu URL üzerinden uygulamanıza erişip, projenizin ara yüzü üzerinden etkileşimde bulunabilirler.

Bu çalışma için oluşturduğumuz ve projemizi deploy ettiğimiz linke buraya tıklayarak ulaşabilirsiniz. Bu linke tıklayınca alttaki proje sayfasını görebileceksiniz. Menülerde yapacağınız değişikliklerle araba fiyatlarının arka planda çalışan ML kodlarıyla değiştiğini göreceksiniz. Bu sayfa artık tüm dünyada herkesin kullanımına açık bir şekilde yayında, yani canlıya çıkmış, demektir. Bravo, tebrikler..

Deployment sonuç

Ek İpuçları

Repo Gizliliği: Streamlit Sharing, hem public hem de private GitHub reposunu destekler. Ancak, private bir repo kullanıyorsanız, Streamlit’e erişim izni vermeniz gerekebilir.

Uygulama Güncellemeleri: Uygulamanızda bir güncelleme yaparsanız, GitHub’daki değişikliklerinizi push etmeniz yeterlidir. Streamlit otomatik olarak değişiklikleri algılayıp uygulamanızı güncelleyecektir.

Sınırlamalar ve Kontenjanlar: Streamlit Sharing ücretsiz bir hizmet olmasına rağmen, kullanım sınırlamaları ve kontenjanlar olabilir. Projelerinizin boyutu, erişim sıklığı gibi faktörler bu sınırlamaları etkileyebilir.

Sonuç

Streamlit Sharing, projelerinizi dünya ile paylaşmanın en kolay ve ücretsiz yollarından biridir. Geliştirme sürecini hızlandırır, deploy işlemlerini basitleştirir ve projelerinizi potansiyel kullanıcılar veya işverenler ile paylaşmanızı sağlar. Bu platform, Data Science ve Machine Learning dünyasında hızlı bir prototip oluşturmak ve fikirleri test etmek isteyen herkes için vazgeçilmez bir araçtır.

Şimdi, ellerinizi kirletme ve harika işler yapma zamanı !

--

--