Heroku’da Flask ile Scikit-Learn ve Keras Modellerini Sunmak

Japon sinemasının son yıllarda en çok kendinden bahsettiren yıldızlardan Ito Atsushi

Bir önceki yazıya aşağıdaki bağlantıdan ulaşabilirsiniz.

Bu yazıda önceki yazıda hazırladığımız uygulamaları Heroku üzerinde Docker kullanmadan yayınlayacağız.

Öncelikle projemizi GitHub’a yükleyelim.

Bunun için bir repo oluşturup proje klasörümüzde aşağıdaki adamları takip edelim.

2. adımda git add README.md -> git add .

4. adımda kendi GitHub repo bağlantınızla değiştirmeniz gerekiyor.

Procfile

Bu dosya bulutta uygulamamızı çalıştırmak için gerekli komutu içeriyor. Procfile isminde bir dosya oluşturup içini aşağıdaki gibi dolduralım.

[Kendi uygulamanız ile çalışıyorsanız serve yerine kendi uygulamanızın ismini koymalısınız.]

web: gunicorn serve:app --log-file --workers 3 —-timeout 150 --keep-alive -5 --log-level debug

requirements.txt

Requirements dosyası uygulamanın bağımlılıklarını tutar.

Eğer virtualenv ile çalışıyorsanız. Aşağıdaki komut yeterli.

pip freeze > requirements.txt

Eğer sanal ortam kullanmıyorsanız pipreqs ile proje bağımlılıklarınızı requirements.txt içinde aşağıdaki şekilde saklamalısınız(Bir çok bağımlılığa erişemiyor.).

pip install pipreqs
pipreqs .

Eğer gunicorn requirements.txt içinde değilse kendimiz elle ekleyebiliriz.

Giriş

Heroku üyeliği oluşturalım ve Heroku CLI kuralım.

Heroku komut satırı istemcisini kurup giriş yapmamız gerekiyor.

heroku login

yaparak hesabımıza giriş yapabiliriz.

Uygulama Oluşturalım

Proje klasörümüzde

heroku create

komutunu çalıştıralım. Bu projenizi oluşturup ona bir isim verecek. Uygulamayı sunucuya pushlayalım. Bu sırada bir hata olursa konsoldaki loglardan veya Heroku sisteminden gözleyebilirsiniz.

git push heroku master

Uygulamayı açmak için:

heroku open

Muhtemel Hatalar

heroku logs

Uygulama loglarını takip edebilirsiniz.

Eğer pipreqs ile requirements.txt oluşturduysanız. Bir çok ikincil dereceden bağımlılık eklenmeyecek.

Bu durumda oluşacak hataları loglardan takip edip düzeltebilirsiniz.

SciPy ve Heroku

Uygulamamız SciPy’a bağlı ve bu bağımlılığı Heroku’da şu anda otomatik olarak kuramıyoruz. Bu yüzden buildpack denilen ayrı bir yapıya başvuruyoruz.

Uygulamamıza SciPy için aşağıdaki buildpack’i ekleyelim.

heroku buildpacks:set https://github.com/kennethreitz/conda-buildpack.git

Sonrasında conda-requirements.txt dosyası oluşturalım ve içini aşağıdaki gibi dolduralım.

->conda-requirements.txt
numpy
scipy

Bir daha push ile uygulamamız güncellenecek.

App Guard

serve.py dosyasında şu değişikliğe gitmemiz gerekiyor.

Sonuç

Uygulamamız Bulutta!

GitHub reposu için:

Keras Uygulaması

Aynı aşamaları Keras uygulamamız için de takip edebilirsiniz. Ya da uygulamayı ilk Heroku sitesinden oluşturup şu aşamaları takip edebilirsiniz.

İlk olarak “Uygulama Oluşturalım” başlığına kadar olan kısmı Keras uygulaması için tekrar edin.

Daha sonra Heroku sitesinde Dashboard sayfasında Create New App butonuna tıklayın. Uygulamamıza bir isim koyalım. Ben bu örnek için heroku-eras kullanacağım. Proje klasörümüzde aşağıdaki komutu çalıştıralım.

heroku git:remote -a heroku-keras
git push heroku master

ile uygulamayı yükleyip

heroku open

ile açalım.