Python 'da makine öğrenimi modellerinin gerçek zamanlı Puanlama

Container Registry
Kubernetes Hizmeti
Machine Learning
İzleyici
Sanal Makineler

Bu başvuru mimarisinde, Azure Kubernetes hizmetinikullanarak gerçek zamanlı tahminlerde bulunmak için Python modellerinin Web Hizmetleri olarak nasıl dağıtılacağı gösterilmiştir. Azure Kubernetes üzerinde dağıtılan makine öğrenimi modelleri, yüksek ölçekli üretim dağıtımları için uygundur.

Bu makalede iki senaryo ele alınmıştır: normal Python modellerini dağıtma ve derin öğrenme modellerini dağıtmanın belirli gereksinimleri. Her iki senaryo da gösterilen mimariyi kullanır. ayrıca, bu senaryolar için iki başvuru uygulaması GitHub, biri normal Python modelleriyle ve bir diğeri derin öğrenme modelleriiçin kullanılabilir.

Azure 'da Python modellerinin gerçek zamanlı Puanlama için mimari diyagramı

Senaryo: Stack Overflow SSS eşleştirme

Bu senaryoda, Kullanıcı sorularını tahmin etmek için sık sorulan sorular (SSS) ile eşleşen modeli Web hizmeti olarak dağıtma gösterilmektedir. Bu senaryoda, mimari diyagramdaki "giriş verileri", SSS listesi ile eşleşecek Kullanıcı sorularını içeren metin dizelerini ifade eder. Bu senaryo, Python için bir scikit- Machine Learning kitaplığı öğreniyor, ancak gerçek zamanlı tahminleri yapmak için Python modellerini kullanan herhangi bir senaryoya genelleştirilemez.

Bu senaryo, JavaScript olarak etiketlenen özgün soruları, bunların yinelenen sorularını ve yanıtlarını içeren Stack Overflow soru verilerinin bir alt kümesini kullanır. Bir scikit-her bir özgün soruyla ilgili yinelenen bir sorunun eşleşme olasılığını tahmin etmek için bir işlem hattı öğrenin. Bu tahminler, REST API uç noktası kullanılarak gerçek zamanlı olarak yapılır.

Bu mimari için uygulama akışı aşağıdaki gibidir:

  1. Eğitilen model Machine Learning modeli kayıt defterine kaydedilir.
  2. Azure Machine Learning model ve puanlama betiğini içeren bir docker görüntüsü oluşturur.
  3. Azure Machine Learning puanlama görüntüsünü, web hizmeti olarak Azure kubernetes Service (aks) üzerinde dağıtır.
  4. İstemci, kodlanmış soru verileriyle bir HTTP POST isteği gönderir.
  5. Azure Machine Learning tarafından oluşturulan web hizmeti, soruyu istekten ayıklar.
  6. Bu soru, korleştirme ve Puanlama için scikit-öğrenme işlem hattı modeline gönderilir.
  7. Puanlarıyla eşleşen ilgili SSS soruları istemciye döndürülür.

Aşağıda, sonuçları tüketen örnek uygulamanın bir ekran görüntüsü verilmiştir:

Stack Overflow soru verilerinin bir alt kümesini kullanarak uygulamayla eşleşen örnek bir ekran görüntüsü.

Senaryo: bir evsel sinir ağı ile görüntü sınıflandırması

Bu senaryoda, resimlerde tahmin sağlamak üzere bir Web hizmeti olarak bir evsel sinir ağı (CNN) modelinin nasıl dağıtılacağı gösterilmektedir. Bu senaryoda, mimari diyagramdaki "giriş verileri" resim dosyaları anlamına gelir. CNNs, görüntü sınıflandırması ve nesne algılama gibi görevler için bilgisayar vizyonu açısından etkilidir. Bu senaryo, çerçeveler TensorFlow, keras (TensorFlow arka ucu ile) ve PyTorch için tasarlanmıştır. Ancak, gerçek zamanlı tahminlere sahip olmak için derin öğrenme modellerini kullanan herhangi bir senaryoya genelleştirilemez.

Bu senaryo, bir görüntünün ait olduğu kategoriyi tahmin etmek için ImageNet-1K (1.000 sınıfları) veri kümesinde eğitilen, önceden eğitilen ResNet-152 modeli kullanır. Bu tahminler, REST API uç noktası kullanılarak gerçek zamanlı olarak yapılır.

Web hizmeti olarak bir evsel sinir ağı (CNN) modeli kullanan görüntü sınıflandırması tahminleri örneği.

Derin öğrenme modeli için uygulama akışı aşağıdaki gibidir:

  1. Derin öğrenme modeli, Machine Learning modeli kayıt defterine kaydedilir.
  2. Azure Machine Learning, model ve puanlama betiği dahil bir docker görüntüsü oluşturur.
  3. Azure Machine Learning puanlama görüntüsünü, web hizmeti olarak Azure kubernetes Service (aks) üzerinde dağıtır.
  4. İstemci, kodlanmış görüntü verileriyle bir HTTP POST isteği gönderir.
  5. tarafından oluşturulan web hizmeti, görüntü verilerini önceden işleyerek Azure Machine Learning puanlama için modele gönderir.
  6. Puanlarına sahip tahmin edilen kategoriler istemciye döndürülür.

Mimari

Bu mimari aşağıdaki bileşenlerden oluşur.

Azure Machine Learning , bulut tarafından sağlanan geniş ölçekte makine öğrenimi modellerini eğitmek, dağıtmak, otomatikleştirmek ve yönetmek için kullanılan bir bulut hizmetidir. Bu mimaride, Web hizmetinin model ve kimlik doğrulama, Yönlendirme ve yük dengeleme dağıtımını yönetmek için kullanılır.

Sanal makine (VM). VM, bir HTTP isteği gönderebilecek bir cihaz örneği (yerel veya bulutta) olarak gösterilir.

Azure Kubernetes hizmeti (aks), uygulamayı bir Kubernetes kümesine dağıtmak için kullanılır. AKS, Kubernetes 'in dağıtım ve işlemlerini basitleştirir. Küme, normal Python modelleri için yalnızca CPU VM 'Leri veya derin öğrenme modelleri için GPU özellikli VM 'Ler kullanılarak yapılandırılabilir.

Azure CONTAINER REGISTRY DC/OS, Docker sısınma ve Kubernetes dahil olmak üzere tüm Docker kapsayıcı dağıtımları için görüntülerin depolanmasını sağlar. Puanlama görüntüleri Azure Kubernetes hizmetinde kapsayıcı olarak dağıtılır ve Puanlama betiğini çalıştırmak için kullanılır. burada kullanılan görüntü, eğitilen model ve puanlama betiğinin Machine Learning tarafından oluşturulur ve ardından Azure Container Registry gönderilir.

Performansla ilgili önemli noktalar

Gerçek zamanlı Puanlama mimarileri için üretilen iş performansı, baskın bir noktadır. Normal Python modelleri için, CPU 'Lar iş yükünü işlemek için yeterlidir.

Ancak derin öğrenme iş yükleri için hız performans sorunu olduğunda, GPU 'Lar genellikle CPU 'Lara kıyasla daha iyi performans sağlar. CPU 'Ları kullanarak GPU performansını eşleştirmek için genellikle çok sayıda CPU içeren bir küme gerekir.

Bu mimari için CPU 'Ları her iki senaryoda da kullanabilirsiniz, ancak derin öğrenme modelleri için GPU 'Lar, benzer maliyetli bir CPU kümesiyle karşılaştırıldığında daha yüksek aktarım hızı değerleri sağlar. AKS, Bu mimaride AKS kullanmanın bir avantajı olan GPU 'Ların kullanımını destekler. Ayrıca, derin öğrenme dağıtımları genellikle yüksek sayıda parametreye sahip modelleri kullanır. GPU 'ları kullanmak, model ve Web hizmeti arasındaki kaynakların, yalnızca CPU dağıtımlarında bir sorun olan çekişmesini önler.

Ölçeklenebilirlik konusunda dikkat edilmesi gerekenler

Aks kümesinin yalnızca CPU VM 'leri ile sağlandığı normal Python modelleri için, Pod sayısını ölçeklendirirkendikkatli olmanız gerekir. Amaç, kümeden tamamen yararlanmaktır. Ölçeklendirme, sınır için tanımlanan CPU isteklerine ve sınırlara bağlıdır. kubernetes aracılığıyla Machine Learning, CPU kullanımına veya diğer ölçümlere göre pod otomatik ölçeklendirmeyi da destekler. Küme otomatik olarak, bekleyen yığınlara göre aracı düğümlerini ölçeklendirebilirler.

GPU özellikli VM 'Ler kullanan derin öğrenme senaryolarında, yığınlardaki kaynak limitleri tek bir pod 'a atanmış olur. Kullanılan VM 'nin türüne bağlı olarak, hizmet taleplerini karşılamak için kümenin düğümlerini ölçeklendirmeniz gerekir. Bunu Azure CLI ve kubectlkullanarak kolayca yapabilirsiniz.

İzleme ve günlüğe kaydetme konuları

AKS izleme

AKS performansının görünürlüğü için, kapsayıcılar Için Azure izleyici özelliğini kullanın. Ölçüm API 'SI aracılığıyla Kubernetes 'te bulunan denetleyiciler, düğümler ve kapsayıcılardan bellek ve işlemci ölçümleri toplar.

Uygulamanızı dağıttığınızda, beklendiği gibi çalıştığından emin olmak için AKS kümesini izleyin, tüm düğümlerin çalışır durumda olduğundan ve tüm yığınların çalıştığından emin olun. Pod durumunu almak için kubectl komut satırı aracını kullanabilseniz de, Kubernetes, küme durumunu ve yönetimini temel olarak izlemeye yönelik bir Web panosu da içerir.

Küme durumunu ve yönetimini temel izlemek için Kubernetes panosunun ekran görüntüsü.

Kümenin ve düğümlerin genel durumunu görmek için Kubernetes panosunun düğümler bölümüne gidin. Bir düğüm etkin değilse veya başarısız olduysa, hata günlüklerini bu sayfadan görüntüleyebilirsiniz. Benzer şekilde, dağıtım sayısı ve dağıtımınızın durumu hakkında bilgi için, Pod ve dağıtımlar bölümlerine gidin.

AKS günlükleri

AKS, tüm stdout/stderr 'leri kümedeki yığınların günlüklerine otomatik olarak kaydeder. Bu ve ayrıca düğüm düzeyindeki olayları ve günlükleri görmek için kubectl kullanın. Ayrıntılar için bkz. dağıtım adımları.

Log Analytics çalışma alanınızda depolanan Linux için Log Analytics aracısının kapsayıcılı bir sürümü aracılığıyla ölçümler ve Günlükler toplamak üzere kapsayıcılar Için Azure izleyici 'yi kullanın.

Güvenlik konuları

Azure kaynaklarınızın güvenlik durumuna ilişkin merkezi bir görünüm almak için bulut Için Microsoft Defender 'ı kullanın. Defender, olası güvenlik sorunlarını izler ve AKS Aracısı düğümlerini izlememekle birlikte, dağıtımınızın güvenlik durumunun kapsamlı bir görünümünü sunar. Azure aboneliği başına bulut için Defender yapılandırılır. Aboneliklerinizde bulut Için Defender 'ı etkinleştirmebölümünde açıklandığı gibi güvenlik verileri toplamayı etkinleştirin. Veri toplama etkinleştirildiğinde, bulut için Defender bu abonelik altında oluşturulan tüm VM 'Leri otomatik olarak tarar.

İşlemler. Azure Active Directory (Azure ad) kimlik doğrulama belirtecinizi kullanarak bir aks kümesinde oturum açmak için, aks 'i kullanıcı kimlik doğrulamasıiçin Azure AD kullanacak şekilde yapılandırın. Küme yöneticileri Ayrıca, Kubernetes rol tabanlı erişim denetimini (Kubernetes RBAC) bir kullanıcının kimliğine veya dizin grubu üyeliğine göre de yapılandırabilir.

Dağıttığınız Azure kaynaklarına erişimi denetlemek için Azure RBAC kullanın. Azure RBAC, DevOps ekibinizin üyelerine yetkilendirme rolleri atamanıza olanak tanır. Bir Kullanıcı birden çok role atanabilir ve daha da ayrıntılı izinleriçin özel roller oluşturabilirsiniz.

Https. En iyi güvenlik uygulaması olarak, uygulama HTTPS 'yi zorunlu tutar ve HTTP isteklerini yeniden yönlendirmelidir. SSL 'yi sonlandıran ve HTTP isteklerini yeniden yönlendiren bir ters proxy dağıtmak için bir giriş denetleyicisi kullanın. Daha fazla bilgi için bkz. Azure Kubernetes hizmeti (AKS) ÜZERINDE https giriş denetleyicisi oluşturma.

Kimlik doğrulaması. Bu çözüm, uç noktalara erişimi kısıtlayamaz. Mimariyi bir kurumsal ayarda dağıtmak için, API anahtarları aracılığıyla uç noktaların güvenliğini sağlayın ve istemci uygulamasına bir kullanıcı kimlik doğrulaması formu ekleyin.

Kapsayıcı kayıt defteri. Bu çözüm, Docker görüntüsünü depolamak için Azure Container Registry kullanır. Uygulamanın bağımlı olduğu kod ve model bu görüntüde yer alır. Enterprise uygulamalar, kötü amaçlı kod çalıştırmaya karşı koruma sağlamaya yardımcı olmak ve kapsayıcının içindeki bilgilerin tehlikeye düşmesini sağlamak için özel bir kayıt defteri kullanmalıdır.

DDoS koruması. DDoS koruma standardı'nı etkinleştirmeyi düşünün. Azure platformunun bir parçası olarak temel DDoS koruması etkin olsa da, DDoS koruma standardı, özellikle Azure sanal ağ kaynakları için ayarlanan risk azaltma özellikleri sağlar.

Günlüğe kaydetme. Kullanıcı parolalarını ve güvenlik sahteciliği yürütmek için kullanılabilecek diğer bilgileri temizleme gibi günlük verilerini depolamadan önce en iyi uygulamaları kullanın.

Maliyetle ilgili konular

Maliyetleri tahmin etmek için Azure fiyatlandırma hesaplayıcısını kullanın. Diğer bazı konular aşağıda verilmiştir.

daha fazla bilgi için bkz. maliyet iyileştirmesiMicrosoft Azure Well-Architected Framework makale ilkeleri.

Azure Machine Learning

Bu başvuru mimarisinde, maliyetin büyük bir bölümü işlem kaynakları tarafından çalıştırılır. deneme ve eğitim amaçları doğrultusunda Azure Machine Learning ücretsizdir. Yalnızca Web hizmeti tarafından kullanılan işlem için ücretlendirilirsiniz. İşlem maliyetlerinizi tahmin etmek için Azure Fiyatlandırma hesaplayıcısı ' nı kullanın.

Azure Container Registry

Azure Container Registry temel, Standartve Premiumsunar. İhtiyacınız olan depolamaya bağlı olarak bir katman seçin. coğrafi çoğaltmaya ihtiyacınız varsa Premium seçeneğini belirleyin veya eşzamanlı düğümlerde docker çeklerine yönelik gelişmiş aktarım hızı sağlayabilirsiniz. Ayrıca, standart ağ ücretleri uygulanır. Daha fazla bilgi için bkz. Azure Container Registry fiyatlandırması.

Azure Kubernetes Service

Yalnızca Kubernetes kümeniz tarafından tüketilen sanal makine örnekleri, depolama ve ağ kaynakları için ödeme yaparsınız. Gerekli kaynakların maliyetini tahmin etmek için bkz. kapsayıcı Hizmetleri Hesaplayıcı.

daha fazla bilgi için bkz. maliyet iyileştirmesiMicrosoft Azure Well-Architected Framework makale ilkeleri.

DevOps için dikkat edilmesi gerekenler

bu mimaride, puanlama görüntüleri Machine Learning modeli tarafından oluşturulur ve aks üzerinde kapsayıcılar olarak dağıtılır. Model yönetimi ve operationalization için tüm mimariyi bir sürüm işlem hattı ile tümleştirebilirsiniz. işlem hattı, veri tasdikliği testi için DevOps görevler, farklı işlem hedefleri üzerinde model eğitimi, model sürümü yönetimi, gerçek zamanlı bir web hizmeti olarak model dağıtımı, QA/üretim ortamları, tümleştirme testi ve işlevsel test için hazırlanmış dağıtım olabilir. Azure Machine Learning başvuru mimarisi kullanan Python modelleriyle ilgili makine öğrenimi (mlops) , Azure DevOps ve Azure Machine Learning kullanarak bir aı uygulaması için sürekli tümleştirme (cı), sürekli teslim (CD) ve yeniden eğitim işlem hattının nasıl uygulanacağını gösterir.

Dağıtım

bu başvuru mimarisini dağıtmak için GitHub depolarda açıklanan adımları izleyin:

Sonraki adımlar

Ürün belgelerini okuyun:

şu Microsoft Learning yollarını deneyin: