Successfully reported this slideshow.

MLaaS - Presenting & Scaling Machine Learning Models as Microservices

1

Share

1 of 87
1 of 87

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

MLaaS - Presenting & Scaling Machine Learning Models as Microservices

  1. 1. MLaaS Presenting & Scaling Machine Learning Models as Microservices Cihan Özhan | DeepLab.co | Developer/Hacker, AI Engineer, Data Master
  2. 2. DeepLab : Teknolojiler ML/DL/CV Odaklı • Teknolojiler – Go, Python, C/C++, Rust, C# – PyTorch, TensorFlow, Keras, scikit-learn • Web, Mobile, IoT/Edge ve Back-End olarak… – OpenCV – … ve farklı onlarca araç-gereç… • Cloud Computing – AWS Machine Learning – Google Cloud Machine Learning – IBM Watson Machine Learning – Microsoft Azure Machine Learning – … ve farklı birçok Cloud çözüm… • Distributed Systems – Distributed Databases – Distributed Deep Learning
  3. 3. Klişe No : 85496477
  4. 4. Neural Networks
  5. 5. Neuron & Neural Network
  6. 6. Convolutional Neural Networks
  7. 7. 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
  8. 8. 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]
  9. 9. 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
  10. 10. ‘Machine Learning girişimlerinin %85’i hayata geçemiyor.’ Neden?
  11. 11. 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])
  12. 12. 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
  13. 13. MLaaS Üretmek Vs. Tüketmek Tüketim : Bir Cloud MLaaS hizmetinin kullanıcısı olmak. Üretim : Bir MLaaS hizmetinin üreticisi olmak.
  14. 14. 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
  15. 15. 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
  16. 16. ‘Biz MLaaS platformu geliştirmek için hem üretim hem de tüketim başlıklarındaki yetenekleri kullanacağız.’
  17. 17. 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!
  18. 18. ‘Machine Learning girişimlerinin %85’i hayata geçemiyor.’ %15’lik dilim içerisinde nasıl olabiliriz?
  19. 19. 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
  20. 20. MLaaS MLaaS Ürünleşme Sürecine Genel Bakış
  21. 21. 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.
  22. 22. 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
  23. 23. 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
  24. 24. MLaaS Donanımsal Altyapı
  25. 25. 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!
  26. 26. MLaaS Donanım [Development Machine] Bu versiyondan önceki CUDA destekli GPU’lar da işe yaramaz.
  27. 27. 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…
  28. 28. MLaaS Donanım [Development Machine] ‘Kendin pişir kendin ye’ ile daha ucuza geliyor.
  29. 29. MLaaS Donanım [Development Machine] Büyük indirimden de yararlanabilirsiniz! MonsterNotebook ile de ticari bir bağlantım yok. En önemli kısım sadece şu!
  30. 30. MLaaS Donanım [Performance/Benchmark/Ranking] • Donanım seçimi önemli. Benchmark’lar detaylı incelenmeli… – http://ai-benchmark.com/ranking_deeplearning.html – http://ai-benchmark.com/ranking.html – http://ai-benchmark.com/tests.html – https://developer.nvidia.com/deep-learning-performance-training-inference • … ve diğer şeyler için birkaç örnek: – https://mlbench.github.io/ – https://dawn.cs.stanford.edu/benchmark/ – https://mlperf.org/ • https://mlperf.org/inference-overview Paper : Benchmarking Contemporary Deep Learning Hardware and Frameworks: A Survey of Qualitative Metrics https://hal.archives-ouvertes.fr/hal-02501736/document
  31. 31. MLaaS Donanım [Development Machine] Önemli olan kısım!
  32. 32. MLaaS Donanım [Development Machine] Compute Capability
  33. 33. MLaaS Machine Learning Geliştirici Rehberi
  34. 34. Geliştirici Rehberi Machine Learning • Kişisel Bilgisayarlar – Python, Anaconda, VSCode, PyCharm vb… • Bulut Bilgisayar Çözümleri (Ücretsiz) – Microsoft Azure Notebook (CPU Destekli) • notebooks.azure.com/ – Google Colab (GPU Destekli) • colab.research.google.com/ • Bulut Bilgisayar Çözümleri (Ücretli) – Amazon Machine Learning • aws.amazon.com/machine-learning – Google Cloud • cloud.google.com/ml-engine/ – MS Azure ML Studio • studio.azureml.net/ – IBM Watson • ibm.com/tr-tr/cloud/machine-learning Başlangıç için en ideal çözüm
  35. 35. Model Lifecycle Machine Learning Model Development Lifecycle
  36. 36. 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.
  37. 37. Machine Learning projesi Nasıl Yayınlanır?
  38. 38. MartinFowler.com
  39. 39. MartinFowler.com
  40. 40. Machine Learning projesi Nasıl Yayınlanır? • TensorFlow Serving – https://www.tensorflow.org/serving – https://github.com/tensorflow/serving – Architecture • https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/architecture.md – Docker • https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/docker.md – Kubernetes • https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/serving_kubernetes.md – REST API • https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/api_rest.md – gRPC • https://github.com/tensorflow/serving/tree/master/tensorflow_serving/apis • PyTorch Serve – https://github.com/pytorch/serve – https://github.com/pytorch/serve/blob/master/docs/README.md – https://pytorch.org/blog/model-serving-in-pyorch/ – https://pytorch.org/serve/
  41. 41. Machine Learning Model Deployment TensorFlow Serving
  42. 42. Machine Learning Model Deployment TensorFlow Serving
  43. 43. Machine Learning Model Deployment TensorFlow Serving
  44. 44. Machine Learning Model Deployment PyTorch Serve
  45. 45. MLaaS Model Serving Yaklaşımı Belirlemek
  46. 46. 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)
  47. 47. MLaaS Model Deployment Yaklaşımı Belirlemek
  48. 48. 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
  49. 49. MLaaS Örnek İnceleme : Shadow Mode https://alexgude.com/blog/machine-learning-deployment-shadow-mode/ Yöntem 1 Yöntem 2
  50. 50. MLaaS Machine Learning Model Exchange ONNX : The Open Neural Network EXchange
  51. 51. MLaaS Model Exchange : ONNX ONNX : https://github.com/onnx/onnx ONNX Runtime : https://github.com/microsoft/onnxruntime
  52. 52. MLaaS Model Exchange : ONNX ONNX : https://github.com/onnx/onnx ONNX Runtime : https://github.com/microsoft/onnxruntime
  53. 53. MLaaS Bir MLaaS hizmeti hem Batch API hem de Realtime API desteği sunmalıdır.
  54. 54. 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.
  55. 55. 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
  56. 56. 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.
  57. 57. MLaaS Batch API ile Yapılabilecekler(Yaptıklarımız) • Klasik RESTful servis gereksinimlerinde. • Log alma/toplama ve streaming vb…
  58. 58. 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.
  59. 59. MLaaS Modeli API/Web App. olarak yayına vermek yeterli mi?
  60. 60. 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.
  61. 61. MLaaS Distributed Task Queue : Celery ‘Celery is an asynchronous task queue based on distributed message passing’
  62. 62. MLaaS Distributed Task Queue : Celery
  63. 63. MLaaS Distributed Task Queue : Celery
  64. 64. 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.
  65. 65. MLaaS Model Monitoring & Observability MartinFowler.com : Continuous Delivery for Machine Learning end-to-end process
  66. 66. MLaaS Versioning [Data & Model & Metrics]
  67. 67. 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.
  68. 68. Versioning DVC.org
  69. 69. Versioning Data Versioning The 3 steps to automate it with DVC (https://dvc.org)
  70. 70. MLaaS Machine Learning in Cloud Computing
  71. 71. Machine Learning & Docker
  72. 72. Machine Learning on Kubernetes https://www.kubeflow.org/
  73. 73. Machine Learning on Kubernetes
  74. 74. MLaaS Machine Learning & Streaming(Kafka)
  75. 75. MLaaS Machine Learning & Streaming(Kafka)
  76. 76. MLaaS Machine Learning & Streaming(Kafka)
  77. 77. MLaaS Machine Learning & Streaming(Kafka)
  78. 78. MLaaS Distributed Machine Learning
  79. 79. Distributed Machine Learning
  80. 80. Distributed Machine/Deep Learning • Python Standard Library – multiprocessing : https://docs.python.org/3/library/multiprocessing.html • Ray : Universal API for building distributed applications – https://ray.io/ – https://github.com/ray-project/ray – Ray Serve • https://docs.ray.io/en/master/serve/index.html – Ray Tune • https://docs.ray.io/en/master/tune.html • Dask : Parallel computing with task scheduling – https://dask.org/ – https://github.com/dask/dask • Horovod – Distributed training framework for TensorFlow, Keras, PyTorch, and Apache MXNet. – https://horovod.ai/ – https://github.com/horovod/horovod – https://eng.uber.com/horovod/
  81. 81. Distributed Machine Learning Ray Ray Tasks Ray Serve
  82. 82. 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
  83. 83. Distributed Machine Learning Horovod
  84. 84. Distributed Machine Learning Horovod
  85. 85. Distributed Machine Learning Horovod
  86. 86. Cihan Özhan Bağlantılar • cihanozhan.com • deeplab.co • linkedin.com/in/cihanozhan • medium.com/@cihanozhan • youtube.com/cihanozhan • twitter.com/UnmannedCode • github.com/cihanozhan E-Mail • cihan@deeplab.co

Editor's Notes

  • - https://christophergs.com/machine%20learning/2019/03/17/how-to-deploy-machine-learning-models/
  • - 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
  • - https://opendatascience.com/tutorial-accelerate-and-productionize-ml-model-inferencing-using-open-source-tools/
  • https://blog.imaginea.com/scale-part-i-task-queues/
    https://www2.slideshare.net/nicolasgrasset/scaling-up-task-processing-with-celery
  • - https://aws.amazon.com/tr/blogs/opensource/why-use-docker-containers-for-machine-learning-development/
  • ×