8. Yapay Zeka
Kavramlar [Bilimsel Temeller]
• Bilgisayar Bilimleri ve Müh. : Donanım ve Yazılım
• Felsefe : Muhakeme Kuralları
• Matematik : Mantık, Algoritma ve Optimizasyon
• Kavram Bilimi ve Psikoloji : İnsan Düşünce Sürecinin Modellenmesi
• Sinir Bilimi : İnsanın Aşağı Seviyede Beyin Faaliyet M.
• Biyoloji : Taklit Bilimi
• Dilbilim : Temel Bilgisayar Bilimi
9. Yapay Zeka
Alt Kavramlar
• Artificial Intelligence AI
• Machine Learning ML
• Deep Learning DL
• Data Science
– Machine Learning[+Deep Learning] + Domain
• Computer Vision CV
• Natural Language Processing NLP
• Data Engineering
– DevOps + Machine Learning[+Deep Learning]
10. Yapay Zeka
Kavramlar [Kapsam]
• İnsan Modeli Üzerinden Yapay Zeka
– Beyin(Algı ve Öğrenme) : Machine Learning / Deep Learning
– Görü : Computer Vision
– Hafıza : BigData
– İletişim : NLP & Speech Recognition
– Fiziksel Beden : IoT & Robotics
12. MLaaS?
Machine Learning as a Service
ML/DL algoritma ve yazılımlarının, bulut bilişim hizmetlerinin bir
bileşeni olarak sunulması modeline denir.
MLaaS = (SaaS + [ML/DL/CV])
13. Ne Zaman MLaaS Kullanmalı?
• Yazılım BigData ile çalışıyorsa
• Yazılımın sürekli iyileştiriliyorsa
• Yazılım yeterince güvenli ise…
• Gerçek-Zamanlı anlamlandırma varsa
• Anlık karar alma süreçleri
• Yüksek boyutlu veriler üzerinde çalışılıyorsa
• Yazılım küçük ise
• Kaynaklar sınırlı ise
• Finans
• Donanım
• İnternet Hızı
• Ekip
• Basit özelliklere sahip bir yazılım ise
MLaaS için uygun şartlar MLaaS için uygun olmayabilir
15. MLaaS
MLaaS Cloud Service Providers (Örnekler)
• AWS Machine Learning : aws.amazon.com/tr/machine-learning
• Speech &Text Processing APIs
– Amazon Lex
– Amazon Transcribe
– Amazon Polly
– Amazon Comprehend
– Amazon Translate
• Google Cloud ML Services : cloud.google.com/ai-platform
– Cloud Vision API : https://cloud.google.com/video-intelligence/
• Cloud Vision Intelligence
• AutoML Vision API
• AutoML Video Intelligene Classification API
– Speech & Text Processing APIs
• Dialogflow
• Cloud Natural Language APIs
• Cloud Speech API
• Cloud Translation API
• AutoML Natural Language API
• AutoML Translation API
16. MLaaS
MLaaS Cloud Service Providers (Örnekler)
• Microsoft Azure ML Studio : studio.azureml.net
• Cognitive Services
– Speech
– Language
• Image & Video Processing
• IBM Watson ML : ibm.com/cloud/machine-learning
• Speech to Text
• Text to Speech
• Language Translator
• Natural Language Classifier
• Natural Language Understanding
• Personality Insights
• Tone Analyzer
17. ‘Biz MLaaS platformu geliştirmek için hem üretim hem de tüketim
başlıklarındaki yetenekleri kullanacağız.’
18. Hidden Technical Debt in Machine Learning Systems
https://papers.nips.cc/paper/2015/file/86df7dcfd896fcaf2674f757a2463eba-Paper.pdf
Genellikle tüm ekip, odak
ve kaynakların yönlendirildiği alan!
20. Başarı İçin Neler Gerekli?
Süper Özet!
• Her şeyden önce yetenekli ve tecrübeli bir geliştirici ekibe sahip olmak!
• ML/DL/CV geliştirme ortamına, süreçlerine hakim ve tecrübe sahibi olmak.
• Donanımsal gereksinimleri doğru anlamak ve karşılamak.
– Ekibe donanım(GPU vb.) konusunda destek olacak birinin olması harika olurdu!
• MLaaS mimarisini çok iyi anlamak.
• Paralel Programlama ve Distributed Systems konularına hakim olmak.
– Hem programlama hem de altyapı çözümlerini içerir.
• BigData, Data Engineering, MLOps araç-gereçlerine(çok geniş) hakim olmak.
– Bu seviyede artık model geliştirme ile değil, o modeli battle-tested hale getirmeye odaklıyız!
• Realtime Systems konularına hakim ve tecrübe sahibi olmak
– Genellikle modern uygulamalarda kullandığımız tekniğe Near-Realtime denir.
– Realtime Vs Near-Realtime
22. MLaaS
MLaaS Ürünleşme Sürecine Genel Bakış
• Donanım
– CPU
• Sadece alıştırma/araştırma kodları için kullanılabilir.
• Bazen de metinsel ML projelerinin ürün ortamında tercih edilebilir.
• Ses, Görüntü ve Video işleyecek projelerin ürün ortamında tavsiye edilmez.
– GPU
• Ürün ortamı için mecburi! Geliştirme ortamı için de tavsiye edilir.
• Ürün ortamı için: özellikle Ses, Görüntü ve Video veri projelerinde…
– HDD
• Yüksek depolama alanı ve hızlı disk okuma-yazma kapasitesi…
• Yazılım
– Büyük ihtimalle projeniz planladığınız sürede bitmeyecek…
• Cloud Computing
– Depolama hizmetleri, metinsel, görüntü ve ses gibi verilerin depolanması ve işlenmesi.
– Cloud tabanlı hazır yapay zeka servislerinin kullanılması.
• Zaman!
– Doğru algoritma seçimi, model geliştirme, model eğitme… Tecrübeli bile olsanız deneme/yanılma
yapacaksınız.
23. MLaaS
MLaaS Ürünleşme Sürecine Genel Bakış
• Python
– HPC in Python : Python’ı yüksek performanslı kullanmak için gereken birçok ileri seviye konu!
– Python’ın paralel programlama yeteneklerini kullanmak.
– Python ile geliştirilmiş birçok yüksek performanslı distributed computing altyapısını kullanmak
• C++
– Çekirdek ML/DL/CV algoritmalarını library/framework’ler ile model geliştirmek için kullanmak!
– TensorFlow ve PyTorch gibi library/platform’lar C++ ile geliştiriliyor ve siz de C++ yazabilirsiniz.
• Çok daha performanslı modeller oluşturulabilir.
• Go
– MLaaS’in microservice mimarisini Go ile yüksek performanslı hale getirmek…
• Rust
– MLaaS’in back-end/sistem tarafındaki işlemlerini daha performanslı hale getirmek…
– Rust’ı sistem seviyeli hesaplama ya da I/O işlemlerinde tercih edebilirsiniz
• JavaScript
– Bazı projelerde hesaplama işlemini client’e yaptırabiliriz. Örnek: TensorFlow.js
24. MLaaS
MLaaS Ürünleşme Sürecine Genel Bakış
PyTorch pytorch.org
TensorFlow tensorflow.org
Keras keras.io
scikit-learn scikit-learn.org
OpenCV opencv.org
*Ürün ortamında genellikle bunları kullanırız
26. MLaaS
Donanımsal Altyapı
• NVIDIA CUDA GPUs
– developer.nvidia.com/cuda-gpus
– CUDA Toolkit
• developer.nvidia.com/cuda-downloads
• PyTorch : 9.2
• TensorFlow : 10.1
– cuDNN SDK (>= 7.6) (Deep Neural Network library)
• developer.nvidia.com/cudnn
– CUPTI (CUDA Profiling Tools Interface)
• docs.nvidia.com/cuda/cupti/
• Özel ML/DL Bilgisayarı(Örnek) : lambdalabs.com
– Bu örnek bir ML geliştiricisi için gereken bilgisayar özelliklerini anlatmak amacıyla verilmiştir.
– Bu tür bilgisayar konfigürasyonlarını inceleyerek kendiniz de toplayabilirsiniz.
– Ancak ürün ortamında yayın hizmeti verecek bir sunucuyu hazırlamanın çook daha fazla
detayı bulunmaktadır.
– Not : Aynı donanımlara sahip sunucuları kendiniz toplayarak %20 kar edebilirsiniz!
28. MLaaS
Donanım [Production Server]
LambdaLabs ile hiçbir ticari bağım olmamakla birlikte, yapılandırmalar hakkında kopya çekmeniz için paylaşıyorum.
Aynı özelliklerdeki
donanımları
toplayarak %20-25’lik
oranda maliyeti
azaltabilirsiniz.
ya da…
37. Model Lifecycle
Machine Learning Model Development Lifecycle
Biz buradan başlıyoruz!
ML model hazırlık süreci
Angarya ama mecburi görev:
Veriyi hazırlamak!
Modeli hazırlamışız!
Modeli veri ile eğitiyoruz.
Cloud ya da On-Premise
Eğitilmiş modeli test verisi ile test ettik!
Eğitilen model programsal
ortam için paketlenir.
Yayın sonrası:
Model sürekli izlenir.
47. MLaaS
Model Serving Yaklaşımı Belirlemek
• Embedded Model
– Yaygın ve en kolay yol. Model uygulamanın doğrudan içine gömülür.
– Bu yaklaşımın avantajı ML geliştiricinin modeli kendi aşina olduğu dil ile eğitmesini kolaylaştırır.
• Model Deployed as a Separate Service
– Model uygulamadan bağımsız bir servis halinde sunulur.
– Örnek: Web Service, Microservice, GraphQL vb…
• Model Published as Data
– Model uygulamadan bağımsız sunulur. Farkı, uygulama modeli veri olarak alır. Genellikle
streaming/real-time mimarilerde kullanılan veri akış ve işleme mimarisine uygundur.
– Software Release Pattern : Canary Release ya da Blue Green Deployment
Tool : Pickle File, MLeap, PMML, PFA, ONNX,
Tool : H20 (export model as a POJO in a JAR Java Library)
49. MLaaS
Model Deployment Yaklaşımı Belirlemek
• Multiple Model
– Bir görevi gerçekleştirmek için birden fazla modelin kullanılması yöntemidir.
– Tek bir API çağrısı ile arka planda birden fazla modelin işletilmesini sağlar.
• Shadow Model
– Ürün ortamı için uygun desenlerden biridir.
– Yeni modeli mevcut ile birlikte dağıtabilir ve ürün ortamındaki modele gönderilen ürün trafiğini shadow
model’a da göndererek performansı takip edilebilir.
• Competing Model
– Çok modelli senaryolarda hangi modelin daha performanslı olduğunu bulmak için kullanılır.
– Trafiği doğru modele yönlendirmek için routing ve altyapının çalışma mantığı değiştiği için biraz karmaşıktır.
– Bu tür işlemlerde doğru karar alabilmek için yeterince veri toplanmış olmalıdır.
– Diğer yöntem : Multi-Armed Bandits (Refer : Seldon Core, Azure Personalizer)
• Online Learning Model
– Önceki modeller offline olarak eğitilir, online olarak sunulur idi. Bu yöntemle ise model kendi
performansını yeni veriler ile sürekli artırır. Ancak, bazı zorlukları mevut…
– Aynı verilerle beslenmeyen ve statik olarak versiyonlanmış bir model aynı sonuçları veremez.
– Bu nedenle model hem eğitim hem de ürün(production) ortamındaki verilerle beslenmelidir.
– Online Methods in Machine Learning : Teori ve Uygulama
50. MLaaS
Örnek İnceleme : Shadow Mode
https://alexgude.com/blog/machine-learning-deployment-shadow-mode/
Yöntem 1 Yöntem 2
55. MLaaS
Ne zaman Realtime API Kullanmalı?
• Tahminler talep üzerine sunuluyorsa…
• Tahminlerin, bir request anında yapılması gerekiyorsa. (Near-Realtime)
• Tahminlerin doğrudan istemciye sunulması gerektiğinde.
56. MLaaS
Realtime API ile Yapılabilecekler(Yaptıklarımız)
• Request-Based Autoscaling
• Downtime olmadan model güncellemeleri
• Log Streaming
• Server-Side Batching
• Multi-Model Serving
• Traffic Splitting
• Realtime Metrics
57. MLaaS
Ne zaman Batch API Kullanmalı?
• Büyük bir veriseti ve çoklu worker’lar ile dağıtık çalışması gereken süreçler.
• İş sürecinin ve durumunun izlenmesi gereken süreçler.
• Karmaşık ve birbirine zincirlenmiş şekilde çalışan/çalışması gereken süreçler.
• İstek sayısı az ama her isteğin dakikalar/saatler sürdüğü süreçler.
58. MLaaS
Batch API ile Yapılabilecekler(Yaptıklarımız)
• Klasik RESTful servis gereksinimlerinde.
• Log alma/toplama ve streaming vb…
59. MLaaS
Server-Side Batching?
• Birden fazla gerçek zamanlı request’i tek bir toplu çıkarımda toplama işlemidir.
• Bu yöntem gecikme oluşturur ancak performansı artırır.
• Hangi request önce gelirse, maksimum sayıda istek alındığında veya ilk isteği aldıktan
belirli bir süre sonra süreç tetiklenir.
• Belirlenen eşiğe ulaşıldığında, alınan talepler üzerinde anlamladırma/tahmin yapılır ve
tahmin sonuçları istemciye ayrı ayrı gönderilir.
• Tüm bu süreçler istemciler için izlenebilir/gözlenebilirdir.
61. MLaaS
Request Başına Düşen Kaynak!
• Her request türünün tüketeceği sistem kaynağı çok farklı olacak.
– Request-Based Autoscaling
• Metinsel veri üzerinde çalışan ML servisi 0.3s’de cevap üretebilir. Fakat aynı response
time’ı bir resim ya da video üzerinde almak isterseniz çok daha fazla donanımsal
kaynak gerekir.
– Request başına CPU, GPU, RAM ve Donanımı kullandıracak kaynak yönetimi gerekiyor.
• Her ML request’i GPU gerektirmeyebilir. CPU’da kullanmalı…
– Biz genellikle düşük hesaplama gerektiren request’leri GPU’ya değil CPU’ya yönlendiririz.
• Ayrıca dakikada birkaç request için bu süreler yakalanabilir. Fakat saatte 2000 görsel
veri request’i alıyorsanız işiniz çok daha zor olacaktır.
– Distributed Task Queue
• Request başına düşen disk veri kullanımı ve okuma-yazma oranları her request tipine
göre yönetilmelidir.
62. MLaaS
Distributed Task Queue : Celery
‘Celery is an asynchronous task queue based on distributed message passing’
65. MLaaS
Model Monitoring & Observability
Elasticsearch : An open source search engine.
FluentD : An open source data collector for unified logging layer.
Kibana : An open source webUI that makes it easy to explore and visualize the data indexed by Elasticsearch.
66. MLaaS
Model Monitoring & Observability
MartinFowler.com : Continuous Delivery for Machine Learning end-to-end process
68. Versioning
DVC.org
- Büyük dosyaları almak ve kaynak kontrol havuzunun dışındaki harici bir depolama alanında depolamak için birden çok arka uç eklentisine sahiptir.
- Tüm bu dosyaların sürümlerini takip edebilir ve veriler değiştiğinde modelleri yeniden eğitebiliriz.
- Git ile entegre çalışabilir.
83. Distributed Machine Learning
Horovod
• Framework Bağımsız
– PyTorch, TensorFlow, Keras, Apache MXNet
• Yüksek Performans Özellikleri
– NCCL, GPUDirect, RDMA, Tensor Fusion
• Kolay Kullanım
– 5 satır Python kodu!
• Açık Kaynak
– Linux Foundation AI Foundation
• Kolay Kurulum
– pip install horovod
- Realtime Vs Near-Realtime : https://www.skylinetechnologies.com/Blog/Skyline-Blog/November_2019/realtime-vs-near-realtime-data-pros-cons
https://medium.com/analytics-vidhya/machine-learning-models-to-production-72280c3cb479
Packaging and Sharing Machine Learning Models via the Acumos AI Open Platform (https://arxiv.org/ftp/arxiv/papers/1810/1810.07159.pdf)
Multi-Aarmed Bandits :
Another popular approach for evaluating multiple competing models is Multi-Armed Bandits, which also requires you to define a way to calculate and monitor the reward associated with using each model. Applying this to ML is an active area of research, and we are starting to see some tools and services appear, such as Seldon core and Azure Personalizer .
- https://www2.slideshare.net/turi-inc/machine-learning-in-production