Makine Öğrenmesi Yönetim Araçları— Kedro

Kerim Caner TÜMKAYA
Data Runner
Published in
3 min readDec 12, 2020
Photo by Alvaro Reyes on Unsplash

Merhabalar, WMS yazı serimizin devamıyla karşınızdayım. Bugün konumuz, Kedro. Bu arada ufak bir not olarak önceki yazıya ek olması açısından bu sistemlerin bir diğer adı da pipeline managment systems.

Kedro McKinsey firmasının bir kolu olan QuantumBlack firması tarafından geliştirilmiş bir araçtır. Kedro tamamı ile makine öğrenmesi yönetimine odaklanmış bir araçtır.

pip install kedro

Komutu ile kurulumunu yapabilirsiniz. Ancak Kedro’yu kullanabilmek için öncelikle prompt veya cmd üzerinden bir proje başlatmanız gerekmekte. Burada şu notu da vermiş olayım Kedro sadece .py uzantılı dosyalar üretir. Kendisine ait ipynb kernel’i vardır ama bu kernel oluşturduğunuz pipeline için bilgi almak amaçlı kullanılır. Aynı arayüzü gibi ama bu konuya birazdan değineceğiz :)

Proje Oluşturma ve Pipeline Hazırlama

Komut satırına aşağıdaki komutu yazdığınızda Kedro sizi yeni bir proje başlatmanız için yönlendirecektir.

kedro new

Yönlendirme için ise Kedro öncelikle sizden proje adı ve python package adı belirlemenizi isteyecek. Bunlar için aynı ismi kullanabilirsiniz. Ardından ise Kedro size örnek bir proje template’i yaratmak isteyip istemediğinizi soracak. Tavsiyem buna da evet demeniz. Artık hazırsınız.

Bilmeniz gereken bir diğer şey ise Kedro iki farklı script üzerinden ilerliyor. Bunlardan birisi data_engineering ve data_science. Burada sizden beklenen veri dönüşüm işlemlerini data_engineering scriptinde yapmak, veri bölme, model oluşturma ve model sonuçlarını alma gibi işlemleri de data_science scriptinde yapmanız. Bunu yaparken de bir başka tüyo ise her işleminizi fonksiyonlar şeklinde yazmanız ve bir fonksiyonun çıktısını diğerine input olacak şekilde isimlendirme yapmanız. Bunu yaptıktan sonra son olarak pipeline scriptinde bu iki scripti sırası ile çalışacak şekilde hazırlamanız gerekiyor. Şayet template oluşturarak gelirseniz bu adıma kadar, Kedro sizin için bu scripti hemen hemen hazırlamış oluyor. Çok az dokunuş yaparak bu konuda da hazırlığı tamamlamış oluyorsunuz.

Pipeline Çalıştırma

Pipeline oluşturduk gerekli tüm adımları yaptık artık çalıştırma aşamasındayız. Yine komut satırı üstünden (prompt veya cmd) projeyi oluşturduğumuz klasörün başına yani ilk klasöre gidiyoruz ve aşağıdaki kodu çalıştırıyoruz.

kedro run

Ardından Kedro pipeline’i belirttiğiniz, hazırladığınız sıra ile çalıştırıyor. Hata mı aldınız? Merak etmeyin Kedro’nun özelliği burada sizin yanınızda. Hatayı düzeltip yeniden çalıştırdığınız da kaldığınız yerden devam edecek pipeline. Böylece aynı işlemleri tekrar tekrar yapmayacaksınız.

Pipeline çalıştırma ve yönetimi bu kadar. Eğer aşağıdaki kodu çalıştırırsanız da Kedro size bir .ipynb dosyası açacaktır.

kedro notebook

Bu notebook üzerinden pipeline’a müdahele edemiyorsunuz. Sadece pipeline içindeki adımları görüntüleme ve benzeri işleri yapabiliyorsunuz.

Görselleştirme

Kedro kendi içinde built-in bir fonksiyon bulundurmuyor görselleştirme için. Bunun için geliştirilmiş başka bir kütüphaneye ihtiyacınız olacak. Burada şahsi fikrimi de sunayı hemen; gerçekten ihtiyacımız var mı diye soracak olursanız, kesinlikle yok derim. Ancak aklınızda kalmaması ve neden böyle bir cevap verdiğimi de anlatmak amacı ile açıklayalım.

İndirmeniz gereken kütüphane kedro-viz ve indirmek için çalıştırmanız gereken kod ise aşağıdaki gibi;

pip install kedro-viz

İndirdikten sonra ise yine projenin ana klasöründe iken, aşağıdaki kodu çalıştırırsanız arayüz aktifleşecektir. Bu arada arayüz localhost’un 4141 portunda yer alıyor ama genelde otomatik olarak açılıyor. Açılmaz ise diye bu bilgi de aklınızda olsun.

kedro viz

Komutu çalıştırdınız ve arayüz açıldı. Şöyle bir ekran ile karşılaşacaksını;

https://medium.com/quantumblack/getting-started-with-kedro-67edcc316f6a

Aslında gerek yok dememin nedeni tam olarak bu. Kedro bir arayüze sahip görünse de aslında daha emeklemeye bile başlamamış bir proje bu arayüz. Size sunduğu tek şey oluşturduğunuz pipeline’in adımlarını görselleştirmek. Nerede ne yaptınız bunun sonucunda ne çıktı oldu, bu çıktıyı aldığınız zaman neydi gibi bir çok ve önemli bilgi arayüzde bulunmuyor.

Son söz

Kedro için genel olarak bir değerlendirme yapmamız gerekirse; sizi kodlarınızı belli bir formatta yazmanız için zorlaması aslında kodlarınızı daha okunabilir, anlaşılır ve bir anlamda en basit şekliyle dökümante edilmiş tutma şansı veriyor. Bir diğer avantajı ise kaldığın yerden devam et özelliği.

Bunların yanında ise, sizi sadece .py uzantısında tutması, çalıştırma gibi işlemlerin komut satırı üzerinden yapılması ve olan ama aslında olmayan arayüzü eksik noktaları. Tabi iyi bir loglama yapısı da yok. Bunu da belirtmekte yarar var.

Yine de artıları sayesinde özellikle bir projede birden fazla kişi çalışacaksa tercih edilebilir diyebilirim.

Bugünlük bu kadar :) Kedro ile ilgili sorularınız varsa sorabilirsiniz.

Bir sonraki yazıda MlFlow’u anlatmaya çalışacağım.

Sağlıkla kalın.

--

--