Azure Machine Learning çıkarım yönlendiricisi ve bağlantı gereksinimleri
Azure Machine Learning çıkarım yönlendiricisi, Kubernetes kümesiyle gerçek zamanlı çıkarım için kritik bir bileşendir. Bu makalede şunları öğrenebilirsiniz:
- Azure Machine Learning çıkarım yönlendiricisi nedir?
- Otomatik ölçeklendirme nasıl çalışır?
- Çıkarım isteği performansını yapılandırma ve karşılama (saniye başına istek sayısı ve gecikme süresi)
- AKS çıkarım kümesi için bağlantı gereksinimleri
Azure Machine Learning çıkarım yönlendiricisi nedir?
Azure Machine Learning çıkarım yönlendiricisi, Azure Machine Learning uzantısı dağıtım zamanında AKS veya Arc Kubernetes kümesinde dağıtılan ön uç bileşenidir (azureml-fe
). Aşağıdaki işlevlere sahiptir:
- Küme yük dengeleyicisinden veya giriş denetleyicisinden gelen çıkarım isteklerini ilgili model podlarına yönlendirir.
- Akıllı eşgüdümlü yönlendirme ile tüm gelen çıkarım isteklerinin yük dengelemesi.
- Model podlarının otomatik ölçeklendirmesini yönetir.
- Hataya dayanıklı ve yük devretme özelliği sayesinde, kritik iş uygulamaları için çıkarım isteklerinin her zaman sunulduğunu güvence altına alır.
Aşağıdaki adımlar isteklerin ön uç tarafından nasıl işlendiğidir:
- İstemci, yük dengeleyiciye istek gönderir.
- Yük dengeleyici ön uçlardan birine gönderir.
- Ön uç, hizmet için hizmet yönlendiricisini (koordinatör olarak davranan ön uç örneği) bulur.
- Hizmet yönlendiricisi bir arka uç seçer ve bunu ön uca döndürür.
- Ön uç, isteği arka uca iletir.
- İstek işlendikten sonra arka uç, ön uç bileşenine bir yanıt gönderir.
- Ön uç yanıtı istemciye geri yayılır.
- Ön uç, hizmet yönlendiricisine arka ucun işlenmesinin bittiğini ve diğer istekler için kullanılabilir olduğunu bildirir.
Aşağıdaki diyagramda bu akış gösterilmektedir:
Yukarıdaki diyagramda görebileceğiniz gibi, Azure Machine Learning uzantısı dağıtımı sırasında varsayılan olarak 3 azureml-fe
örnek oluşturulur, bir örnek koordine rolü olarak görev yapar ve diğer örnekler gelen çıkarım isteklerine hizmet eder. Koordinatör örneği, model podları hakkında tüm bilgilere sahiptir ve gelen isteği hangi model podunun servis edeceğine karar verirken, hizmet veren azureml-fe
örnekler isteği seçilen model pod'larına yönlendirmekten ve yanıtı özgün kullanıcıya geri yaymadan sorumludur.
Otomatik ölçeklendirme
Azure Machine Learning çıkarım yönlendiricisi, Kubernetes kümesindeki tüm model dağıtımları için otomatik ölçeklendirmeyi işler. Tüm çıkarım istekleri üzerinden geçtiğinden, dağıtılan modelleri otomatik olarak ölçeklendirmek için gerekli verilere sahiptir.
Önemli
Model dağıtımları için Kubernetes Yatay Pod Otomatik Ölçeklendiricisi'yi (HPA) etkinleştirmeyin. Bunun yapılması, iki otomatik ölçeklendirme bileşeninin birbiriyle rekabet edebilmesine neden olur. Azureml-fe, Azure Machine Learning tarafından dağıtılan modelleri otomatik ölçeklendirmek için tasarlanmıştır; burada HPA'nın CPU kullanımı veya özel ölçüm yapılandırması gibi genel bir ölçümden model kullanımını tahmin etmek veya yaklaşık olarak tahmin etmek zorunda olması gerekir.
Azureml-fe, AKS kümesindeki düğüm sayısını ölçeklendirmez, çünkü bu beklenmeyen maliyet artışlarına neden olabilir. Bunun yerine, fiziksel küme sınırları içindeki model için çoğaltma sayısını ölçeklendirir. Kümenin içindeki düğümlerin sayısını ölçeklendirmeniz gerekiyorsa, kümeyi el ile ölçeklendirebilir veya AKS küme otomatik ölçeklendiricisini yapılandırabilirsiniz.
Otomatik ölçeklendirme, YAML dağıtımındaki özellik tarafından scale_settings
denetlenebilir. Aşağıdaki örnekte otomatik ölçeklendirmenin nasıl etkinleştirileceği gösterilmektedir:
# deployment yaml
# other properties skipped
scale_setting:
type: target_utilization
min_instances: 3
max_instances: 15
target_utilization_percentage: 70
polling_interval: 10
# other deployment properties continue
Ölçeği artırma veya azaltma kararı, öğesini utilization of the current container replicas
temel alır.
utilization_percentage = (The number of replicas that are busy processing a request + The number of requests queued in azureml-fe) / The total number of current replicas
Bu sayı değerini aşarsa target_utilization_percentage
, daha fazla çoğaltma oluşturulur. Daha düşükse çoğaltmalar azaltılır. Varsayılan olarak hedef kullanım %70'tir.
Çoğaltma ekleme kararları istekli ve hızlıdır (yaklaşık 1 saniye). Çoğaltmaları kaldırma kararları muhafazakardır (yaklaşık 1 dakika).
Örneğin, bir model hizmeti dağıtmak ve birçok örneğin (pod/çoğaltma) saniye başına hedef istekler (RPS) ve hedef yanıt süresi için yapılandırılması gerektiğini bilmek istiyorsanız. Aşağıdaki kodu kullanarak gerekli çoğaltmaları hesaplayabilirsiniz:
from math import ceil
# target requests per second
targetRps = 20
# time to process the request (in seconds)
reqTime = 10
# Maximum requests per container
maxReqPerContainer = 1
# target_utilization. 70% in this example
targetUtilization = .7
concurrentRequests = targetRps * reqTime / targetUtilization
# Number of container replicas
replicas = ceil(concurrentRequests / maxReqPerContainer)
azureml-fe performansı
saniye azureml-fe
başına 5 K isteğine (QPS) ulaşabilir ve ek yükü ortalama olarak 3 ms'yi ve %99 yüzdebirlik dilimde 15 ms'yi aşmaz.
Not
RPS gereksinimleriniz 10.000'den yüksekse aşağıdaki seçenekleri göz önünde bulundurun:
- Podlar için
azureml-fe
kaynak isteklerini/sınırlarını artırın; varsayılan olarak 2 vCPU ve 1,2G bellek kaynak sınırı vardır. - için
azureml-fe
örnek sayısını artırın. Azure Machine Learning varsayılan olarak küme başına 3 veya 1azureml-fe
örnek oluşturur.- Bu örnek sayısı, Azure Machine Learning kalıbı yapılandırmanıza
inferenceRouterHA
bağlıdır. - Uzantı yükseltildikten sonra yapılandırılan değerinizle üzerine yazılacağından artan örnek sayısı kalıcı olamaz.
- Bu örnek sayısı, Azure Machine Learning kalıbı yapılandırmanıza
- Yardım için Microsoft uzmanlarına ulaşın.
AKS çıkarım kümesi için bağlantı gereksinimlerini anlama
AKS kümesi aşağıdaki iki ağ modellerinden biriyle dağıtılır:
- Kubenet ağı - Ağ kaynakları genellikle AKS kümesi dağıtılırken oluşturulur ve yapılandırılır.
- Azure Container Networking Interface (CNI) ağı - AKS kümesi mevcut bir sanal ağ kaynağına ve yapılandırmalarına bağlıdır.
Kubenet ağı için ağ, Azure Machine Learning hizmeti için düzgün bir şekilde oluşturulur ve yapılandırılır. CNI ağı için bağlantı gereksinimlerini anlamanız ve AKS çıkarımında DNS çözümlemesi ve giden bağlantı olduğundan emin olmanız gerekir. Örneğin, ağ trafiğini engellemek için güvenlik duvarı kullanıyorsanız ek adımlar gerekebilir.
Aşağıdaki diyagramda AKS çıkarım için bağlantı gereksinimleri gösterilmektedir. Siyah oklar gerçek iletişimi, mavi oklar ise etki alanı adlarını temsil eder. Bu konaklar için güvenlik duvarınıza veya özel DNS sunucunuza giriş eklemeniz gerekebilir.
Genel AKS bağlantı gereksinimleri için bkz . Azure Kubernetes Service'te küme düğümleri için çıkış trafiğini denetleme.
Güvenlik duvarının arkasındaki Azure Machine Learning hizmetlerine erişmek için bkz . Gelen ve giden ağ trafiğini yapılandırma.
Genel DNS çözümleme gereksinimleri
Mevcut bir sanal ağ içindeki DNS çözümlemesi sizin denetiminizdedir. Örneğin, bir güvenlik duvarı veya özel DNS sunucusu. Aşağıdaki konaklara ulaşılabilir olmalıdır:
Konak adı | Kullanan |
---|---|
<cluster>.hcp.<region>.azmk8s.io |
AKS API sunucusu |
mcr.microsoft.com |
Microsoft Container Registry (MCR) |
<ACR name>.azurecr.io |
Azure Container Registry'niz (ACR) |
<account>.blob.core.windows.net |
Azure Depolama Hesabı (blob depolama) |
api.azureml.ms |
Microsoft Entra doğrulaması |
ingest-vienna<region>.kusto.windows.net |
Telemetriyi karşıya yüklemek için Kusto uç noktası |
Kronolojik sırada bağlantı gereksinimleri: küme oluşturmadan model dağıtımına
azureml-fe dağıtıldıktan hemen sonra başlatmayı dener ve bunun için şunlar gerekir:
- AKS API sunucusu için DNS'yi çözümleme
- Kendisinin diğer örneklerini bulmak için AKS API sunucusunu sorgulayın (çok podlu bir hizmettir)
- Kendi diğer örneklerine bağlanma
azureml-fe başlatıldıktan sonra düzgün çalışması için aşağıdaki bağlantı gerekir:
- Dinamik yapılandırmayı indirmek için Azure Depolama'ya bağlanma
- Microsoft Entra kimlik doğrulama sunucusu api.azureml.ms için DNS'yi çözün ve dağıtılan hizmet Microsoft Entra kimlik doğrulamasını kullandığında bu sunucuyla iletişim kurun.
- Dağıtılan modelleri bulmak için AKS API sunucusunu sorgulama
- Dağıtılan model POD'leriyle iletişim kurma
Model dağıtım zamanında başarılı bir model dağıtımı için AKS düğümü şunları gerçekleştirebilmelidir:
- Müşterinin ACR'sinde DNS'i çözümleme
- Müşterinin ACR'sinden görüntü indirme
- Modelin depolandığı Azure BLOB'ları için DNS'i çözümleme
- Azure BLOB'larından modelleri indirme
Model dağıtıldıktan ve hizmet başlatıldıktan sonra azureml-fe AKS API kullanarak modeli otomatik olarak bulur ve isteği buna yönlendirmeye hazır olur. Model POD'leriyle iletişim kurabilmelidir.
Not
Dağıtılan model herhangi bir bağlantı gerektiriyorsa (örneğin dış veritabanını veya diğer REST hizmetini sorgulama, BLOB indirme vb.), bu hizmetler için hem DNS çözümlemesi hem de giden iletişim etkinleştirilmelidir.