Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
Python SDK azure-ai-ml v2 (geçerli)
Bu makalede, yaygın Azure Machine Learning çevrimiçi uç nokta dağıtımı ve puanlama sorunlarını giderme ve çözme adımları açıklanmaktadır.
Belge yapısı, sorun gidermeye yaklaşımınızı yansıtır:
- Modellerinizi buluta dağıtmadan önce test etmek ve hatalarını ayıklamak için yerel dağıtımı kullanın.
- Sorunları ayıklamaya yardımcı olması için kapsayıcı günlüklerini kullanın.
- Oluşabilecek yaygın dağıtım hatalarını ve bunları nasıl düzelteceğinizi öğrenin.
HTTP durum kodları bölümünde, REST istekleriyle uç noktaları puanladığınızda çağırma ve tahmin hatalarının HTTP durum kodlarıyla nasıl eşlenmesi açıklanmaktadır.
Önkoşullar
- Azure Machine Learning'in ücretsiz veya ücretli sürümüne sahip etkin bir Azure aboneliği. Ücretsiz deneme Azure aboneliği edinin.
- Azure Machine Learning çalışma alanı.
- Azure CLI ve Azure Machine Learning CLI v2. CLI'yı (v2) yükleyin, ayarlayın ve kullanın.
İstek takibi
Desteklenen iki izleme başlığı vardır.
x-request-id
sunucu izleme için ayrılmıştır. Azure Machine Learning, geçerli bir GUID olduğundan emin olmak için bu üst bilgiyi değiştirir. Başarısız bir istek için destek bileti oluşturduğunuzda, araştırmayı hızlandırmak için başarısız istek kimliğini ekleyin. Alternatif olarak, bölgenin adını ve uç nokta adını belirtin.x-ms-client-request-id
istemci izleme senaryoları için kullanılabilir. Bu başlık yalnızca alfasayısal karakterleri, kısa çizgileri ve alt çizgileri kabul eder ve maksimum 40 karaktere kadar kesilir.
Yerel olarak dağıt
Yerel dağıtım, modeli yerel bir Docker ortamına dağıtma anlamına gelir. Yerel dağıtım, yerel uç noktanın oluşturulmasını, güncelleştirilmesini ve silinmesini destekler ve uç noktadan günlükleri çağırmanıza ve almanıza olanak tanır. Yerel dağıtım, buluta dağıtımdan önce test etmek ve hata ayıklamak için kullanışlıdır.
İpucu
Puanlama betiğinizde yerel olarak hata ayıklamak için Azure Machine Learning çıkarım HTTP sunucusu Python paketini de kullanabilirsiniz. Çıkarım sunucusuyla hata ayıklama, yerel uç noktalara dağıtmadan önce puanlama betiğinin hatalarını ayıklamanıza yardımcı olur, böylece dağıtım kapsayıcısı yapılandırmalarından etkilenmeden hata ayıklayabilirsiniz.
Azure CLI veya Python SDK ile yerel olarak dağıtabilirsiniz. Azure Machine Learning stüdyosu yerel dağıtımı veya yerel uç noktaları desteklemez.
Yerel dağıtımı kullanmak için ilgili komuta --local
ekleyin.
az ml online-deployment create --endpoint-name <endpoint-name> -n <deployment-name> -f <spec_file.yaml> --local
Yerel dağıtım sırasında aşağıdaki adımlar gerçekleşir:
- Docker yeni bir kapsayıcı görüntüsü oluşturur veya yerel Docker önbelleğinden mevcut bir görüntüyü çeker. Docker, belirtim dosyasının ortam bölümüyle eşleşiyorsa mevcut bir görüntüyü kullanır.
- Docker, yeni kapsayıcıyı model ve kod dosyaları gibi bağlı yerel yapıtlarla başlatır.
Daha fazla bilgi için Yerel uç nokta kullanarak yerel olarak dağıtma ve hata ayıklama bölümüne bakın.
İpucu
Uç noktalarınızı yerel olarak test etmek ve hatalarını ayıklamak için Visual Studio Code kullanabilirsiniz. Daha fazla bilgi için bkz . Visual Studio Code'da çevrimiçi uç noktalarda yerel olarak hata ayıklama.
Kapsayıcı günlüklerini al
Modelin dağıtıldığı sanal makineye (VM) doğrudan erişim alamazsınız, ancak VM üzerinde çalışan bazı kapsayıcılardan günlükleri alabilirsiniz. Edindiğiniz bilgi miktarı, dağıtımın sağlama durumuna bağlıdır. Belirtilen kapsayıcı çalışır durumdaysa konsol çıkışını görürsünüz. Aksi takdirde, daha sonra yeniden denemek için bir ileti alırsınız.
Log dosyalarını aşağıdaki kapsayıcı türlerinden alabilirsiniz:
- Çıkarım sunucusu konsol kayıtları, puanlama betiği score.py kodunuzdan yazdırma ve günlüğe kaydetme işlevlerinin çıktısını içerir.
- Depolama başlatıcı günlükleri, kod ve model verilerinin kapsayıcıya başarıyla indirilip indirilmediği hakkında bilgi içerir. Kapsayıcı, çıkarım sunucusu kapsayıcısı çalışmaya başlamadan önce çalışır.
Kubernetes çevrimiçi uç noktaları için yöneticiler modeli dağıttığınız kümeye doğrudan erişebilir ve Kubernetes'teki günlükleri kontrol edebilir. Örneğin:
kubectl -n <compute-namespace> logs <container-name>
Not
Python günlüğü kullanıyorsanız, iletilerin günlüklerde yayımlanması için INFO
gibi doğru günlük düzeyini kullandığınızdan emin olun.
Bkz. kapsayıcılardan günlük çıktısı
Bir kapsayıcıdan günlük çıktısını görmek için aşağıdaki komutu kullanın:
az ml online-deployment get-logs -e <endpoint-name> -n <deployment-name> -l 100
veya
az ml online-deployment get-logs --endpoint-name <endpoint-name> --name <deployment-name> --lines 100
Varsayılan olarak, günlükler çıkarım sunucusundan çekilir.
–-container storage-initializer
geçirerek depolama başlatıcı kapsayıcısından günlükleri alabilirsiniz.
Eğer bu parametreleri daha önce --resource-group
ile ayarlamadıysanız, --workspace-name
ve az configure
komutlarına ekleyin. Bu parametreleri ayarlama hakkında bilgi edinmek veya şu anda değer ayarladıysanız aşağıdaki komutu çalıştırın:
az ml online-deployment get-logs -h
Daha fazla bilgi görmek için komutlara --help
veya --debug
ekleyin.
Sık karşılaşılan dağıtım hataları
Dağıtım işlemi durumu aşağıdaki yaygın dağıtım hatalarını bildirebilir:
-
Hem yönetilen çevrimiçi uç nokta hem de Kubernetes çevrimiçi uç noktası için ortak:
- Abonelik yok
- Yetkilendirme hatası nedeniyle başlangıç görevi başarısız oldu
- Kaynakta yanlış rol atamaları nedeniyle başlangıç görevi başarısız oldu
- Mdc etkinleştirildiğinde depolama hesabında yanlış rol atamaları nedeniyle başlangıç görevi başarısız oldu
- Geçersiz şablon işlevi belirtimi
- Kullanıcı kapsayıcı görüntüsü indirilemiyor
- Kullanıcı modeli indirilemiyor
Kubernetes çevrimiçi uç noktasıyla sınırlıdır:
Bir Kubernetes çevrimiçi dağıtımı oluşturuyor veya güncelleştiriyorsanız, ayrıca bkz Kubernetes dağıtımlarına özgü yaygın hatalar.
HATA: GörüntüYapıHatası
Docker görüntü ortamı oluşturulurken bu hata döndürülür. Hata hakkında daha fazla bilgi için derleme günlüğünü de kontrol edebilirsiniz. Derleme günlüğü, Azure Machine Learning çalışma alanınız için varsayılan depolama alanında bulunur.
Tam konum hatanın bir parçası olarak döndürülebilir, örneğin "the build log under the storage account '[storage-account-name]' in the container '[container-name]' at the path '[path-to-the-log]'"
.
Aşağıdaki bölümlerde yaygın görüntü derleme hatası senaryoları açıklanmaktadır:
- Azure Container Registry yetkilendirme hatası
- Sanal ağ ile özel bir çalışma alanında ayarlı olmayan görüntü derleme işlem
- İmaj oluşturma zaman aşımına uğradı
- Genel veya bilinmeyen hata
Azure Container Registry yetkilendirme hatası
Geçerli kimlik bilgileriyle kapsayıcı kayıt defterine erişemediğinizde hata iletisi "container registry authorization failure"
’dan bahseder. Çalışma alanı kaynak anahtarlarının zaman uyumsuz hale getirilmesi bu hataya neden olabilir ve otomatik olarak eşitlenmesi biraz zaman alabilir. Ancak, az ml workspace sync-keys komutunu manuel olarak çağırarak anahtar eşitlemesi yapabilir ve bu da yetkilendirme hatasını çözebilir.
Sanal ağın arkasında bulunan kapsayıcı kayıt defterleri, yanlış ayarlanırlarsa bu hatayla karşılaşabilir. Sanal ağın düzgün ayarlandığını doğrulayın.
Sanal ağ ile özel bir çalışma alanında, görüntü oluşturma hesaplaması ayarlanmamış.
Hata iletisinde belirtiliyorsa "failed to communicate with the workspace's container registry"
ve bir sanal ağ kullanıyorsanız ve çalışma alanının kapsayıcı kayıt defteri özelse ve özel bir uç noktayla yapılandırılmışsa, Container Registry'nin sanal ağda görüntü oluşturmasına izin vermeniz gerekir.
Görüntü oluşturma zaman aşımına uğradı
Görüntü derleme zaman aşımları genellikle bir görüntünün dağıtım oluşturma zaman çerçevesi içinde derlemeyi tamamlayamayacak kadar büyük olmasından kaynaklanabilir. Görüntü derleme günlüklerinizi hatanın belirttiği konumda denetleyin. Loglar, görüntü derlemesinin zaman aşımına uğradığı noktada kesilir.
Bu sorunu çözmek için görüntünüzü ayrı olarak derleyin; böylece görüntünün yalnızca dağıtım oluşturma sırasında çekilmesi gerekir. ImageBuild zaman aşımlarınız varsa varsayılan yoklama ayarlarını da gözden geçirin.
Genel görüntü derleme hatası
Hata hakkında daha fazla bilgi için derleme günlüğünü denetleyin. Son satır Installing pip dependencies: ...working...
ile biterse ve derleme günlüğünde belirgin bir hata bulunmazsa, hataya bir bağımlılık neden olabilir. Conda dosyanıza sürüm bağımlılıklarını sabitlemek bu sorunu çözebilir.
Buluta dağıtmadan önce modellerinizi test etmek ve hatalarını ayıklamak için yerel olarak dağıtmayı deneyin.
HATA: OutOfQuota
Azure hizmetlerini kullanırken aşağıdaki kaynakların kotası tükenebilir:
Yalnızca Kubernetes çevrimiçi uç noktaları için Kubernetes kaynağının kotası da tükenebilir.
CPU kotası
Modeli dağıtmak için yeterli işlem kotanıza sahip olmanız gerekir. CPU kotası abonelik başına, çalışma alanı başına, SKU başına ve bölge başına kaç sanal çekirdeğin kullanılabilir olduğunu tanımlar. Her dağıtım kullanılabilir kotayı çıkarır ve sildikten sonra SKU türüne göre geri ekler.
Silebileceğiniz kullanılmayan dağıtımlar olup olmadığını denetleyebilirsiniz veya kota artışı isteği gönderebilirsiniz.
Küme kotası
Hata, OutOfQuota
yeterli Azure Machine Learning işlem kümesi kotanız olmadığında oluşur. Kota, Azure bulutunda CPU veya GPU düğümlerini dağıtmak için aynı anda kullanabileceğiniz abonelik başına toplam küme sayısını tanımlar.
Disk kotası
Hata, OutOfQuota
modelin boyutu kullanılabilir disk alanından daha büyük olduğunda ve model indirilemediğinde oluşur. Daha fazla disk alanı olan bir SKU kullanmayı veya görüntü ve model boyutunu azaltmayı deneyin.
Bellek kotası
Hata, OutOfQuota
modelin bellek ayak izi kullanılabilir bellekten daha büyük olduğunda oluşur. Daha fazla belleğe sahip bir SKU deneyin.
Rol atama kotası
Yönetilen çevrimiçi uç nokta oluşturduğunuzda, yönetilen kimliğin çalışma alanı kaynaklarına erişmesi için rol ataması gerekir. Rol atama sınırına ulaştıysanız, bu abonelikteki kullanılmayan bazı rol atamalarını silmeyi deneyin. Azure portalında Azure aboneliğiniz için Erişim denetimi'ni seçerek tüm rol atamalarını denetleyebilirsiniz.
Uç nokta kotası
Bu abonelikte kullanılmayan bazı uç noktaları silmeyi deneyin. Tüm uç noktalarınız etkin bir şekilde kullanılıyorsa, uç nokta sınırı artışı istemeyi deneyin. Uç nokta sınırı hakkında daha fazla bilgi edinmek için bkz . Azure Machine Learning çevrimiçi uç noktaları ve toplu iş uç noktaları ile uç nokta kotası.
Kubernetes kotası
Hata, bu dağıtım için düğümlerin zamanlanamaması nedeniyle istenen CPU veya bellek sağlanamadığında oluşur. Örneğin, düğümler kordonlanmış veya başka bir şekilde kullanılamıyor olabilir.
Hata iletisi genellikle kümedeki kaynak yetersizlik durumunu gösterir, örneğin OutOfQuota: Kubernetes unschedulable. Details:0/1 nodes are available: 1 Too many pods...
. Bu ileti, kümede çok fazla pod olduğu ve isteğinize göre yeni modeli dağıtmak için yeterli kaynak olmadığı anlamına gelir.
Bu sorunu gidermek için aşağıdaki azaltmaları deneyin:
Kubernetes kümesini tutan BT operatörleri, bazı kaynakları serbest bırakmak için daha fazla düğüm eklemeyi veya kümedeki kullanılmayan bazı podları temizlemeyi deneyebilir.
Modelleri dağıtan makine öğrenmesi mühendisleri, dağıtımın kaynak isteğini azaltmayı deneyebilir.
- Kaynak isteğini dağıtım yapılandırmasında kaynak bölümü aracılığıyla doğrudan tanımlarsanız, kaynak isteğini azaltmayı deneyin.
- Model dağıtımı için kaynak tanımlamak için kullanırsanız
instance_type
, örnek türü kaynak yapılandırmasını ayarlamak için BT operatörüne başvurun. Daha fazla bilgi için bkz . Örnek türlerini oluşturma ve yönetme.
Bölge genelinde VM kapasitesi
Bölgede Azure Machine Learning kapasitesinin olmaması nedeniyle hizmet belirtilen VM boyutunu sağlayamadı. Daha sonra yeniden deneyin veya farklı bir bölgeye dağıtmayı deneyin.
Diğer kota
Dağıtımın bir parçası olarak sağladığınız score.py dosyasını çalıştırmak için Azure, score.py gereken tüm kaynakları içeren bir kapsayıcı oluşturur. Ardından Azure Machine Learning bu kapsayıcıda puanlama betiğini çalıştırır. Kapsayıcınız başlatılamıyorsa puanlama gerçekleşemez. Kapsayıcı, destekleyebileceğinden daha fazla kaynak instance_type
isteyebilir. Çevrimiçi dağıtımın instance_type
güncellenmesini düşünün.
Hatanın tam nedenini almak için aşağıdaki eylemi gerçekleştirin.
Şu komutu çalıştırın:
az ml online-deployment get-logs -e <endpoint-name> -n <deployment-name> -l 100
HATA: Hatalı Argüman
Aşağıdaki nedenlerle yönetilen çevrimiçi uç noktaları veya Kubernetes çevrimiçi uç noktalarını kullandığınızda bu hatayı alabilirsiniz:
- Abonelik yok
- Yetkilendirme hatası nedeniyle başlangıç görevi başarısız oldu
- Kaynakta yanlış rol atamaları nedeniyle başlangıç görevi başarısız oldu
- Geçersiz şablon işlevi belirtimi
- Kullanıcı kapsayıcı görüntüsü indirilemiyor
- Kullanıcı modeli indirilemiyor
- Özel ağ ile MLflow model biçimi desteklenmiyor
Aşağıdaki nedenlerle yalnızca Kubernetes çevrimiçi uç noktalarını kullanırken de bu hatayı alabilirsiniz:
Abonelik yok
Başvuruda bulunılan Azure aboneliği mevcut ve etkin olmalıdır. Azure girdiğiniz abonelik kimliğini bulamadıklarında bu hata oluşur. Hata, abonelik kimliğindeki bir yazım hatasından kaynaklanıyor olabilir. Abonelik kimliğinin doğru girilip girildiğini ve şu anda etkin olup olmadığını bir kez daha denetleyin.
Yetkilendirme hatası
Dağıtım oluştururken işlem kaynağını sağladıktan sonra Azure, çalışma alanı kapsayıcı kayıt defterinden kullanıcı kapsayıcı görüntüsünü çeker ve kullanıcı modelini ve kod yapıtlarını çalışma alanı depolama hesabından kullanıcı kapsayıcısına bağlar. Azure, depolama hesabına ve kapsayıcı kayıt defterine erişmek için yönetilen kimlikleri kullanır.
İlişkili uç noktayı kullanıcı tarafından atanan kimlikle oluşturursanız, kullanıcının yönetilen kimliğinin çalışma alanı depolama hesabında Depolama blobu veri okuyucu iznine ve çalışma alanı kapsayıcı kayıt defterinde AcrPull iznine sahip olması gerekir. Kullanıcı tarafından atanan kimliğinizin doğru izinlere sahip olduğundan emin olun.
MDC etkinleştirildiğinde, kullanıcının yönetilen kimliğinin çalışma alanı depolama hesabında Depolama Blob Verileri Katkıda Bulunanı izni olmalıdır. Daha fazla bilgi için bkz. MDC etkinleştirildiğinde Depolama Blobu Yetkilendirme Hatası.
Sistem tarafından atanan kimlikle ilişkili uç noktayı oluşturursanız, Azure rol tabanlı erişim denetimi (RBAC) izni otomatik olarak verilir ve başka izin gerekmez. Daha fazla bilgi için Kapsayıcı kayıt defteri yetkilendirme hatası'na bkz.
Geçersiz şablon işlevi belirtimi
Bu hata, bir şablon işlevi yanlış belirtildiğinde oluşur. İlkeyi düzeltin veya engeli kaldırmak için ilke atamasını kaldırın. Hata iletisi, bu hatanın hatalarını ayıklamanıza yardımcı olmak için ilke atama adını ve ilke tanımını içerebilir. Şablon hatalarını önlemeye yönelik ipuçları için bkz . Azure ilke tanımı yapısı .
Kullanıcının kapsayıcı görüntüsü indirilemiyor
Kullanıcı kapsayıcısı bulunamayabilir. Daha fazla ayrıntı almak için kapsayıcı günlüklerini denetleyin.
Kapsayıcı görüntüsünün çalışma alanı kapsayıcı kayıt defterinde kullanılabilir olduğundan emin olun. Örneğin, testacr.azurecr.io/azureml/azureml_92a029f831ce58d2ed011c3c42d35acb:latest
görüntüsüyse, depoyu denetlemek için aşağıdaki komutu kullanabilirsiniz:
az acr repository show-tags -n testacr --repository azureml/azureml_92a029f831ce58d2ed011c3c42d35acb --orderby time_desc --output table`
Kullanıcı modeli indirilemiyor
Kullanıcı modeli bulunamayabilir. Daha fazla ayrıntı almak için kapsayıcı günlüklerini denetleyin. Modeli dağıtımla aynı çalışma alanına kaydettiğinizden emin olun.
Çalışma alanında bir modelin ayrıntılarını göstermek için aşağıdaki eylemi gerçekleştirin. Model bilgilerini almak için sürümü veya etiketi belirtmeniz gerekir.
Şu komutu çalıştırın:
az ml model show --name <model-name> --version <version>
Ayrıca blobların çalışma alanı depolama hesabında mevcut olup olmadığını denetleyin. Örneğin, blob ise https://foobar.blob.core.windows.net/210212154504-1517266419/WebUpload/210212154504-1517266419/GaussianNB.pkl
, blob'un mevcut olup olmadığını denetlemek için aşağıdaki komutu kullanabilirsiniz:
az storage blob exists --account-name <storage-account-name> --container-name <container-name> --name WebUpload/210212154504-1517266419/GaussianNB.pkl --subscription <sub-name>
Blob varsa, depolama başlatıcısından günlükleri almak için aşağıdaki komutu kullanabilirsiniz:
az ml online-deployment get-logs --endpoint-name <endpoint-name> --name <deployment-name> –-container storage-initializer`
Özel ağ ile MLflow model biçimi desteklenmiyor
Yönetilen çevrimiçi uç noktalar için eski ağ yalıtım yöntemini kullanıyorsanız özel ağ özelliğini MLflow modeli biçimiyle kullanamazsınız. Kod içermeyen dağıtım yaklaşımıyla bir MLflow modeli dağıtmanız gerekiyorsa, çalışma alanıyla yönetilen bir sanal ağ kullanmayı deneyin.
Sınırlardan büyük kaynak istekleri
Kaynaklara yönelik istekler sınırlardan küçük veya buna eşit olmalıdır. Sınırları ayarlamazsanız, işlemlerinizi bir çalışma alanına eklediğinizde Azure Machine Learning varsayılan değerleri ayarlar. Azure portalında veya az ml compute show
komutunu kullanarak sınırları da kontrol edebilirsiniz.
Azureml-fe hazır değil
Gelen çıkarım isteklerini dağıtılan hizmetlere yönlendiren ön uç azureml-fe
bileşeni, k8s uzantısı yüklemesi sırasında yüklenir ve gerektiğinde otomatik olarak ölçeklendirilir. Bu bileşenin kümede en az bir sağlıklı replikası olmalıdır.
Bir Kubernetes çevrimiçi uç noktasını veya dağıtım oluşturma veya güncelleştirme isteğini tetiklediğinizde bileşen kullanılamıyorsa bu hatayı alırsınız. Bu sorunu düzeltmek için pod durumunu ve günlüklerini denetleyin. Kümede yüklü k8s uzantısını güncelleştirmeyi de deneyebilirsiniz.
HATA: KaynakHazırDeğil
Dağıtımın bir parçası olarak sağladığınız score.py dosyasını çalıştırmak için Azure, score.py gereken tüm kaynakları içeren bir kapsayıcı oluşturur ve puanlama betiğini bu kapsayıcıda çalıştırır. Bu senaryodaki hata, kapsayıcının çalışırken çökmesi nedeniyle puanlamanın gerçekleşememesidir. Bu hata aşağıdaki koşullardan biri altında oluşabilir:
score.py'da bir hata var. Aşağıdakiler gibi yaygın sorunları tanılamak için kullanın
get-logs
:- score.py dosyasının içe aktarmaya çalıştığı, ancak conda ortamına dahil olmayan bir paket
- Söz dizimi hatası
-
init()
yönteminde bir hata
get-logs
günlük oluşturmazsa, bu genellikle kapsayıcının başlatılamadığını gösterir. Bu sorunu düzeltmek için yerel olarak dağıtım yapmayı deneyin.Hazır olma veya canlılık yoklamaları doğru ayarlanmamıştır.
Kapsayıcı başlatma çok uzun sürdüğünden hazır olma veya canlılık araştırması hata eşiğinin ötesinde başarısız olur. Bu durumda, kapsayıcıyı başlatmak için daha uzun bir süre tanıyacak şekilde yoklama ayarlarını yapın. Veya başlatmayı hızlandıran desteklenen daha büyük bir VM SKU'sunu deneyin.
Kapsayıcı ortamı kurulumunda, örneğin eksik bir bağımlılık gibi bir hata var.
Hatayı alırsanız
TypeError: register() takes 3 positional arguments but 4 were given
flask v2 ileazureml-inference-server-http
arasındaki bağımlılığı denetleyin. Daha fazla bilgi için bkz . HTTP sunucusu sorunlarını giderme.
HATA: Kaynak Bulunamadı
Yönetilen çevrimiçi uç nokta veya Kubernetes çevrimiçi uç noktasını kullanırken aşağıdaki nedenlerle bu hatayı alabilirsiniz:
- Azure Resource Manager gerekli kaynağı bulamıyor
- Kapsayıcı kayıt defteri özel veya başka bir şekilde erişilemez
Resource Manager kaynak bulamıyor
Azure Resource Manager gerekli bir kaynağı bulamadıklarında bu hata oluşur. Örneğin, belirtilen yolda bir depolama hesabı bulunamazsa bu hatayı alabilirsiniz. Doğruluk ve yazım denetimi için yol veya ad belirtimlerini çift denetleyin. Daha fazla bilgi için bkz . Kaynak Bulunamadı hatalarını düzeltme.
Konteyner kayıt defteri yetkilendirme hatası
Dağıtım için özel veya başka bir şekilde erişilemeyen kapsayıcı kayıt defterine ait bir görüntü sağlandığında bu hata oluşur. Azure Machine Learning API'leri özel kayıt defteri kimlik bilgilerini kabul edemez.
Bu hatayı azaltmak için kapsayıcı kayıt defterinin özel olmadığından emin olun veya aşağıdaki adımları izleyin:
- Çevrimiçi uç noktanızın Sistem Kimliği'ne özel kayıt defterinizin acrPull rolünü tanımlayın.
- Ortam tanımınızda, özel görüntünüzün adresini belirtin ve görüntüyü değiştirmeme veya oluşturmama yönergelerini verin.
Bu azaltma başarılı olursa, görüntünün oluşturulması gerekmez ve son görüntü adresi verilen görüntü adresidir. Dağıtım zamanında, çevrimiçi uç noktanızın sistem kimliği görüntüyü özel kayıt defterinden çeker.
Daha fazla tanılama bilgisi için Çalışma alanı tanılamasını kullanma bölümüne bakın.
HATA: Çalışma Alanı Yönetilen Ağı Hazır Değil
Bu hata, çalışma alanı yönetilen sanal ağını etkinleştiren bir çevrimiçi dağıtım oluşturmaya çalıştığınızda oluşur, ancak yönetilen sanal ağ henüz sağlanmamıştır. Çevrimiçi dağıtım oluşturmadan önce çalışma alanı tarafından yönetilen sanal ağı sağlayın.
Çalışma alanı yönetilen sanal ağını el ile sağlamak için Yönetilen sanal ağı el ile sağlama başlığındaki yönergeleri izleyin. Daha sonra çevrimiçi dağıtımlar oluşturmaya başlayabilirsiniz. Daha fazla bilgi için bkz . Yönetilen çevrimiçi uç nokta ile ağ yalıtımı ve Ağ yalıtımı ile yönetilen çevrimiçi uç noktalarınızın güvenliğini sağlama.
HATA: Operasyon İptal Edildi
Yönetilen çevrimiçi uç nokta veya Kubernetes çevrimiçi uç noktasını kullanırken aşağıdaki nedenlerle bu hatayı alabilirsiniz:
- İşlem, daha yüksek önceliğe sahip başka bir işlem tarafından iptal edildi
- İşlem, kilit onayı bekleyen önceki bir işlemden dolayı iptal edildi
İşlem daha yüksek öncelikli başka bir işlem tarafından iptal edildi
Azure işlemleri belirli bir öncelik düzeyine sahiptir ve en yüksekten en düşüke kadar yürütülür. Bu hata, daha yüksek önceliğe sahip başka bir işlem işleminizi geçersiz kıldığında oluşur. İşlemi yeniden denemek, işlemin iptal edilmeden gerçekleştirilebilmesine olanak tanıyabilir.
Kilit onayı beklenilirken işlem iptal edildi
Azure operasyonları gönderildikten sonra kısa bir bekleme süresine sahiptir ve bu süre boyunca yarış koşullarıyla karşılaşmamalarını sağlamak için bir kilit alır. Gönderdiğiniz işlem başka bir işlemle aynı olduğunda bu hata oluşur. Diğer işlem şu anda devam etmeden önce kilidi aldığına dair onay bekliyor.
İlk istek sonrasında çok kısa bir süre içinde benzer bir istek göndermiş olabilirsiniz. Bir dakikaya kadar bekledikten sonra işlemi yeniden denemek, işlemin iptal edilmeden gerçekleştirilebilmesine olanak tanıyabilir.
HATA: SecretsInjectionError (Gizli Bilgilerin Enjeksiyon Hatası)
Çevrimiçi dağıtım oluşturulurken gizli anahtarlar alma ve ekleme işlemi, çalışma alanı bağlantılarından veya anahtar kasalarından gizli anahtarları almak için uç noktayla ilişkili kimlik kullanılarak gerçekleştirilir. Bu hata aşağıdaki nedenlerden biri nedeniyle oluşur:
Azure RBAC izni olmadığından, uç nokta kimliği, dağıtım tanımı gizli bilgileri ortam değişkenlerine eşlenen başvurular olarak belirtse bile, çalışma alanı bağlantılarından veya anahtar kasalarından gizli bilgileri okuyamaz. Rol atanması değişikliklerin etkili olması için zaman alabilir.
Gizli referansların biçimi geçersiz veya belirtilen gizli bilgiler çalışma alanı bağlantılarında ya da anahtar kasalarında yok.
Daha fazla bilgi için bkz: Çevrimiçi uç noktalardaki gizli dizileri enjekte etme (önizleme) ve Gizli dizileri çevrimiçi dağıtımdan gizli dizi ekleme (önizleme) yöntemiyle erişme.
HATA: Dahili Sunucu Hatası
Bu hata, Azure Machine Learning hizmetinde düzeltilmesi gereken bir sorun olduğu anlamına gelir. Sorunu çözmek için gereken tüm bilgileri içeren bir müşteri destek bileti gönderin.
Kubernetes dağıtımlarına özgü yaygın hatalar
Kimlik ve kimlik doğrulama hataları:
- ACRSecretError
- TokenRefreshFailed
- GetAADTokenFailed
- ACRKimlikDoğrulamaZorluğuBaşarısız
- ACRTokenExchangeFailed
- KubernetesErişilemez
Crashloopbackoff hataları:
Puanlama betiği hataları:
Diğer hatalar:
- NamespaceNotFound
- EndpointAlreadyExists
- ScoringFeUnhealthy
- PuanlamaDoğrulamaBaşarısız
- GeçersizYerleştirmeÖzelliği
- PodUnschedulable
- PodOutOfMemory
- Çıkarım İstemci Çağrısı Başarısız Oldu
HATA: ACRSecretError
Kubernetes çevrimiçi dağıtımlarını oluşturduğunuzda veya güncelleştirdiğinizde, aşağıdaki nedenlerden biri nedeniyle bu hatayı alabilirsiniz:
Rol ataması tamamlanmadı. Birkaç saniye bekleyin ve yeniden deneyin.
Azure Arc özellikli Kubernetes kümesi veya AKS Azure Machine Learning uzantısı düzgün yüklenmemiş veya yapılandırılmamış. Azure Arc özellikli Kubernetes veya Azure Machine Learning uzantısı yapılandırmasını ve durumunu denetleyin.
Kubernetes kümesi yanlış ağ yapılandırmasına sahip. Ara sunucuyu, ağ ilkesini veya sertifikayı denetleyin.
Özel AKS kümenizde uygun uç noktalar yok. Aks sanal ağındaki Container Registry, depolama hesabı ve çalışma alanı için özel uç noktaları ayarladığınızdan emin olun.
Azure Machine Learning uzantı sürümünüz v1.1.25 veya daha düşük. Uzantı sürümünüzün v1.1.25 sürümünden büyük olduğundan emin olun.
HATA: JetonYenilemeBaşarısız
Kubernetes küme kimliği düzgün ayarlanmadığından, uzantı Azure'dan bir asıl kimlik bilgisi alamadığından bu hata oluşur. Azure Machine Learning uzantısını yeniden yükleyin ve yeniden deneyin.
HATA: AAD Token Alma Başarısız
Kubernetes kümesi için Microsoft Entra ID belirteç isteği başarısız olduğu veya zaman aşımına uğradığı için bu hata oluşur. Ağ erişiminizi kontrol edin ve tekrar deneyin.
Kümenin çalışma alanına bağlanabildiğinden emin olmak ve proxy sunucuyu kontrol etmek için Kubernetes'i kullan başlığındaki yönergeleri izleyin. Çalışma alanı uç noktası URL'sini kümedeki çevrimiçi uç nokta Özel Kaynak Tanımı'nda (CRD) bulabilirsiniz.
Çalışma alanının genel erişime izin verip vermeyeceğini denetleyin. AKS kümesinin genel mi yoksa özel mi olduğuna bakılmaksızın, özel bir çalışma alanı genel ağ erişimini devre dışı bırakırsa, Kubernetes kümesi bu çalışma alanıyla yalnızca özel bir bağlantı üzerinden iletişim kurabilir. Daha fazla bilgi için bkz . Güvenli AKS çıkarım ortamı nedir?
HATA: ACR Kimlik Doğrulama Sınavı Başarısız oldu
Kubernetes kümesi bir kimlik doğrulama sınaması yapmak için çalışma alanı Container Registry hizmetine ulaşamadığından bu hata oluşur. Ağınızı, özellikle Container Registry genel ağ erişimini denetleyin ve yeniden deneyin. Ağı denetlemek için GetAADTokenFailed içindeki sorun giderme adımlarını izleyebilirsiniz.
HATA: ACRTokenExchangeBaşarısız
Bu hata, Microsoft Entra Id belirtecinin henüz yetkilendirilememesi nedeniyle oluşur, bu nedenle Kubernetes kümesi exchange Container Registry belirteci başarısız olur. Rol ataması biraz zaman alır, bu nedenle bir dakika bekleyip yeniden deneyin.
Bu hata, Container Registry hizmetine yönelik çok fazla eşzamanlı istek nedeniyle de olabilir. Bu hata geçici olmalıdır ve daha sonra yeniden deneyebilirsiniz.
HATA: KubernetesUnaccessible
Kubernetes model dağıtımları sırasında aşağıdaki hatayı alabilirsiniz:
{"code":"BadRequest","statusCode":400,"message":"The request is invalid.","details":[{"code":"KubernetesUnaccessible","message":"Kubernetes error: AuthenticationException. Reason: InvalidCertificate"}],...}
Bu hatayı azaltmak için kümenin AKS sertifikasını döndürebilirsiniz. Yeni sertifika 5 saat sonra güncelleştirilmelidir, böylece 5 saat bekleyip yeniden dağıtabilirsiniz. Daha fazla bilgi için bkz . Azure Kubernetes Service'te (AKS) sertifika döndürme.
HATA: ImagePullLoopBackOff
Kapsayıcı kayıt defterinden görüntüleri indiremediğinizden Kubernetes çevrimiçi dağıtımlarını oluşturduğunuzda veya güncelleştirdiğinizde bu hatayı alabilirsiniz ve bu da görüntülerin çekme hatasına neden olur. Kümenin kapsayıcı kayıt defterinden görüntü çekip çekemediğini görmek için küme ağ ilkesini ve çalışma alanı kapsayıcı kayıt defterini denetleyin.
HATA: DeploymentCrashLoopBackOff
Kullanıcı kapsayıcısı başlatılırken çöktüğü için, Kubernetes çevrimiçi dağıtımlarını oluştururken veya güncelleştirirken bu hatayı alabilirsiniz. Bu hatanın iki olası nedeni vardır:
- Kullanıcı betiği score.py, başlatma işlemi sırasında özel durumlar oluşturan bir söz dizimi hatası veya içeri aktarma hatasına sahiptir.
- Dağıtım podunun sınırından daha fazla belleğe ihtiyacı vardır.
Bu hatayı azaltmak için önce dağıtım günlüklerinde kullanıcı betiklerindeki özel durumları denetleyin. Hata devam ederse kaynak/örnek türü bellek sınırını genişletmeyi deneyin.
HATA: KubernetesCrashLoopBackOff
Aşağıdaki nedenlerden biri nedeniyle Kubernetes çevrimiçi uç noktalarını veya dağıtımlarını oluştururken veya güncelleştirirken bu hatayı alabilirsiniz:
- Bir veya daha fazla pod "CrashLoopBackoff" durumunda takılı kalmış. Dağıtım günlüğünün mevcut olup olmadığını ve günlükte hata iletileri olup olmadığını denetleyin.
- score.py dosyasında bir hata var ve puan kodunuzu başlatırken kapsayıcı çöktü. HATA: ResourceNotReady altındaki yönergeleri izleyin.
- Puanlama işleminizin dağıtım yapılandırma sınırınızdan daha fazla belleğe ihtiyacı var. Dağıtımı daha büyük bir bellek sınırıyla güncelleştirmeyi deneyebilirsiniz.
HATA: NamespaceNotFound
Kubernetes bilgisayarınızın kullandığı ad alanı kümenizde mevcut olmadığından, Kubernetes çevrimiçi uç noktalarını oluştururken veya güncellerken bu hatayı alabilirsiniz. Çalışma alanı portalınızda Kubernetes işlemini denetleyin ve Kubernetes kümenizdeki ad alanını denetleyin. Ad alanı kullanılamıyorsa eski işlemden ayrılın ve kümenizde zaten var olan bir ad alanı belirterek yeni bir ad alanı oluşturmak için yeniden ekleyin.
HATA: KullanıcıScriptİnitBaşarısız
Karşıya yüklenen init
dosyanızdaki işlevi bir özel durum oluşturduğunda, Kubernetes çevrimiçi dağıtımlarını oluşturur veya güncelleştirirken bu hatayı alabilirsiniz. Özel durum iletisini ayrıntılı olarak görmek için dağıtım günlüklerini denetleyin ve özel durumu düzeltin.
HATA: KullanıcıScriptiİçeAktarmaHatası
Kubernetes çevrimiçi dağıtımlarını oluştururken veya güncellerken, yüklediğiniz score.py dosyası kullanılamayan paketleri içe aktardığı için bu hatayla karşılaşabilirsiniz. Özel durum iletisini ayrıntılı olarak görmek için dağıtım günlüklerini denetleyin ve özel durumu düzeltin.
HATA: UserScriptFunctionNotFound
Karşıya yüklediğiniz score.py dosyasında init()
veya run()
adlı bir işlev bulunmadığından, Kubernetes çevrimiçi dağıtımlarını oluştururken veya güncelleştirirken bu hatayı alabilirsiniz. Kodunuzu denetleyin ve işlevi ekleyin.
HATA: Uç Nokta Bulunamadı
Sistem kümede dağıtım için uç nokta kaynağını bulamadığından Kubernetes çevrimiçi dağıtımlarını oluşturur veya güncelleştirirken bu hatayı alabilirsiniz. Dağıtımı mevcut bir uç noktada oluşturun veya önce kümenizde uç noktayı oluşturun.
HATA: Uç Nokta Zaten Mevcut
Uç nokta kümenizde zaten mevcut olduğundan bir Kubernetes çevrimiçi uç noktası oluşturduğunuzda bu hatayı alabilirsiniz. Uç nokta adı çalışma alanı ve küme başına benzersiz olmalıdır, bu nedenle başka bir adla bir uç nokta oluşturun.
HATA: ScoringFeUnhealthy (Puanlama Ürününde Sağlıksız Durum)
Kümede çalışan azureml-fe sistem hizmeti bulunamadığından veya iyi durumda olmadığından bir Kubernetes çevrimiçi uç noktası veya dağıtımı oluşturduğunuzda veya güncelleştirdiğinizde bu hatayı alabilirsiniz. Bu sorunu azaltmak için kümenizdeki Azure Machine Learning uzantısını yeniden yükleyin veya güncelleştirin.
HATA: Puanlama Doğrulaması Başarısız
Modeli işlerken puanlama isteği URL'si doğrulaması başarısız olduğundan Kubernetes çevrimiçi dağıtımlarını oluşturur veya güncelleştirirken bu hatayı alabilirsiniz. Uç nokta URL'sini denetleyin ve yeniden dağıtmayı deneyin.
HATA: Geçersiz Dağıtım Özellikleri
Dağıtım belirtimi geçersiz olduğundan Kubernetes çevrimiçi dağıtımlarını oluşturur veya güncelleştirirken bu hatayı alabilirsiniz. Emin olmak için instance count
hata mesajını kontrol edin. Otomatik ölçeklendirmeyi etkinleştirdiyseniz minimum instance count
ve maximum instance count
öğelerinin her ikisinin de geçerli olduğundan emin olun.
HATA: PodUnschedulable
Aşağıdaki nedenlerden biri nedeniyle Kubernetes çevrimiçi uç noktalarını veya dağıtımlarını oluştururken veya güncelleştirirken bu hatayı alabilirsiniz:
- Kümenizdeki kaynakların yetersiz olması nedeniyle sistem podu düğümlere zamanlayamaz.
- Düğüm bağlılık seçicisi ile eşleşen hiçbir düğüm yok.
Bu hatayı azaltmak için şu adımları izleyin:
- Kullandığınız
node selector
öğesinininstance_type
tanımını ve küme düğümlerinizinnode label
yapılandırmasını kontrol edin. - AKS kümesinin
instance_type
ve düğüm SKU boyutunu veya Azure Arc özellikli Kubernetes kümesinin düğüm kaynağını denetleyin. - Kümenin kaynağı yetersizse, örnek türü kaynak gereksinimini azaltın veya daha küçük kaynak gereksinimleri olan başka bir örnek türü kullanın.
- Kümede dağıtım gereksinimini karşılayacak başka kaynak yoksa, kaynakları serbest bırakmak için bazı dağıtımları silin.
HATA: PodOutOfMemory
Dağıtım için sağladığınız bellek sınırı yetersiz olduğundan, çevrimiçi dağıtım oluştururken veya güncelleştirirken bu hatayı alabilirsiniz. Bu hatayı azaltmak için bellek sınırını daha büyük bir değere ayarlayabilir veya daha büyük bir örnek türü kullanabilirsiniz.
HATA: Çıkarım İstemci Çağrısı Başarısız Oldu
Kubernetes kümesinin k8s uzantısı bağlanamadığından, Kubernetes çevrimiçi uç noktalarını veya dağıtımlarını oluştururken veya güncelleştirirken bu hatayı alabilirsiniz. Bu durumda, bilgisayarınızı ayırıp yeniden bağlayın.
Yeniden eklemeyle ilgili hataları gidermek için, diğer hataları önlemek için ayrılmış işlemle aynı yapılandırmayla (işlem adı ve ad alanı gibi) yeniden bağlanmayı unutmayın. Hala çalışmıyorsa, kümeye kubectl get po -n azureml
erişebilen bir yöneticiden geçiş sunucusu podlarının çalışıp çalışmadığını denetlemesini isteyin.
Model tüketimi sorunları
Uç nokta invoke
işlem durumundan kaynaklanan yaygın model tüketimi hataları bant genişliği sınırı sorunları, CORS ilkesi ve çeşitli HTTP durum kodlarıdır.
Bant genişliği sınırı sorunları
Yönetilen çevrimiçi uç noktaların her uç nokta için bant genişliği sınırları vardır. Sınır yapılandırmasını çevrimiçi uç noktaların sınırları içinde bulabilirsiniz. Bant genişliği kullanımınız sınırı aşarsa isteğiniz gecikir.
Bant genişliği gecikmesini izlemek için ağ baytları ölçümünü kullanarak geçerli bant genişliği kullanımını anlayın. Daha fazla bilgi için bkz Yönetilen çevrimiçi uç noktaları izleme.
Bant genişliği sınırı uygulandığında iki yanıt römorku döndürülür.
-
ms-azureml-bandwidth-request-delay-ms
, istek akışı aktarımı için geçen milisaniye cinsinden gecikme süresidir. -
ms-azureml-bandwidth-response-delay-ms
yanıt akışı aktarımı için geçen milisaniye cinsinden gecikme süresidir.
CORS ilkesi tarafından engellendi
V2 çevrimiçi uç noktaları, Çıkış Noktaları Arası Kaynak Paylaşımı'nı (CORS) yerel olarak desteklemez. Web uygulamanız CORS denetim öncesi isteklerini düzgün bir şekilde işlemeden uç noktayı çağırmaya çalışırsa aşağıdaki hata iletisini alabilirsiniz:
Access to fetch at 'https://{your-endpoint-name}.{your-region}.inference.ml.azure.com/score' from origin http://{your-url} has been blocked by CORS policy: Response to preflight request doesn't pass access control check. No 'Access-control-allow-origin' header is present on the request resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with the CORS disabled.
CORS denetim öncesi isteklerini işlemek için geçici katman olarak Azure İşlevleri, Azure Uygulama Ağ Geçidi veya başka bir hizmeti kullanabilirsiniz.
HTTP durum kodu
REST istekleriyle çevrimiçi uç noktalara eriştiğiniz zaman, döndürülen durum kodları HTTP durum kodları standartlarına uyar. Aşağıdaki bölümlerde uç nokta çağırma ve tahmin hatalarının HTTP durum kodlarıyla nasıl eşlenmeleri hakkında ayrıntılar sağlanır.
Yönetilen çevrimiçi uç noktalar için yaygın hata kodları
Rest istekleri yönetilen çevrimiçi uç noktaları tükettiğinde aşağıdaki tabloda yaygın hata kodları yer alır:
Durum kodu | Neden | Açıklama |
---|---|---|
200 | Tamam | Modeliniz gecikme sınırlarınızda başarıyla yürütüldü. |
401 | Yetkisiz | İstenen eylemi, örneğin puanlama, gerçekleştirme izniniz yok veya jetonunuzun süresi dolmuş ya da yanlış biçimde. Daha fazla bilgi için bkz. Yönetilen çevrimiçi uç noktalar için kimlik doğrulaması ve Çevrimiçi uç noktalar için istemcilerin kimliğini doğrulama. |
404 | Bulunamadı | Bitiş noktasının pozitif ağırlık taşıyan geçerli bir dağıtımı yok. |
408 | İstek zamanaşımı | Model yürütmesi, model dağıtım yapılandırmanızın request_timeout_ms altında sağlanan request_settings zaman aşımından daha uzun sürdü. |
424 | Model hatası | Model kapsayıcınız 200 olmayan bir yanıt döndürürse Azure 424 döndürür.
Model Status Code boyutunu, uç noktanızın Requests Per Minute ölçütü altındaki Azure Monitor Ölçüm Gezgini üzerinde kontrol edin. Veya yanıt üst bilgilerini ms-azureml-model-error-statuscode ve ms-azureml-model-error-reason daha fazla bilgi için denetleyin. Eğer 424 hatası, canlılık veya hazır olma yoklaması başarısızlığıyla birlikte gelirse, kapsayıcı canlılığını veya hazır olma durumunu araştırmak için daha fazla zaman sağlamak amacıyla ProbeSettings'i ayarlamayı düşünün. |
429 | Çok fazla bekleyen istek var. | Modeliniz şu anda işleyebileceğinden daha fazla istek alıyor. Sorunsuz bir operasyonu garanti etmek için, Azure Machine Learning, herhangi bir zamanda paralel olarak maksimum 2 * max_concurrent_requests_per_instance * instance_count requests işlemeye izin verir. Bu üst sınırı aşan istekler reddedilir.Model dağıtım yapılandırmanızı ve ayarları doğrulamak ve ayarlamak için request_settings ve scale_settings bölümlerini gözden geçirebilirsiniz. Ayrıca, RequestSettings'te açıklandığı gibi ortam değişkeninin WORKER_COUNT doğru şekilde geçirildiğinden emin olun.Otomatik ölçeklendirmeyi kullanırken bu hatayı alırsanız, modeliniz istekleri sistemin ölçeklenme hızından daha hızlı alıyor demektir. Sistemin ayarlaması için zaman tanımak amacıyla üstel geri çekilme ile istekleri yeniden göndermeyi göz önünde bulundurun. Örnek sayısını hesaplamak için kod kullanarak örnek sayısını da artırabilirsiniz. Modelinizin istek akışını işlemeye hazır olduğundan emin olmak için bu adımları otomatik ölçeklendirmeyi ayarlamayla birleştirin. |
429 | Oran sınırlı | Saniye başına istek sayısı yönetilen çevrimiçi uç nokta sınırlarına ulaştı. |
beş yüz | İç sunucu hatası | Azure Machine Learning tarafından sağlanan altyapı başarısız oluyor. |
Kubernetes çevrimiçi uç noktaları için yaygın hata kodları
Aşağıdaki tabloda REST istekleri Kubernetes çevrimiçi uç noktalarını tükettiğinde sık karşılaşılan hata kodları yer alır:
Durum kodu | Hata | Açıklama |
---|---|---|
409 | Çakışma hatası | Bir işlem zaten devam ederken, aynı çevrimiçi uç noktadaki tüm yeni işlemler 409 çakışma hatasıyla yanıt verir. Örneğin, çevrimiçi uç nokta oluşturma veya güncelleştirme işlemi devam ederse, yeni bir silme işleminin tetiklenmesi hataya neden olur. |
502 |
run() dosyasının yönteminde özel durum veya kilitlenme |
tr-TR: score.py dosyasında, örneğin conda ortamında bulunmayan bir paket veya bir söz dizimi hatası olduğunda ya da init() yöntemi başarısız olduğunda, dosyada hata ayıklamak için ERROR: ResourceNotReady'ye bakın. |
503 | saniye başına isteklerde büyük ani artışlar | Otomatik ölçeklendirici, yükteki aşamalı değişiklikleri işlemek için tasarlanmıştır. saniye başına isteklerde büyük ani artışlar alırsanız, istemciler HTTP durum kodu 503'e sahip olabilir. Otomatik ölçeklendirici hızlı tepki vermesine rağmen, AKS'nin daha fazla kapsayıcı oluşturması önemli ölçüde zaman alır. Nasıl 503 durum kodu hatalarını önleyebileceğinizi görün. |
504 | İstek zaman aşımına uğradı | 504 durum kodu, isteğin zaman aşımına uğradı olduğunu gösterir. Varsayılan zaman aşımı ayarı 5 saniyedir. Gereksiz çağrıları kaldırmak için score.py değiştirerek zaman aşımını artırabilir veya uç noktayı hızlandırmayı deneyebilirsiniz. Bu eylemler sorunu düzeltmezse, kod yanıt vermeyen bir durumda veya sonsuz döngüde olabilir. Hata ayıklamak için HATA: ResourceNotReady hatasını izleyin ve score.py dosyasını inceleyin. |
beş yüz | İç sunucu hatası | Azure Machine Learning tarafından sağlanan altyapı başarısız oluyor. |
503 durum kodu hatalarını önleme
Kubernetes çevrimiçi dağıtımları, ek yükü desteklemek için çoğaltmaların eklenmesini sağlayan otomatik ölçeklendirmeyi destekler. Daha fazla bilgi için bkz . Azure Machine Learning çıkarım yönlendiricisi. Ölçek artırma veya azaltma kararı, mevcut kapsayıcı çoğaltmalarının kullanımına bağlıdır.
İki eylem 503 durum kodu hatalarının önlenmesine yardımcı olabilir: Yeni çoğaltma oluşturmak için kullanım düzeyini değiştirme veya en az çoğaltma sayısını değiştirme. Bu yaklaşımları tek tek veya birlikte kullanabilirsiniz.
Otomatik ölçeklendirmenin yeni çoğaltmalar oluşturduğu kullanım hedefini,
autoscale_target_utilization
değerini daha düşük bir değere ayarlayarak değiştirin. Bu değişiklik, çoğaltmaların daha hızlı oluşturulmasına neden olmaz, ancak daha düşük bir kullanım eşiğinde oluşturulmalarına olanak tanır. Örneğin, değerin %30 olarak değiştirilmesi, hizmet %70 kullanılana kadar beklemek yerine %30 kullanım gerçekleştiğinde çoğaltmaların oluşturulmasına neden olur.Gelen ani artışları işleyebilen daha büyük bir havuz sağlamak için minimum replika sayısını değiştirin.
Örnek sayısını hesaplama
Örnek sayısını artırmak için gerekli çoğaltmaları aşağıdaki gibi hesaplayabilirsiniz:
from math import ceil
# target requests per second
target_rps = 20
# time to process the request (in seconds, choose appropriate percentile)
request_process_time = 10
# Maximum concurrent requests per instance
max_concurrent_requests_per_instance = 1
# The target CPU usage of the model container. 70% in this example
target_utilization = .7
concurrent_requests = target_rps * request_process_time / target_utilization
# Number of instance count
instance_count = ceil(concurrent_requests / max_concurrent_requests_per_instance)
Not
Yeni minimum replikaların işleyebileceğinden daha büyük istek artışları alırsanız, yeniden 503 hatası alabilirsiniz. Örneğin uç noktanıza gelen trafik arttıkça en düşük çoğaltmaları artırmanız gerekebilir.
Maksimum çoğaltma sayısını artırmak için autoscale_max_replicas
değerini artırın; Kubernetes çevrimiçi uç noktası zaten geçerli maksimum çoğaltmaları kullanıyorsa ve yine de 503 durum kodu alıyorsanız.
Ağ yalıtımı sorunları
Bu bölümde yaygın ağ yalıtımı sorunları hakkında bilgi sağlanır.
Çevrimiçi uç nokta oluşturma işlemi, v1 eski moduyla ilgili bir mesajla başarısız oluyor.
Yönetilen çevrimiçi uç noktalar, Azure Machine Learning v2 API platformunun bir özelliğidir. Azure Machine Learning çalışma alanınız v1 eski modu için yapılandırılmışsa, yönetilen çevrimiçi uç noktalar çalışmaz. Özellikle, v1_legacy_mode
çalışma alanı ayarı true
olarak ayarlandıysa, v1 eski modu açık olur ve v2 API'leri için destek sağlanmaz.
v1 eski modunu nasıl kapattığınızı görmek için bkz. Azure Resource Manager'da yeni API platformumuzla ağ yalıtımı değişikliği.
Önemli
v1_legacy_mode
ayarını false
olarak değiştirmeden önce, v1 eski modu bir nedenle açık olabileceğinden, ağ güvenlik ekibinize danışın.
Anahtar tabanlı kimlik doğrulamasıyla çevrimiçi uç nokta oluşturma işlemi başarısız oluyor
Çalışma alanınız için Azure anahtar kasasının ağ kurallarını listelemek için aşağıdaki komutu kullanın.
<key-vault-name>
öğesini anahtar kasanızın adıyla değiştirin.
az keyvault network-rule list -n <key-vault-name>
Bu komutun yanıtı aşağıdaki JSON koduna benzer:
{
"bypass": "AzureServices",
"defaultAction": "Deny",
"ipRules": [],
"virtualNetworkRules": []
}
Eğer bypass
değeri AzureServices
değilse, onu olarak ayarlamak için AzureServices
kılavuzundaki yönergeleri kullanın.
Çevrimiçi dağıtımlar görüntü indirme hatasıyla başarısız oluyor
Not
Bu sorun, yönetilen çevrimiçi uç noktalar için eski ağ yalıtım yöntemini kullandığınızda geçerlidir. Bu yöntemde Azure Machine Learning, bir uç nokta altında her dağıtım için bir yönetilen sanal ağ oluşturur.
Dağıtım için
egress-public-network-access
bayrağının değerinindisabled
olup olmadığını denetleyin. Eğer bu bayrak etkinse ve kapsayıcı kayıt defterinin görünürlüğü özel (privé) ise, bu beklenen bir hatadır.Özel uç nokta bağlantısının durumunu denetlemek için aşağıdaki komutu kullanın. Çalışma alanınızın Azure Container Registry adını
<registry-name>
ile değiştirin.az acr private-endpoint-connection list -r <registry-name> --query "[?privateLinkServiceConnectionState.description=='Egress for Microsoft.MachineLearningServices/workspaces/onlineEndpoints'].{ID:id, status:privateLinkServiceConnectionState.status}"
Yanıt kodunda,
status
alanınınApproved
olarak ayarlandığını doğrulayın. Değer değilseApproved
, bağlantıyı onaylamak için aşağıdaki komutu kullanın.<private-endpoint-connection-ID>
değerini, önceki komutun döndürdüğü kimlikle değiştirin.az network private-endpoint-connection approve --id <private-endpoint-connection-ID> --description "Approved"
Puanlama uç noktası çözümlenemiyor
Puanlama isteğini veren istemcinin Azure Machine Learning çalışma alanına erişebilen bir sanal ağ olduğunu doğrulayın.
nslookup
IP adresi bilgilerini almak için uç nokta ana bilgisayar adındaki komutunu kullanın:nslookup <endpoint-name>.<endpoint-region>.inference.ml.azure.com
Örneğin, komutunuz aşağıdakine benzer görünebilir:
nslookup endpointname.westcentralus.inference.ml.azure.com
Yanıt, sanal ağ tarafından sağlanan aralıkta olması gereken bir adres içerir.
Not
- Kubernetes çevrimiçi uç noktası için uç nokta ana bilgisayar adı, Kubernetes kümenizde belirtilen CName (etki alanı adı) olmalıdır.
- Uç nokta HTTP kullanıyorsa, IP adresi, studio kullanıcı arabiriminden alabileceğiniz uç nokta URI'sinde yer alır.
- Uç noktanın IP adresini almanın diğer yolları için bkz. DNS'nizi FQDN ile güncelleştirme.
nslookup
Komut ana bilgisayar adını çözmezse, aşağıdaki bölümlerden birinde eylemleri gerçekleştirin.
Yönetilen çevrimiçi uç noktalar
Sanal ağın özel Etki Alanı Adı Sistemi (DNS) bölgesinde bir A kaydı olup olmadığını denetlemek için aşağıdaki komutu kullanın.
az network private-dns record-set list -z privatelink.api.azureml.ms -o tsv --query [].name
Sonuçlar,
*.<GUID>.inference.<region>
gibi bir kayıt içermelidir.Çıkarım değeri döndürülmezse, çalışma alanının özel uç noktasını silin ve yeniden oluşturun. Daha fazla bilgi için Özel uç noktayı nasıl yapılandıracağınızı öğrenin.
Özel uç nokta içeren çalışma alanı özel bir DNS sunucusu kullanıyorsa, özel DNS sunucusundaki çözümün düzgün çalıştığını doğrulamak için aşağıdaki komutu çalıştırın:
dig <endpoint-name>.<endpoint-region>.inference.ml.azure.com
Kubernetes çevrimiçi uç noktaları
Kubernetes kümesindeki DNS yapılandırmasını denetleyin.
Azure Machine Learning çıkarım yönlendiricisinin beklendiği
azureml-fe
gibi çalışıp çalışmadığını denetleyin. Bu denetimi gerçekleştirmek için aşağıdaki adımları izleyin:Podda
azureml-fe
aşağıdaki komutu çalıştırın:kubectl exec -it deploy/azureml-fe -- /bin/bash
Aşağıdaki komutlardan birini çalıştırın:
curl -vi -k https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
HTTP için aşağıdaki komutu kullanın:
curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
CURL HTTPS komutu başarısız olursa veya zaman aşımına uğradıysa ancak HTTP komutu çalışıyorsa sertifikanın geçerli olup olmadığını denetleyin.
Yukarıdaki işlem A kaydına çözümlenemezse, çözümlemenin Azure DNS sanal genel IP adresinden (168.63.129.16) çalışıp çalışmadığını doğrulamak için aşağıdaki komutu kullanın:
dig @168.63.129.16 <endpoint-name>.<endpoint-region>.inference.ml.azure.com
Yukarıdaki komut başarılı olursa, özel DNS'de Azure Özel Bağlantı için koşullu iletici sorunlarını giderin.
Çevrimiçi dağıtımlar puanlanamıyor
Puanlanamaz bir dağıtımın durumunu görmek için aşağıdaki komutu çalıştırın:
az ml online-deployment show -e <endpoint-name> -n <deployment-name> --query '{name:name,state:provisioning_state}'
Succeeded
alanınınstate
değeri başarılı bir dağıtımı gösterir.Başarılı bir dağıtım için, trafiğin dağıtıma atandığını denetlemek için aşağıdaki komutu kullanın:
az ml online-endpoint show -n <endpoint-name> --query traffic
Bu komuttan gelen yanıt, her dağıtıma atanan trafiğin yüzdesini listelemelidir.
İpucu
Bu dağıtımı hedeflemek için isteğinizde üst bilgiyi
azureml-model-deployment
kullanırsanız bu adım gerekli değildir.Trafik atamaları veya dağıtım üst bilgisi doğru ayarlanmışsa, uç noktanın günlüklerini almak için aşağıdaki komutu kullanın:
az ml online-deployment get-logs -e <endpoint-name> -n <deployment-name>
Dağıtıma bir istek gönderdiğinizde puanlama kodunun çalıştırılmasında sorun olup olmadığını görmek için kayıtları kontrol edin.
Çıkarım sunucusu sorunları
Bu bölümde, Azure Machine Learning çıkarımı HTTP sunucusu için temel sorun giderme ipuçları sağlanır.
Yüklü paketleri denetleme
Yüklü paketlerle ilgili sorunları gidermek için şu adımları izleyin:
Python ortamınız için yüklü paketler ve sürümler hakkında bilgi toplayın.
Ortam dosyanızda, belirtilen Python paketinin
azureml-inference-server-http
sürümünü denetleyin. Azure Machine Learning çıkarım HTTP sunucusu başlangıç günlüklerinde görüntülenen çıkarım sunucusunun sürümünü denetleyin. İki sürümün eşleşdiğini onaylayın.Bazı durumlarda pip bağımlılık çözümleyicisi beklenmeyen paket sürümlerini yükler. Yüklü paketleri ve sürümleri düzeltmek için komutunu çalıştırmanız
pip
gerekebilir.Ortamınızda Flask veya bağımlılıkları belirttiyseniz, bu öğeleri kaldırın.
- Bağımlı paketler arasında
flask
,jinja2
,itsdangerous
,werkzeug
,markupsafe
ve bulunurclick
. - Paket
flask
, çıkarım sunucusu paketinde bağımlılık olarak listelenir. En iyi yaklaşım, çıkarım sunucusunun paketi yüklemesine izin vermektirflask
. - Çıkarım sunucusu Flask'in yeni sürümlerini destekleyecek şekilde yapılandırıldığında, çıkarım sunucusu paket güncelleştirmelerini kullanıma sunuldukça otomatik olarak alır.
- Bağımlı paketler arasında
Çıkarım sunucusu sürümünü denetleyin
Sunucu azureml-inference-server-http
paketi PyPI'da yayımlanır.
PyPI sayfasında değişiklik günlüğü ve paketin tüm sürümleri listelenir.
Erken paket sürümü kullanıyorsanız yapılandırmanızı en son sürüme güncelleştirin. Aşağıdaki tabloda kararlı sürümler, yaygın sorunlar ve önerilen ayarlamalar özetlenmektedir:
Paket sürümü | Açıklama | Sorun | Çözüm |
---|---|---|---|
0.4.x |
20220601 tarihi veya öncesine ait eğitim görüntülerinde ve 0.1.34 ile 1.43 arasındaki azureml-defaults sürüm paketlerinde paketlenmiştir. En son kararlı sürüm 0.4.13'dür. |
0.4.11'den önceki sunucu sürümlerinde, can't import name Markup from jinja2 gibi Flask bağımlılık sorunlarıyla karşılaşabilirsiniz. |
Mümkünse en son sürüm olan 0.4.13 veya 1.4.x sürümüne yükseltin. |
0.6.x | Önceden yüklenmiş çıkarımın bulunduğu 20220516 ve öncesindeki görüntülerde. En son kararlı sürüm 0.6.1'dir. |
Yok | Yok |
0.7.x | Flask 2'i destekler. En son kararlı sürüm 0.7.7'dir. | Yok | Yok |
0.8.x | Güncelleştirilmiş günlük biçimini kullanır. Python 3.6 desteğini sona erdiriyor. | Yok | Yok |
1.0.x | Python 3.7 desteğini sona erdiriyor. | Yok | Yok |
1.1.x | 2.0 sürümüne pydantic taşır. |
Yok | Yok |
1.2.x | Python 3.11 desteği ekler.
gunicorn sürüm 22.0.0'a güncelleniyor.
werkzeug 3.0.3 ve sonraki sürümlere günceller. |
Yok | Yok |
1.3.x | Python 3.12 desteği ekler. Sürüm 2024.7.4'e yükseltildi certifi . Sürüm 5.0.0'a yükseltildi flask-cors .
gunicorn ve pydantic paketlerini yükseltir. |
Yok | Yok |
1.4.x | Sürüm 3.0.1'e yükseltildi waitress . Python 3.8 desteğini sona erdiriyor. Flask 2.0 yükseltmesinin istek nesne kodunu bozmasını engelleyen uyumluluk katmanını kaldırır. |
Uyumluluk katmanına bağlıysanız, istek nesnesi kodunuz çalışmayabilir. | Puan betiğinizi Flask 2'ye geçirin. |
Paket bağımlılıklarını denetleme
Sunucu paketi için azureml-inference-server-http
en ilgili bağımlı paketler şunlardır:
flask
opencensus-ext-azure
inference-schema
Python ortamınızda azureml-defaults
paketini belirtirseniz, azureml-inference-server-http
paketi bağımlı pakettir. Bağımlılık otomatik olarak yüklenir.
İpucu
Python v1 için Azure Machine Learning SDK'sını azureml-defaults
kullanıyorsanız ve paketi Python ortamınızda açıkça belirtmezseniz, SDK paketi otomatik olarak ekleyebilir. Ancak, paket sürümü SDK sürümüne göre kilitlenir. Örneğin, SDK sürümü 1.38.0 ise, azureml-defaults==1.38.0
giriş ortamın pip gereksinimlerine eklenir.
Çıkarım sunucusu başlatma sırasında TypeError
Çıkarım sunucusu başlatılırken aşağıdakilerle TypeError
karşılaşabilirsiniz:
TypeError: register() takes 3 positional arguments but 4 were given
File "/var/azureml-server/aml_blueprint.py", line 251, in register
super(AMLBlueprint, self).register(app, options, first_registration)
TypeError: register() takes 3 positional arguments but 4 were given
Python ortamınızda Flask 2 yüklüyse ancak paket sürümünüz azureml-inference-server-http
Flask 2'yi desteklemediğinde bu hata oluşur. Flask 2 desteği azureml-inference-server-http
0.7.0 paketi ve sonraki sürümleri ile azureml-defaults
1.44 paketi ve sonraki sürümlerinde kullanılabilir.
Flask 2 paketini bir Azure Machine Learning Docker görüntüsünde kullanmıyorsanız,
azureml-inference-server-http
veyaazureml-defaults
paketinin en son sürümünü kullanın.Flask 2 paketini bir Azure Machine Learning Docker görüntüsünde kullanıyorsanız, görüntü derleme sürümünün
July 2022
veya daha yeni bir sürüm olduğunu teyit edin.Görüntü sürümünü kapsayıcı günlüklerinde bulabilirsiniz. Örneğin, aşağıdaki günlük kayıtlarına bakın:
2022-08-22T17:05:02,147738763+00:00 | gunicorn/run | AzureML Container Runtime Information 2022-08-22T17:05:02,161963207+00:00 | gunicorn/run | ############################################### 2022-08-22T17:05:02,168970479+00:00 | gunicorn/run | 2022-08-22T17:05:02,174364834+00:00 | gunicorn/run | 2022-08-22T17:05:02,187280665+00:00 | gunicorn/run | AzureML image information: openmpi4.1.0-ubuntu20.04, Materialization Build:20220708.v2 2022-08-22T17:05:02,188930082+00:00 | gunicorn/run | 2022-08-22T17:05:02,190557998+00:00 | gunicorn/run |
Görüntünün derleme tarihi, notasyonunun
Materialization Build
ardından görünür. Yukarıdaki örnekte, görüntü sürümü20220708
, yani 8 Temmuz 2022'dir. Bu örnekteki görüntü Flask 2 ile uyumludur.Kapsayıcı günlüğünüzde benzer bir ileti görmüyorsanız, görüntünüz güncel değildir ve güncelleştirilmelidir. İşlem Birleşik Cihaz Mimarisi (CUDA) görüntüsü kullanıyorsanız ve daha yeni bir görüntü bulamıyorsanız, görüntünüzün kullanım dışı bırakılıp kullanılmadığını görmek için AzureML Kapsayıcıları deposuna bakın. Kullanım dışı bırakılan görüntüler için atanmış yedekler bulabilirsiniz.
Çıkarım sunucusunu çevrimiçi uç noktayla kullanıyorsanız günlükleri Azure Machine Learning studio'da da bulabilirsiniz. Uç noktanızın sayfasında Günlükler sekmesini seçin.
SDK v1 ile dağıtım yaparsanız ve dağıtım yapılandırmanızda açıkça bir görüntü belirtmezseniz çıkarım sunucusu paketi yerel SDK araç takımınızla eşleşen bir sürümle uygular openmpi4.1.0-ubuntu20.04
. Ancak, yüklenen sürüm görüntünün kullanılabilir en son sürümü olmayabilir.
SDK sürüm 1.43 için çıkarım sunucusu paket sürümünü varsayılan olarak yükler openmpi4.1.0-ubuntu20.04:20220616
, ancak bu paket sürümü SDK 1.43 ile uyumlu değildir. Dağıtımınız için en son SDK'yi kullandığınızdan emin olun.
Görüntüyü güncelleştiremiyorsanız, azureml-defaults==1.43
ya da azureml-inference-server-http~=0.4.13
girdilerini ortam dosyanıza sabitleyerek geçici olarak bu sorundan kaçınabilirsiniz. Bu girdiler, çıkarım sunucusunu flask 1.0.x
ile eski sürümü yüklemeye yönlendirir.
Çıkarım sunucusu başlatma sırasında ImportError veya ModuleNotFoundError
Çıkarım sunucusu başlatılırken, belirli modüllerde ImportError
veya ModuleNotFoundError
ile örneğin opencensus
, jinja2
, markupsafe
ya da click
karşılaşabilirsiniz. Aşağıdaki örnekte hata iletisi gösterilmektedir:
ImportError: cannot import name 'Markup' from 'jinja2'
Flask bağımlılığını uyumlu bir sürüme sabitlemeyen çıkarım sunucusunun 0.4.10 veya önceki sürümlerini kullandığınızda içeri aktarma ve modül hataları oluşur. Sorunu önlemek için çıkarım sunucusunun daha sonraki bir sürümünü yükleyin.
Diğer yaygın sorunlar
Diğer yaygın çevrimiçi uç nokta sorunları conda yükleme ve otomatik ölçeklendirme ile ilgilidir.
Conda yükleme sorunları
MLflow dağıtımıyla ilgili sorunlar genellikle conda.yml dosyasında belirtilen kullanıcı ortamının yüklenmesiyle ilgili sorunlardan kaynakılır.
Conda yükleme sorunlarının hatalarını ayıklamak için aşağıdaki adımları deneyin:
- Conda yükleme günlüklerini denetleyin. Kapsayıcı kilitlendiyse veya başlatılması çok uzun sürdüyse conda ortam güncelleştirmesi büyük olasılıkla doğru çözümlenememiştir.
- mlflow conda dosyasını komutuyla
conda env create -n userenv -f <CONDA_ENV_FILENAME>
yerel olarak yükleyin. - Yerel olarak hatalar varsa, yeniden dağıtmadan önce conda ortamını çözmeyi ve işlevsel bir ortam oluşturmayı deneyin.
- Eğer konteyner, yerel olarak çözümlendiği halde kilitleniyorsa, dağıtım için kullanılan SKU boyutu çok küçük olabilir.
- Conda paketi yüklemesi çalışma zamanında gerçekleşir, bu nedenle SKU boyutu conda.yml ortam dosyasındaki tüm paketleri barındıramayacak kadar küçükse kapsayıcı kilitlenebilir.
- Standard_F4s_v2 VM iyi bir başlangıç SKU boyutudur, ancak conda dosyasının belirttiği bağımlılıklara bağlı olarak daha büyük VM'lere ihtiyacınız olabilir.
- Kubernetes çevrimiçi uç noktaları için Kubernetes kümesi en az dört vCPU çekirdeğine ve 8 GB belleğe sahip olmalıdır.
Otomatik ölçeklendirme sorunları
Otomatik ölçeklendirmeyle ilgili sorun yaşıyorsanız Azure İzleyici otomatik ölçeklendirme sorunlarını giderme sayfasına bakın.
Kubernetes çevrimiçi uç noktaları için Azure Machine Learning çıkarım yönlendiricisi, Kubernetes kümesindeki tüm model dağıtımları için otomatik ölçeklendirmeyi işleyen bir ön uç bileşenidir. Daha fazla bilgi için Autoscale Kubernetes çıkarım yönlendirmesi bölümüne bakın.