12 Aralık 2020 Cumartesi

Azure Synapse Analytics ile Bütünleşik Büyük Veri Analitiği - 2

Önceki yazımızda Büyük Veri analitiği ihtiyaçları hakkında konuşarak Azure Synapse Analytics hizmetinin sunduğu çözümleri daha iyi kavramayı hedefledik.

Önceki yazımıza şu linkten erişebilirsiniz:

http://www.abdullahkise.com/2020/12/azure-synapse-analytics-ile-butunlesik.html

Şimdi gelin Azure Synapse Analytics hizmetinin öne çıkan farklı yönlerine biraz daha yakından bakalım.

Azure Synapse Studio

Öncelikle Azure üzerinde bir Synapse Workspace oluşturmak gerekli. Workspace oluştururken bir de Data Lake Storage oluşturmanız gerekecek. Bu storagei daha sonra bağlı servis olarak görüp kullanabilirsiniz.

Workspace oluştuktan sonra her şey Azure Synapse Studio ile kolayca aktif edilip kullanılabiliyor.


Azure Synapse Studio ile SQL ve Spark enginlerini (pool) aktif edebilir, Azure Storage ve Power BI gibi bağlı servisler oluşturup bu servisleri kullanabilir, ETL ve orkestrasyon için Pipeline ve DataFlow oluşturabilir, SQL Scriptlerinizi, Notebooklarınızı ve diğer geliştirmelerinizi depolayabilirsiniz. İşlemci kapasitesini ihtiyacınıza göre ayarlayabilir, yetkilendirmeler yapabilir, tüm çalışmalar hakkında toplanan logları inceleyerek serviste olup biteni takip edebilirsiniz.

SQL Pools

Workspace oluşturduğunuzda sanal bir SQL sunucu otomatik olarak kullanımınıza sunulur. Bu sunucu size özel performans sunmaz. Ortak kullanım amaçlıdır ve testler yapabilmeniz için idealdir. Bu sunucuya ister Synapse Studio ile isterseniz overview penceresinde de belirtildiği şekliyle <workspaceadı>-ondemand.sql.azuresynapse.net adıyla lokalinizden bağlanabilir, veritabanları oluşturup üzerinde çalışabilirsiniz.

SQL Pool bir nevi SQL veritabanıdır. Siz de kendinize özel bir server kapasitesi talep ederek yeni bir SQL Pool oluşturabilirsiniz. Oluştururken ihtiyacınız olan kapasiteyi DW…c birimi ile ifa edebilir, ihtiyacına bağlı olarak daha sonra değişiklik yapabilir, ihtiyaç duymadığınızda sanal sunucuyu duraklatabilirsiniz. 


Size özel bu sanal sunucuya da aynı şekilde lokalinizden <workspaceadı>.sql.azuresynapse.net server adıyla bağlanıp çalışabilirsiniz. 


Synapse Studio’da Manage bölümünden poolları oluşturup, yönetebilirsiniz.

SQL Pool dağıtık mimariye sahip bir SQL Server alt yapısı sunuyor. Bu altyapı ile son sürüm SQL Engine yeteneklerinden faydalanabiliriz. Mesela dahili PolyBase Engine sayesinde ilişkisel olamayan verileri SQL içerisinde bir tablo olarak, her defasında direk kaynağından güncel haliyle bilindik yöntemde sorgulama imkanına kavuşuyoruz.

Örneğin Azure Data Lake Storage’de depolanan csv dosylarını External Table olarak tanımlayabiliriz. Bu sayede veri SQL Server dışında storgede, tablo tanımı SQL Server’da yer alıyor. Diske gelen her yeni dosya içeriği ek bir müdahalede bulunmadan sorgularımızda anında listeleniyor.


Dilerseniz bu External Table nesnelerini dağıtık mimarı içerisinde sizin belirttiğiniz şekilde dağıtılan kalıcı tablolar da oluşturabilirsiniz. Ekrandaki örnekte dbo.KisilerStg extarnal table olarak tanımlandı, dbo.Kisiler ise Round Robin (diğer yöntemler Replicated ve Hash) yönetimiyle dağıtılan kalıcı tablo olarak tanımlandı. Kalıcı tabloların columnstore indexlerle desteklenmesi ve dağıtık mimari ile işlenmesi neticesinde Azure Synapse performansını en üst seviyede hissetmeniz sağlanmaktadır.

Özetle yapısal formatta çalışılan veri ambarlarınızı SQL Pool ile oluşturabilirsiniz.

Integrate

Synapse Studio üzerinde Integrate bölümünde Pipeline ve DataFlow oluşturarak veri akışını ve düzenlenmesini kurgulayabilirsiniz. Aslında bu bölüm Azure Data Factory ile hemen hemen aynı özelliklere sahiptir. 

Oluşturduğunuz akışları anında tetikleyebilir veya daha sonra çalışacak şekilde zamanlayabilirsiniz.


Spark Pool

Spark Pool bir Spark Engine hizmeti sunmaktadır. Yani Spark Core API (Scala, Python vs.), Spark SQL, Spark Streaming, GraphX ve Spark ML bileşenlerinden faydalanabilirsiniz.

Spark Pool dağıtık mimari kullanır. Ölçeklendirmeyi kolayca yapabilirsiniz ve bunu otomatikleştirebilirsiniz.


Spark InMemory çalışabilen, iteratif işlerde başarılı, dağıtık mimariye sahip ve her türden veriyi işleyip, görselleştirebileceğiniz ve hatta makine öğrenimi çalışmaları yürütebileceğiniz bir ortam sunmaktadır.

Manage bölümünden Spark poolu duraklatabilir. Performans kapasitesini ihtiyacınıza göre ayarlayabilirsiniz.

SQL Pool ve Spark Pool aslında bağımsız çalışır. Dilerseniz bu iki Engineı konuşturabilirsiniz. 

Spark Pool üzerinde çalışmak için Synapse Studio içerisinde yer alan dahili notebook çalışma ortamını kullanabilirsiniz. 


Özetle her türden veriyi depolamak için veri göllerinizi ve makine öğrenimi projelerinizi Spark Pool üzerinde oluşturabilirsiniz.

Power BI

Power BI, Gartner Magic Quadrant’ında lider konumda ve bu bugünlerde bir hayli yaygın kullanıma sahip kullanıcı dostu bir veri modelleme ve raporlama ürünüdür.

Spark Studio üzerinde bağlı servisler arasına Power BI çalışma alanları ekleyebilir interaktif raporlarınızı doğrudan burada oluşturabilirsiniz.


Aşağıdaki gibi bir çalışmayı linkteki tutorialı takip ederek elde edebilirsiniz:

https://docs.microsoft.com/en-us/azure/synapse-analytics/spark/apache-spark-to-power-bi


Azure Synapse Analytics hizmeti bir hayli yetenekli. Uçtan uca yapay zekâ ve iş zekâsı çalışmaları yürütebileceğiniz SQL, Spark, Data Factory, Azure Storage ve Power BI ürünlerini bir araya getirmiş, limitsiz depolama alanı sunan, ölçeklenebilir işlem kapasitesine sahip, dağıtık mimaride bütünleşik bir hizmet.

Azure Synapse Analytics ile büyük veri analitiği süreçlerinde ortaya çıkan birçok problemi tek çatı altında çözüme kavuşturmak mümkün görünüyor.

Azure Synapse Analytics ile Bütünleşik Büyük Veri Analitiği - 1

Veri analitiği uğraşı; geçmişte olanı tahlil etmek ve gelecekte olacakları tahmin etmek için, veri yığınları arasında şu 4 sorunun cevabını keşfetme veya icat etme serüvenidir:

Ne oldu? Neden oldu? Ne olacak? Olması için ne yapmalıyım?

Bu soruların cevaplarını bulabilmek için özetle şu 5 adımı atıyoruz:

Veri yığınlarını seçip depoluyoruz (Capture). Onları kullanışlı hale getirmek amacıyla düzenliyoruz (Organize). Çözüme hizmet edecek platformlarla entegre ediyoruz (Integrate). Ham veriyi karar vermek ve olayların iç yüzünü anlayabilmek için inceliyoruz (Analyze). Son olarak elde ettiğimiz bilgiler doğrultusunda aksiyonlar alıyoruz (Act). Bu döngüyü serüven boyunca tekrar ediyoruz.

Bahsi geçen bu adımları atarken birçok dirençle karşılaşılmaktadır. Özellikle söz konusu büyük veri ise macera hep devam ediyor. 

Uzun zamandır etrafta neler olup bittiği herkesin malumu. Veri çok fazla kullanıcı, cihaz, yazılım tarafından üretilmekte ve tek bir makinenin işlem kapasitesini aşacak şekilde çok büyük olabilmektedir. Üstelik çok farklı kaynaklardan birbirinden farklı formatlarda türeyebilmektedir. Bazı veriler daha durağan iken bazısı saniyede milyarlarca işlem sonucu türemekte ve geleneksel yöntemlerle yakalayıp analiz etmesi neredeyse imkânsız hale gelebilmektedir. Bunlara ek olarak içerisinde birçok gizemi barındıran veri yığınları arasından bir desen, bir eğilim elde etmek ciddi emek istemektedir.

Şimdilerde bir şirketi ilgilendiren verilerin yalnızca %20’si yapısal (tablo olarak düşünebiliriz) formattadır. Geriye kalan devasa veri yığını ise düz metin, resim, ses, video, json, xml, parquet gibi kendine has özelliklere sahip serbest formatlarda yer almaktadır. Artık rekabette avantaj sağlamak isteyen şirketlerin geçmişle birlikte geleceği görme, kendi türettikleriyle birlikte etrafta kendisiyle ilgili ya da ilgili olabilecek niteliğe sahip her türden veriyi işlemeleri gerekmektedir. 

Öyle görünüyor ki bu artık bir lüks değil gerekliliktir. Teknolojinin baş döndüren hızı bu alanda en üst seviyelere çıktığı için her türden verinin analiz edilmesinin bir ihtiyaç olduğunun fark edilmesi ile geç kalınması arasında aksiyon alınabilecek yeterli zaman bulunamayabilir.

Büyük veri analitiği çalışmalarının daha az yorucu, sonuçların daha kullanışlı ve projelerin daha sürdürülebilir olması için polyglot yaklaşımı yaygındır. Yani farklı türden araçlar güçlü olduğu noktalarda devreye alınarak daha iyi çözümler üretilmeye çalışılır.

Polyglot yaklaşımı biryandan da başka problemleri gündeme getirdiği aşikar. Bu araçların yönetimi, güvenliği, performansı, birbiri ile iletişim kurması vs.

Bir büyük veri analitiği projesi uçtan uca düşünüldüğünde birçok teknik ve aracı bir arada kullanmayı ve çeşitli problemlere çözüm üretmeyi ister istemez zorunlu kılıyor; yapısal olan-olmayan, farklı hacim, hız ve tipte veri üreten kaynaklara erişilmesi, verilerin düzenlenip ara katmanlara taşınması, veri gölleri ve veri ambarlarının oluşturulması, makine öğrenimi ve yapay zeka çalışmalarının yürütülmesi ve nihayet elde edilen çıktıların son kullanıcıya etkili şekilde raporlanması. Ayrıca artan verinin depolanması için gerekli alanın temin edilmesi, hesaplamalar için zaman zaman daha fazla ihtiyaç duyulan işlemci gücünün sağlanması, birlikte çalışmaya elverişli araçlar kullanılması, ihtiyaç anında kullanılabilecek yetenekli programlama dillerinin devreye alınabilmesi vs.

Bu ihtiyacı bir noktaya kadar ayrı ayrı SQL Server, Spark, Hadoop, Data Factory, Power BI, Data Lake Storage kullanarak karşılamak mümkün olabilir. Ancak bütünleşik bir yaklaşımla uçtan uca çözüm sunan başka bir hizmet daha var. 

İşte karşınızda Microsoft’un yeni göz bebeği Azure Synapse Analytics.

Azure Synapse Analytics eski Azure SQL Data Warehouse servisinin yerine gelen çok daha gelişmiş bir servis. Hem içerisinde Polybase Engine yeteneklerini sunan SQL Engine hizmetini (SQL Pool) hem Spark yeteneklerini (Spark Pool) hem Data Factory yeteneklerini (Integrate) hem de Power BI (Linked Service) yeteneklerini bir arada sunuyor. 

Üstelik dağıtık mimarisi sayesinde ihtiyacınıza göre işlemci gücünü ayarlayabilir, sınırsız depolama alanına sahip olabilirsiniz. Bu ürün sayesinde tek çatı altında veri gölleri oluşturarak her türden verinin taşınması, düzenlenmesi ve depolanması, stream verinin işlenebilmesi, graph tabanlı problemlerin çözülebilmesi, makine öğrenimi ve yapay zeka çalışmalarının yapılabilmesi, veri ambarlarının oluşturulabilmesi ve interaktif raporların hazırlanabilmesi mümkün. Üstelik bunları isterseniz lokalinizdeki bilindik araçlarla, isterseniz tarayıcınız üzerinde çalışan Azure Synapse Studio ile hiçbir kuruluma gerek kalmadan yapabilirsiniz.


Azure Synapse Analytics hizmetinin bileşenlerini bir sonraki yazımızda daha detaylı inceleyeceğiz.

Sonraki yazımıza ulaşmak için:

Faydalı olması dileğiyle.


27 Eylül 2020 Pazar

Azure Machine Learning Studio ile Machine Learning Demo Serisi - Bike Buyer – 3 (Classification)

Bu videoda Azure Machine Learning Studio üzerinden bir classification problemine odaklanıyoruz
Senaryomuza göre bizden bisiklet alan ve almayan müşterilerimizin bir takım özelliklerine bakarak bir model eğitiyoruz. Daha sonra bu model yardımıyla potansiyel alıcıları önceden tahmin edebileceğiz.

Bu sayede kampanya ve reklamlarımızın doğru hedef kitleye daha az maliyetle ulaşmasını sağlayabiliriz.

Serinin bu bölümünde Azure ML Studio üzerinde yayınladığmız Web Service için Input ve Output nasıl düzenlenir konusuna bir göz atıyoruz. Yayınladığımız Web Servicei postman ve excel ile test ediyoruz.






Azure Machine Learning Studio ile Machine Learning Demo Serisi - Bike Buyer – 2 (Classification)

Bu videoda Azure Machine Learning Studio üzerinden bir classification problemine odaklanıyoruz

Senaryomuza göre bizden bisiklet alan ve almayan müşterilerimizin bir takım özelliklerine bakarak bir model eğitiyoruz. Daha sonra bu model yardımıyla potansiyel alıcıları önceden tahmin edebileceğiz.

Bu sayede kampanya ve reklamlarımızın doğru hedef kitleye daha az maliyetle ulaşmasını sağlayabiliriz.

Serinin bu bölümünde Classification algoritmasının başarısını anlamamızı sağlayan metriklere (Accuracy, Precision, Recall, F1 Score) ve ROC grafiğine bir göz atacağız. Hemen ardından eğitilmiş modelimizi bir Web Service haline getirip test edeceğiz.








16 Ağustos 2020 Pazar

Bu Yıl (2020) Staj Okulu Etkinliğinde Azure Machine Learning ile Makine Öğrenimine Odaklandık

Staj Okulu ekibi her yıl gönüllü ve üstün çabaları ile staj yapmak isteyen gençlere destek olmaya devam ediyor.

Staj Okulu bünyesinde stajlarını yapan arkadaşlar hem alanında uzman profesyonellerden en güncel teknik ve teknolojileri dinleyebiliyor, hem kariyerleri yolunda sağlam adımlar atabilmeleri için değerli mentorlerden destek alabiliyor, hem de iş bulma konusunda önemli bağlantılar edinebiliyorlar. 

Staj Okulu ekibine bu imkanı gençlere sundukları ve gönüllü çabalarını eksik etmedikleri için teşekkür ediyoruz. Ayrıca her yıl gönüllü destek veren birbirinden kıymetli profesyonelleri de tebrik etmeden geçmek olmaz.

Biz de her sene olduğu gibi bu sene de bu programda oturum düzenledik. Machine Learning ve ilgili konular hakkında ön bilgi verdik ve Azure Machine Learning ile nasıl Machine Learning (Makine Öğrenimi) yapılabileceğine odaklandık. Eğittiğimiz modeli web service haline getirdik ve yayınladık.

Sizlere oturumdan kareler paylaşmak isterdim. Lakin pandemi dönemi olduğu için bu sene fiziksel olarak bir araya gelemedik. Oturumumuz 15 Ağustos 2020 09:00-11:00 arasında Teams toplantısı olarak gerçekleşti.

Eğitime katılan, katkı sağlayan tüm arkadaşlarıma teşekkür ediyorum. Hayatlarında başarılar diliyorum.

Staj okulu sitesine şuradan ulaşabilirsiniz:

http://basvuru.stajokulu.com/

Genel olarak program hakkında fikir sahibi olmak için 2020 takvimine bir göz atabilirsiniz:

http://basvuru.stajokulu.com/program/?p=673A506ACE904C44BC946F30FD7A605C

15 Ağustos 2020 Cumartesi

2020-2021 Dönemiyle Birlikte Microsoft Tarafından Data Platform Alanında Art Arda 5 Yıl En Değerli Profesyonel (MVP) Ödülü!

Her yıl yeniden değerlendirmeye tabi tutularak verilen MVP (Most Valuable Professional) ödülleri dünya çapında oldukça kıymet görmektedir. Ülkemizde de çeşitli branşlarda MVP ödülüne layık görülen çok değerli profesyonel dostlarımız mevcut, oldukça aktif ve çevresine yüksek fayda üretmekteler.

Bendeniz de son 5 yıldır üst üste Data Platform alanında bu ödüle layık görülmekteyim. Saha tecrübelerimi ve alanımdaki en güncel teknik ve teknolojik bilgileri çevrem ile paylaşıyor, sizlerden gelen sorulara elimden geldiğince hızlı cevap veriyorum.

Severek yaptığım bu aktiviteleri takip edip beni 5 yıl üst üste Data Platform alanında MVP ödülüne layık gören Microsoft ekibine teşekkür ediyorum.


Yıllardır eğitmen ve danışman rollerinde görev yapıyor olmam bilgi paylaşımı konusunda daima motivasyon içerisinde olmamı sağlamıştır.  Bu yıl Veri Bilimi, Veri Mühendisliği, İş Zekası Uzmanlığı, Veritabanı Yöneticiliği ve ilişkili konularda bir çok hizmet ürettik.

Bir yandan ücret mukabili verdiğimiz hizmetler devam ederken bir yandan da bu konularda gönüllü bilgi paylaşımlarımızı blog, makale, video, seminer, web semineri gibi yöntemlerle devam ettirdik. Dahası sizlerden gelen yüzlerce soruya cevap ürettik ve onlarca kişinin bu alanda gelişimi için mentorluk desteği verdik.

Bu ödülünü size olan faydası; Veritabanı Yönetimi, İş Zekası, Veri Bilimi, Veri Mühendisliği ve alt başlıklarında benimle ve dahası ekibimle fikir alışverişinde bulunabileceğinizi bilmektir.

Hazır ilgiliyken hemen belirteyim; Son 2 yıldır Devcosci Bilişim Danışmanlık ve Eğitim bünyesinde konusunda uzman arkadaşlarımın da desteği ile ücretsiz online yetiştirme programları düzenliyoruz. 

Program hakkındaki daha önceki yazıma şuradan ulaşabilirsiniz:

http://www.abdullahkise.com/2020/03/ucretsiz-yetistirme-programlarmz-ile.html

Bu programa dahil olmak isterseniz aşağıdaki linki takip edebilirsiniz. Talep yoğunluğuna bağlı olarak arkadaşlarım programa dahil etmek üzere sizlerle iletişime geçecektir.

https://www.devcosci.com.tr/Blog/BlogPost/Devcosci-Bilisimden-Veritabani-Sorgulama-Gelistirme-ve-Is-Zekasi-Alaninda-Ucretsiz-Yetistirme-Programi

faydalı olması dileğiyle...

24 Mart 2020 Salı

Azure Machine Learning Studio ile Machine Learning Demo Serisi - Bike Buyer – 1 (Classification)

Bu videoda Azure Machine Learning Studio üzerinden bir classification problemine odaklanıyoruz

Senaryomuza göre bizden bisiklet alan ve almayan müşterilerimizin bir takım özelliklerine bakarak bir model eğitiyoruz. Daha sonra bu model yardımıyla potansiyel alıcıları önceden tahmin edebileceğiz.

Bu sayede kampanya ve reklamlarımızın doğru hedef kitleye daha az maliyetle ulaşmasını sağlayabiliriz.

Video içerisinde geçen bazı linkler ve BikeBuyer.csv dosyasına aşağıdaki linklerden ulaşabilirsiniz.

Data Science Çalışmaları için Microsoft Çözümleri
http://www.abdullahkise.com/2020/03/data-science-calsmalar-icin-microsoft.html 

9 Mart 2020 Pazartesi

Data Science Çalışmaları için Microsoft Çözümleri

Data Science (Veri Bilimi) çalışmaları yapan kişiye Data Scientist (Veri Bilimcisi) dendiği malumunuz. Veri Bilimcilerinin temel odağı bazı tiplere ayrılmış tahminleme problemlerinin çözümleri için matematiksel bir model oluşturmaktır. Veri Bilimcileri modelleri eğitmek ve başarısını test etmek için veriyi detaylıca incelemeleri gerekir.

Veri Bilimi çalışmalarının başarıyla sürdürülebilmesi için farklı farklı araçlar, platformlar ve diller tercih edilebilir. Bu araçların neredeyse tamamı açık kaynaktır. Microsoft da uzun zamandır açık kaynak dünyasının gelişimine, kendi çözümleriyle katkı sunarak destek vermektedir. 

Microsoft, Veri Bilimi alanında çeşitli araçları, platformları ve kütüphaneleri hem yerel hem de bulut çözümleri olarak kullanıma sunmaktadır.

Bu çözümlerin neler olduğuna bir göz atalım:

Şirket içi Çözümler:
  • SQL Server Machine Learning Services: SQL Server kurulumu sırasında seçebildiğiniz bir özellik. SQL Server 2016'dan beri geliştirilmekte. Daha önceleri sadece R dili ile çalışılabiliyordu ve kurulumda R in DB adıyla anılıyordu. SQL Server 2019 ile birlikte R, Python ve Java dilleri ile çalışılabiliyor. Kurulum sırasında Machine Learning Service isimli bu özelliği seçip yükleyebilirsiniz. Bu özellik sayesinde SQL Server içerisinde bir procedure yardımıyla R, Pyhon, Java dillerini kullanarak veri bilimi çalışmaları yapmak mümkün. Machine Learning Service tek başını kurulamıyor. Mutlaka Database Engine ile birlikte kurmanız gerekli. Bu konudaki serimizin son yazısına şu linkten bir göz atabilirsiniz: http://www.abdullahkise.com/2020/02/sql-server-2019-uzerinde-makine_22.html
  • SQL Server Machine Learning Server: Daha güçlü çalışmalar yapmak için Database Enginedan bağımsız olarak Machine Learning Server kurabilirsiniz. Bu şekilde kurmanın bir çok avantajı var. Hem performans açısından daha güçlü bir yapı hem de ölçeklendirebilmek ve webservice yapabilmek gibi ek avantajları mevcut.

Bulut tabanlı çözümler:
  • Azure Machine Learning Studio (Classic): Sürükle bırak ile hiç kod yazmadan Machine Learning yapma imkanı veren bir Azure hizmeti. Kullanımı oldukça kolay. Notebooklar oluşturmak, arayüzler ile çalışarak verinin hazırlanması, modelin eğitilmesi, test edilmesi ve eğitilmiş bir modelin web service haline getirilerek yayınlanması oldukça kolay. Bu servisin sunduğu hazır araçlar size yeterli gelmezse R ve Python dillerinde kod yazabileceğiniz modüllerden faydalanabilirsiniz. Bu hizmet daha çok makine öğrenimi konusuna hızlıca giriş yapmak, öğrenmek ve küçük-orta ölçekli projeler geliştirmek için ideal. Azure aboneliğine gerek olmadan https://studio.azureml.net/ adresinden giriş yaparak ücretsiz hesap açabilirsiniz. Bu hizmet ile çalışırken çalışma alanınızın bulunduğu bölgedeki işlem gücünü ortak kullanmaktasınız.

  • Azure Machine Learning: Bu hizmeti aktif etmek için Azure aboneliğiniz olması gerekir. Herhangi bir araç ile Python kodlarını kullanarak bu hizmetten faydalanabilirsiniz. Hem Azure ML kütüphanelerini hem de Tensorflow, Scikit-learn, Pytorch, Keras vs. gibi açık kaynak kütüphaneleri kullanabilirsiniz. Hizmetin Basic ve Enterprise seçenekleri mevcut. Enterprise seçeneğinde Azure ML Studioya benzer şekilde çalışabileceğiniz Designer ile AutoML ve veri etiketleme gibi ek özellikler geliyor. Notebooklar oluşturabilir, hem arayüz hem kodlar ile model eğitebilir, bu modelleri kaydedip versiyonlayabilir, eğitilmiş modellerinizi web service haline getirip yayınlayabilirsiniz. AutoML ve HyperDrive özellikleri sayesinde ML çalışmalarındaki değiştir-dene-gör adımlarını sizin için Azure'un atmasını sağlayabilirsiniz. Ayrıca ekiplerinizin birlikte çalışabileceği bir veri etiketleme projesi başlatabilirsiniz. Tüm işlemleriniz için gereken işlem gücünüzü kendiniz oluşturup yönetebilirsiniz. Web servicelerinizi, imageleri oluşturup Azure Kubernetes Services, Azure Container Instance gibi hizmetler üzerinden yayınlayabilirsiniz.

  • Azure Databricks: Spark tabanlı analitik platform olan Databricks, Azure üzerinden kolayca aktif edilip kullanılabilir. Spark SQL, Spark ML, GraphX, Spark Streaming bileşenleri ile bulutta kendi yönettiğiniz işlem gücü ve kullanışlı arayüzler sayesinde Big Data problemlerine çözümler bulabilirsiniz. Arayüzler, Azure hizmetleri ile entegre olması ve dahili notebook, işleri oldukça kolaylaştırıyor. Bu sayede clusterların yönetimine değil de kendi problemlerinize odaklanabiliyorsunuz. Notebooklar üzerinde R, Pyhon, Scala, SQL ve shell komutları ile verilerinizi hazırlayabilir ML modelleri eğitip test edebilirsiniz.
  • Azure Data Science Virtual Machine (DSVMs): Azure üzerinde önceden hazırlanmış sanal makineleri ifade etmektedir. Bu VM'lerin Windows ve Linux versiyonları mevcut. Bir çok popüler ML aracı yüklenmiş bu makineleri, ortam hazırlamayla vakit kaybetmeden kolayca aktif edip kullanabilirsiniz. VM'ler içerisinde çok çeşitli araçların en güncel versiyonu hazır geliyor. Dilerseniz GPU desteği olan VM'leri de aktif edebiliyorsunuz.
  • Azure Cognitive Services: Uygulamalarınızın insan gibi duymasını, görmesini, yorumlamasını ve mesela bir chatbot olarak kullanıcılar ile iletişim kurmasını istiyorsanız bu başlık altındaki hizmetler tam size göre. Vision, Speech, Decision, Search, Language başlıklarında çözüm sunan bir çok servisi kolayca aktif edip kullanabilirsiniz. Servislerin çoğunu eğitim aşamasına gerek olmadan direk kullanabiliyorsunuz. Bazılarını ise kendi verilerinizle eğitebiliyorsunuz. Bu servislere HTTP REST çağrıları ile erişip uygulamalarınızı akıllandırabilirsiniz.

Diğer Çözümler:
  • ML.NET: .NET uygulamaları içerisinde Machine Learning yapma imkanı veren açık kaynak frameworktür.
  • Windows ML: Windows 10 cihazlarda Machine Learning yapma imkanı veren bir enginedır.
  • MMLSpark: Spark ekosistemine derin öğrenme ve veri bilimi araçları konusunda yeni yetenekler kazandıran açık kaynak kütüphanedir.
  • Azure HDInsight: Hadoop platformunun Azure üzerindeki halidir. Bu hizmet ile Hadoop ve Spark yeteneklerini birlikte kullanabilirsiniz.

6 Mart 2020 Cuma

Ücretsiz Yetiştirme Programlarımız ile Yıllardır Sektöre Yeni Uzmanlar Kazandırıyoruz!

Yaklaşık 9 yıl önce Veri Yönetimi Çözümleri ekibini kurmaya karar verdiğimizde bir şey fark ettik. Sektör içerisinde Veritabanı Yönetimi ve İş Zekası konularında çok tecrübeli veya yeni yeni bu konulara ilgi duyan bir çok aday mevcut olmasına rağmen orta seviyede tecrübeye sahip adaylara kolayca ulaşamıyorduk. Orta seviyeye biraz daha odaklandığımızda sayısı az da olsa bazı kişilerle tanıştık fakat vaat ettikleri tecrübeye sahip olmadıklarını fark ettik.

Büyüme ihtiyacımızın hat safhaya ulaştığı bir dönemde o zamanlar çok radikal sayılan bir karar aldık. Eğitim ve danışmanlıktan yani bilgiden kazanç elde eden kişiler olarak belki de kendi işimizi baltalayabilecek adımlar atmaya başladık ve ücretsiz yetiştirme programları düzenledik.

Bu programlarda Veritabanı Sorgulama ile başlayıp Veritabanı Geliştirme, Veritabanı Yönetimi ve İş Zekası gibi teknik konularla birlikte sunum teknikleri, etkili çalışma teknikleri gibi teknik olmayan konularda ücretsiz olarak onlarca kişiyi yetiştirdik. Programlardan mezun olan arkadaşların bir kısmını kendi kadromuza kattık, bir kısmının da başvurularında referans olduk.

Şimdilerde onları bir çok firmada kıdemli uzman ve ekip yöneticisi olarak görmek bize gurur veriyor. Karşılaştığımızda bizi minnettar duygularla ağırlamaları hayatlarına ne kadar anlamlı ve değerli bir dokunuş yaptığımızı açıkça gösteriyor. Bir kısmı rakiplerimizde görev alıyor olsa da bu motivasyonumuzu hiç kaybetmedik. Çünkü biliyoruz ki ülkemizin her alanda gelişmesi gerekli ve bu çorbada bizim de tuzumuz olmalı.

Çok farklı kaynakları taramak, güncel bilgiler edinmek ve bu bilgileri saha tecrübesiyle harmanlamak oldukça keyifli. Bir şeyler öğrenmek, uygulamak ve aktarmak benim için vazgeçilmez bir tutku.  Birlikte çalıştığımız arkadaşlar için de bu hep böyle oldu. Edindiğim bilgileri fırsat buldukça çeşitli platformlar vasıtasıyla paylaşıyorum. Bu tutkum son 4 yıldır Microsoft tarafından verilen ve her yıl yenilenen, Data Platform alanında MVP (Most Valuable Professional) ödülüyle de taktir ediliyor. Bizzat tanıdığım ve hiç karşılaşmadığım bir çok kişinin sorularını cevaplıyorum. Sorunlarına çözüm olacak paylaşımlar yapıyorum. Tabi ki bunlar gönüllü aktiviteler. Diğer yandan müşterilerimize sunduğumuz hizmetler en yüksek kalitede tam gaz devam ediyor.

Geçen sene (21 Ocak 2019) Devcosci Bilişim, Danışmanlık ve Eğitim firmasını kurduk. Bir yandan veri ve verimlilik adına kullanılan teknik ve teknolojilerle kurumsal müşterilerimize terzi usulü çözümler sunarken bir yandan da yapay zeka entegrasyonu olan asistanımız ile IoT cihazımızdan oluşan kendi ürünümüzü geliştiriyoruz.

Daha önce çalıştığım firmalarda yönettiğimiz kaynaklarla yaptığımız gönüllü paylaşımları kendi şirketimizin kaynaklarıyla devam ettiriyoruz. Geçen sene 30 kişilik bir yetiştirme programı başlattık. kişisel hıza bağlı olarak 4-7 ay süren bu programdan bazı arkadaşlar sevindirici derecede faydalandı. Program sırasında iş bulanlar da oldu. Hatta bazıları rakiplerimizde çalışmaya başladı, bazıları müşterilerimizde. Biz de Devcosci olarak programı başarıyla tamamlayan bir arkadaşımızı kendi bünyemize almaya karar verdik. Burada temel motivasyonumuz ülkemize katkı sağlamak. Yol arayanlara yol göstermek.


Program şimdilik SQL Querying, Database Development, Business Intelligence, Self-Service BI konularını içermekte. Yakın zamanda Database Administration, Cloud Computing, Big Data ve Machine Learning başlıklarını da programa dahil etmeyi, bu programın Data Analyst, Data Engineer ve Data Scientist rollerine iyi bir hazırlık olmasını istiyoruz. Şimdilik bu başlıkları bünyemize dahil ettiğimiz arkadaşlarla ele alıyoruz.

Önümüzdeki günlerde yeni bir program daha başlatacağız. Liste çok kalabalık. Enerjimiz el verdiğince söz verdiğimiz arkadaşlarımıza davetlerimizi ileteceğiz. İnşallah bu program uzun yıllar  boyunca, kendini geliştirmek isteyip bir yol, bir destek arayan arkadaşlarımız için ilaç olmaya devam edecek.

22 Şubat 2020 Cumartesi

SQL Server 2019 üzerinde Makine Öğrenimi - 4 (Machine Learning Services in Database (R and Python)) (Eğitilmiş Model ile Tahminleme)

Serinin bu yazını kadar SQL Server özelliklerinden bir olan Machine Learning Services in Database özelliğini kullanabilmek için gerekli ortamı hazırladık. R ve Python gibi dillerdeki scriptlerin nasıl çalıştırıldığından bahsettik. Bir Machine Learning modeli eğittik ve SQL Server tablosunda depoladık. Bu yazıdaki işleyeceğimiz senaryoyu uygulayabilmek için önceki yazılara göz atmanızı öneririm.

Önceki yazılara şu linklerden erişebilirsiniz:

SQL Server 2019 üzerinde Makine Öğrenimi - 1 (Machine Learning Services in Database (R and Python))

SQL Server 2019 üzerinde Makine Öğrenimi - 2 (Machine Learning Services in Database (R and Python)) (Tablo ve DataFrame ile Çalışmak)

SQL Server 2019 üzerinde Makine Öğrenimi - 3 (Machine Learning Services in Database (R and Python)) (ML modeli eğitmek ve depolamak)

Bu yazımızda daha önce eğittiğimiz ve SQL Server tablosunda varbinary olarak depoladığımız modeli Python scriptinde okuyup model nesnesi haline getireceğiz. Daha sonra bu nesne yardımıyla tahminleme yapacağız.

Senaryomuz tam olarak şöyle:
  1. Daha önce varbinary olarak depoladığımız eğitilmiş modelimizi seçeceğiz.
  2. Seçtiğimiz modeli kullanarak tahminleme yaptığımız Python scriptini bir procedure ile kapsülleyeceğiz.
  3. Tahminlemek istediğimiz verileri yeni proceduree parametre olarak verip tahmin sonuçlarını görüntüleyeceğiz.
Bu yazıda SSMS ve Azure Data Studio aracını kullanabilirsiniz. Ben önceki yazılarda olduğu gibi Azure Data Studio aracını kullanmaya devam edeceğim.

Senaryomuzu adım adım işleyelim.

1- Depoladığımız modeli seçelim:


Daha önce MPGCarsDB isimli veritabanındaki mpgcars tablosunda bulunan verilerle model eğitmiş ve bu modeli mpgcars_model isimli tabloya yüklemiştik. Bu tablodan filtreleyerek seçtiğimiz modeli tahminleme yaptığımız Python kodlarına göndereceğiz.

Depoladığımız modele bakalım:

USE MPGCarsDB
GO

select * from mpgcars_model



2- Tahminleme yapacak procedureü kapsülleyen procedure yazalım:


Python scriptlerini sp_execute_external_script procedureünün @script parametresi ile çalıştırıyorduk. Bu procedureün @input_data_1 parametresine tahmin için kullanacağımız satırları veren SELECT sorgusunu yazıyoruz. Bu satırları procedure içerisinde @input_data_1_name parametresiyle belirttiğimiz mpgcars adıyla kullanabileceğiz. Tahminlemek için bir eğitilmiş modele ihtiyacımız var. Bu eğitilmiş modeli, tanımını @params parametresinde yaptığımız @modelbin isimli parametreye verip script içerisinde kullanacağız. Sonrasında tahminlemede kullanılacak satırları ve tahminleri WITH RESULT SETS ile belirttiğimiz formatta bir tablo olarak görebileceğiz. 

sp_execute_external_script procedureünü kolaylık olsun diye usp_PredictUsingModelBin isimli procedure ile kapsülleyelim ve eğitilmiş model ile SELECT sorgusunu parametrede gönderelim.

CREATE OR ALTER PROC usp_PredictUsingModelBin (@Tmodelbin varbinary(max),@rows nvarchar(500))
AS
BEGIN
EXEC sp_execute_external_script
        @language = N'Python',
        @input_data_1=@rows,
        @input_data_1_name=N'mpgcar',
        @script = N'
#modeli serileştirmek için
import pickle
import pandas as pd
import numpy as np

modelLR = pickle.loads(modelbin)
#print(modelLR)

tahminler_LR=modelLR.predict(mpgcar)
print(tahminler_LR)

gercek_tahmin_LR=np.hstack((mpgcar,tahminler_LR))

OutputDataSet=pd.DataFrame(gercek_tahmin_LR)
'
    ,@params = N'@modelbin varbinary(max)' 
    ,@modelbin = @Tmodelbin

    WITH RESULT SETS (
                (
                    cylinders int ,
                    displacement float ,
                    horsepower int ,
                    weight float ,
                    acceleration float,
                    modelyear int ,
                    origin int ,
                    mpgTahmin float
                )
            )
END

Yukarıdaki Ptyhon scriptinde pickle.loads(modelbin) satırında varbinary olarak depoladığımız eğitilmiş modeli modelLR değişkenine atadık. Artık kolayca modelLR.predict(mpgcar) satırında olduğu gibi tahmin sonuçlarını alabiliriz.

Tahmin sonuçları biz dizi olarak geliyor. Tahminleri ve tahmin için kullanılan satırları np.hstack((mpgcar,tahminler_LR)) ile birleştirip OutputDataSet değişkenine atayarak tablo formatında döndürüyoruz.

3- Tahminleri alalım:


Eğitilmiş modeli bir değişkene alalım ve yukarıda oluşturduğumuz procedureün parametrelerine ilgili değerleri vererek 4 satır için tahmin sonuçlarını görüntüleyelim.

DECLARE @trainedModel varbinary(max)
SELECT
    @trainedModel=model
FROM mpgcars_model
WHERE language='Python' and model_name='sklearn.linear_model.LinearRegression'

exec usp_PredictUsingModelBin
@Tmodelbin=@trainedModel,
@rows='SELECT * FROM (VALUES
                     (4,140,86,2790,15,82,1),
                     (4,97,67,2145,18,80,3),
                     (8,440,215,4312,8,70,1),
                     (8,455,225,3086,10,70,1)
) as t
 (cylinders,displacement,horsepower,weight,acceleration,modelyear,origin)'


Siz de farklı sayılar deneyebilirsiniz. Örneğin horsepower ve weight alanlarında değişiklik yaparak mpg (miles per galon) miktarının ne olabileceğine dair tahminleri alabilirsiniz.

Bu şekilde raw modeli deserialize edip model nesnesi elde etmek ve tahminleme yapmak hızlı olsa da çok daha hızlı yöntemler de mevcut. SQL Server tahminler üretmek için R ve Ptyhon runtimeın ihtiyaç duymayacağınız iki yöntem sunuyor. Bunlar Realtime Scoring ve Native Scoring olarak isimlendiriliyor. Bazı kısıtları olsa bu yöntemler daha hızlı.

Tabi çok daha yüksek performans ihtiyacı mevcutsa Machine Learning Service değil de Machine Learning Server ile çalışmanız daha isabetli olacaktır.

Seri boyunca uçtan uca SQL Server üzerinde Machine Learning Service in Database özelliğini kullanarak bir ML çalışmasının nasıl yapılabileceğini incelemiş olduk. Python, R, Java kodlarını kullanarak, hatta CLR entegrasyonu sayesine .NET kodlarını kullanarak SQL Server'a yeni yetenekler kazandırabilirsiniz.

faydalı olması dileğiyle...