Azure Machine Learning çıkarımı HTTP sunucusu ile puanlama betiklerinde hata ayıklama
Azure Machine Learning çıkarımı HTTP sunucusu, puanlama işlevinizi bir HTTP uç noktası olarak kullanıma sunan ve Flask sunucu kodunu ve bağımlılıklarını tek bir pakete sarmalayan bir Python paketidir. Sunucu, Azure Machine Learning ile model dağıtırken kullanılan çıkarım için önceden oluşturulmuş Docker görüntülerine dahildir. Yalnızca paketi kullanarak modeli üretim için yerel olarak dağıtabilir ve puanlama (giriş) betiğinizi yerel bir geliştirme ortamında kolayca doğrulayabilirsiniz. Puanlama betiğinde bir sorun varsa, sunucu bir hata ve hatanın konumu döndürür.
Sunucu, sürekli tümleştirme ve dağıtım işlem hattında doğrulama geçitleri oluşturmak için de kullanılabilir. Örneğin, adayı betik ile sunucuyu başlatabilir ve test paketini yerel uç noktada çalıştırabilirsiniz.
Bu makale, çıkarım sunucusunu kullanarak yerel olarak hata ayıklamak isteyen geliştiricileri destekler ve çıkarım sunucusunun Windows'da çevrimiçi uç noktalarla nasıl kullanılacağını açıklar.
Önkoşullar
Yerel hata ayıklama için Azure Machine Learning çıkarım HTTP sunucusunu kullanmak için yapılandırmanızın aşağıdaki bileşenleri içermesi gerekir:
- Python 3.8 veya üzeri
- Anaconda
Azure Machine Learning çıkarımı HTTP sunucusu Windows ve Linux tabanlı işletim sistemlerinde çalışır.
Çevrimiçi uç noktalar için yerel hata ayıklama seçeneklerini keşfetme
Buluta dağıtmadan önce uç noktaların hatalarını yerel olarak ayıklayarak, kodunuzda ve yapılandırmanızda hataları daha önce yakalayabilirsiniz. Uç noktalarda yerel olarak hata ayıklamak için aşağıdakiler dahil olmak üzere çeşitli seçenekleriniz vardır:
- Azure Machine Learning çıkarımı HTTP sunucusu
- Yerel uç nokta
Bu makalede, Windows üzerinde Azure Machine Learning çıkarım HTTP sunucusuyla nasıl çalışıldığı açıklanır.
Aşağıdaki tabloda en iyi seçeneği belirlemenize yardımcı olacak senaryolara genel bir bakış sağlanmaktadır:
Senaryo | Çıkarım HTTP sunucusu | Yerel uç nokta |
---|---|---|
Docker görüntüsü yeniden derlemesi olmadan yerel Python ortamını güncelleştirme | Yes | Hayır |
Puanlama betiğini güncelleştirme | Yes | Yes |
Dağıtım yapılandırmalarını güncelleştirme (dağıtım, ortam, kod, model) | Hayır | Evet |
Microsoft Visual Studio Code (VS Code) Hata Ayıklayıcısını Tümleştirme | Yes | Yes |
Çıkarım HTTP sunucusunu yerel olarak çalıştırdığınızda, dağıtım kapsayıcısı yapılandırmalarına gerek kalmadan puanlama betiğinizde hata ayıklamaya odaklanabilirsiniz.
azureml-inference-server-http paketini yükleme
Paketi yüklemek azureml-inference-server-http
için aşağıdaki komutu çalıştırın:
python -m pip install azureml-inference-server-http
Not
Paket çakışmalarını önlemek için çıkarım HTTP sunucusunu bir sanal ortama yükleyin.
komutunu kullanarak pip install virtualenv
yapılandırmanız için sanal ortamları etkinleştirebilirsiniz.
Puanlama betiğinizde yerel olarak hata ayıklama
Puanlama betiğinizde yerel olarak hata ayıklamak için sunucu davranışını test etmek için çeşitli seçenekleriniz vardır:
- Sahte puanlama betiğini deneyin.
- Azureml-inference-server-http paketiyle hata ayıklamak için Visual Studio Code kullanın.
- Örnek depomuzdan gerçek bir puanlama betiği, model dosyası ve ortam dosyası çalıştırın.
Sahte puanlama betiğiyle sunucu davranışını test etme
Dosyalarınızı tutmak için server_quickstart adlı bir dizin oluşturun:
mkdir server_quickstart cd server_quickstart
Paket çakışmalarını önlemek için myenv gibi bir sanal ortam oluşturun ve etkinleştirin:
python -m virtualenv myenv
Not
Linux'ta komutunu çalıştırarak
source myenv/bin/activate
sanal ortamı etkinleştirin.Sunucuyu test ettikten sonra Komutunu çalıştırarak
deactivate
Python sanal ortamını devre dışı bırakabilirsiniz.azureml-inference-server-http
Paketi pypi akışından yükleyin:python -m pip install azureml-inference-server-http
Giriş betiğinizi oluşturun. Aşağıdaki örnek, temel bir giriş betiği oluşturur ve score.py adlı bir dosyaya kaydeder:
echo -e "import time def init(): \n\t time.sleep(1) \n\n def run(input_data): \n\t return {"message":"Hello, World!"}" > score.py
komutuyla
azmlinfsrv
sunucuyu başlatın ve score.py dosyasını giriş betiği olarak ayarlayın:azmlinfsrv --entry_script score.py
Not
Sunucu 0.0.0.0 üzerinde barındırılır, yani barındırma makinesinin tüm IP adreslerini dinler.
Yardımcı programını kullanarak
curl
sunucuya puanlama isteği gönderin:curl -p 127.0.0.1:5001/score
Sunucu aşağıdaki yanıtı gönderir:
{"message": "Hello, World!"}
Test ettikten sonra sunucuyu sonlandırmak için Ctrl + C tuşlarına basın.
Artık puanlama betiği dosyasını (score.py) değiştirebilir ve komutuyla azmlinfsrv --entry_script score.py
sunucuyu yeniden çalıştırarak değişikliklerinizi test edebilirsiniz.
Visual Studio Code ile tümleştirme
azureml-inference-server-http paketiyle hata ayıklama için VS Code ve Python Uzantısı'nı kullanmak için Başlatma ve Ekleme modlarını kullanabilirsiniz.
Başlatma modu için VS Code'da launch.json dosyasını ayarlayın ve VS Code içinde Azure Machine Learning çıkarım HTTP sunucusunu başlatın:
VS Code'ı başlatın ve betiği (score.py) içeren klasörü açın.
VS Code'da bu çalışma alanının launch.json dosyasına aşağıdaki yapılandırmayı ekleyin:
launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Debug score.py", "type": "python", "request": "launch", "module": "azureml_inference_server_http.amlserver", "args": [ "--entry_script", "score.py" ] } ] }
Vs Code'da Hata Ayıklamayı Çalıştır Hata Ayıklamayı Çalıştır'ı>seçerek hata ayıklama oturumunu başlatın veya F5 klavye kısayolunu kullanın.
Ekleme modu için bir komut penceresinde Azure Machine Learning çıkarım HTTP sunucusunu başlatın ve işleme eklemek için Python Uzantısı ile VS Code kullanın:
Not
Linux için önce komutunu çalıştırarak
sudo apt-get install -y gdb
paketi yükleyingdb
.VS Code'da bu çalışma alanının launch.json dosyasına aşağıdaki yapılandırmayı ekleyin:
launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Python: Attach using Process Id", "type": "python", "request": "attach", "processId": "${command:pickProcess}", "justMyCode": true } ] }
Komut penceresinde, komutunu kullanarak
azmlinfsrv --entry_script score.py
çıkarım HTTP sunucusunu başlatın.VS Code'da hata ayıklama oturumunu başlatın:
Hata Ayıklamayı Çalıştır'ı>seçin veya F5 klavye kısayolunu kullanın.
Komut penceresinde, çıkarım sunucusundan günlükleri görüntüleyin ve komutun
azmlinfsrv
işlem kimliğini (şu değilgunicorn
) bulun:VS Code Hata Ayıklayıcısı'na komutun işlem kimliğini
azmlinfsrv
girin.VS Code işlem seçicisini görmüyorsanız, bu çalışma alanının launch.json dosyasının
processId
alanına işlem kimliğini el ile girebilirsiniz.
Her iki mod için de kesme noktaları ayarlayabilir ve betiğin hatalarını adım adım ayıklayabilirsiniz.
Uçtan uca örnek kullanma
Aşağıdaki yordam, Azure Machine Learning örnek deposundan örnek dosyalarla (puanlama betiği, model dosyası ve ortam) sunucuyu yerel olarak çalıştırır. Bu örnek dosyaların nasıl kullanılacağına ilişkin daha fazla örnek için bkz . Çevrimiçi uç nokta kullanarak makine öğrenmesi modelini dağıtma ve puanlandırma.
Örnek depoyu kopyalayın:
git clone --depth 1 https://github.com/Azure/azureml-examples cd azureml-examples/cli/endpoints/online/model-1/
Conda ile sanal ortam oluşturma ve etkinleştirme:
Bu örnekte paket
azureml-inference-server-http
otomatik olarak yüklenir. Paket, conda.yml dosyasına paketinazureml-defaults
bağımlı kitaplığı olarak eklenir:# Create the environment from the YAML file conda env create --name model-env -f ./environment/conda.yml # Activate the new environment conda activate model-env
Puanlama betiğinizi gözden geçirin:
çevrimiçi puanlama/score.py
import os import logging import json import numpy import joblib def init(): """ This function is called when the container is initialized/started, typically after create/update of the deployment. You can write the logic here to perform init operations like caching the model in memory """ global model # AZUREML_MODEL_DIR is an environment variable created during deployment. # It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION) # Please provide your model's folder name if there is one model_path = os.path.join( os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl" ) # deserialize the model file back into a sklearn model model = joblib.load(model_path) logging.info("Init complete") def run(raw_data): """ This function is called for every invocation of the endpoint to perform the actual scoring/prediction. In the example we extract the data from the json input and call the scikit-learn model's predict() method and return the result back """ logging.info("model 1: request received") data = json.loads(raw_data)["data"] data = numpy.array(data) result = model.predict(data) logging.info("Request processed") return result.tolist()
Puanlama betiğini ve model dosyasını belirterek çıkarım HTTP sunucusunu çalıştırın:
parametresinde
model_dir
belirtilen model dizini değişkeni kullanılarakAZUREML_MODEL_DIR
tanımlanır ve puanlama betiğinde alınır.Bu durumda, alt dizin puanlama betiğinde model/sklearn_regression_model.pkl olarak belirtildiğinden geçerli dizini belirtirsiniz.
azmlinfsrv --entry_script ./onlinescoring/score.py --model_dir ./
Sunucu başlatıldığında ve puanlama betiğini başarıyla çağırdığında örnek başlangıç günlüğü açılır. Aksi takdirde günlükte hata iletileri gösterilir.
Puanlama betiğini örnek verilerle test edin:
Başka bir komut penceresi açın ve komutunu çalıştırdığınız aynı çalışma dizinine geçin.
Sunucuya
curl
örnek bir istek göndermek ve bir puanlama sonucu almak için yardımcı programını kullanın:curl --request POST "127.0.0.1:5001/score" --header "Content-Type:application/json" --data @sample-request.json
Puanlama betiğinizde herhangi bir sorun olmadığında, betik puanlama sonucunu döndürür. Sorun oluşursa, puanlama betiğini güncelleştirmeyi deneyebilir ve güncelleştirilmiş betiği test etmek için sunucuyu yeniden başlatabilirsiniz.
Sunucu yollarını gözden geçirme
Çıkarım HTTP sunucusu, aşağıdaki yollarda varsayılan olarak 5001 numaralı bağlantı noktasında dinler:
Veri Akışı Adı | Rota |
---|---|
Canlılık Yoklaması | 127.0.0.1:5001/ |
Puan | 127.0.0.1:5001/score |
OpenAPI (swagger) | 127.0.0.1:5001/swagger.json |
Sunucu parametrelerini gözden geçirme
ÇıKARıM HTTP sunucusu aşağıdaki parametreleri kabul eder:
Parametre | Zorunlu | Varsayılan | Veri Akışı Açıklaması |
---|---|---|---|
entry_script |
True | Yok | Puanlama betiğinin göreli veya mutlak yolunu tanımlar. |
model_dir |
False | Yok | Çıkarım için kullanılan modeli barındıran dizinin göreli veya mutlak yolunu tanımlar. |
port |
False | 5001 | Sunucunun sunum bağlantı noktasını belirtir. |
worker_count |
False | 1 | Eşzamanlı istekleri işlemek için çalışan iş parçacığı sayısını sağlar. |
appinsights_instrumentation_key |
False | Yok | Günlüklerin yayımlandığı uygulama içgörülerine izleme anahtarını sağlar. |
access_control_allow_origins |
False | Yok | Belirtilen kaynaklarda CORS'yi etkinleştirir; burada birden çok çıkış noktası virgülle (,) ayrılır, örneğin microsoft.com, bing.com . |
Sunucu isteği işlemeyi keşfetme
Aşağıdaki adımlar, Azure Machine Learning çıkarım HTTP sunucusunun (azmlinfsrv
) gelen istekleri nasıl işlediğini gösterir:
Python CLI sarmalayıcı, sunucunun ağ yığınının etrafında yer alır ve sunucuyu başlatmak için kullanılır.
İstemci sunucuya bir istek gönderir.
Sunucu, isteği Flask çalışan uygulamasına gönderen Web Sunucusu Ağ Geçidi Arabirimi (WSGI) sunucusu aracılığıyla gönderir:
Flask çalışan uygulaması, giriş betiğini ve tüm bağımlılıkları yüklemeyi de içeren isteği işler.
Girdi betiğiniz isteği alır. Giriş betiği, yüklenen modele bir çıkarım çağrısı yapar ve bir yanıt döndürür:
Sunucu günlüklerini keşfetme
Çıkarım HTTP sunucusu testi için günlük verilerini almanın iki yolu vardır:
azureml-inference-server-http
Paketi yerel olarak çalıştırın ve günlük çıkışını görüntüleyin.- Çevrimiçi uç noktaları kullanın ve kapsayıcı günlüklerini görüntüleyin. Çıkarım sunucusunun günlüğü, Azure Machine Learning Çıkarım HTTP sunucusu <sürümü> olarak adlandırılır.
Not
Günlük biçimi 0.8.0 sürümünden bu yana değişti. Günlüğünüz beklenenden farklı bir stil kullanıyorsa paketi en son sürüme güncelleştirin azureml-inference-server-http
.
Başlangıç günlüklerini görüntüleme
Sunucu başlatıldığında, günlükler ilk sunucu ayarlarını aşağıdaki gibi gösterir:
Azure Machine Learning Inferencing HTTP server <version>
Server Settings
---------------
Entry Script Name: <entry_script>
Model Directory: <model_dir>
Worker Count: <worker_count>
Worker Timeout (seconds): None
Server Port: <port>
Application Insights Enabled: false
Application Insights Key: <appinsights_instrumentation_key>
Inferencing HTTP server version: azmlinfsrv/<version>
CORS for the specified origins: <access_control_allow_origins>
Server Routes
---------------
Liveness Probe: GET 127.0.0.1:<port>/
Score: POST 127.0.0.1:<port>/score
<logs>
Örneğin, uçtan uca örneği izleyerek sunucuyu başlattığınızda günlük aşağıdaki gibi görüntülenir:
Azure Machine Learning Inferencing HTTP server v0.8.0
Server Settings
---------------
Entry Script Name: /home/user-name/azureml-examples/cli/endpoints/online/model-1/onlinescoring/score.py
Model Directory: ./
Worker Count: 1
Worker Timeout (seconds): None
Server Port: 5001
Application Insights Enabled: false
Application Insights Key: None
Inferencing HTTP server version: azmlinfsrv/0.8.0
CORS for the specified origins: None
Server Routes
---------------
Liveness Probe: GET 127.0.0.1:5001/
Score: POST 127.0.0.1:5001/score
2022-12-24 07:37:53,318 I [32726] gunicorn.error - Starting gunicorn 20.1.0
2022-12-24 07:37:53,319 I [32726] gunicorn.error - Listening at: http://0.0.0.0:5001 (32726)
2022-12-24 07:37:53,319 I [32726] gunicorn.error - Using worker: sync
2022-12-24 07:37:53,322 I [32756] gunicorn.error - Booting worker with pid: 32756
Initializing logger
2022-12-24 07:37:53,779 I [32756] azmlinfsrv - Starting up app insights client
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - Found user script at /home/user-name/azureml-examples/cli/endpoints/online/model-1/onlinescoring/score.py
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - run() is not decorated. Server will invoke it with the input in JSON string.
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - Invoking user's init function
2022-12-24 07:37:55,974 I [32756] azmlinfsrv.user_script - Users's init has completed successfully
2022-12-24 07:37:55,976 I [32756] azmlinfsrv.swagger - Swaggers are prepared for the following versions: [2, 3, 3.1].
2022-12-24 07:37:55,977 I [32756] azmlinfsrv - AML_FLASK_ONE_COMPATIBILITY is set, but patching is not necessary.
Günlük verileri biçimini anlama
Başlatıcı betiği dışında çıkarım HTTP sunucusundaki tüm günlükler verileri aşağıdaki biçimde sunar:
<UTC Time> | <level> [<pid>] <logger name> - <message>
Girdi aşağıdaki bileşenlerden oluşur:
<UTC Time>
: Girdinin günlüğe girildiği zaman.<pid>
: Girişle ilişkili işlemin kimliği.<level>
: Giriş için günlük düzeyinin ilk karakteri( HATAE
,I
BİlGİ vb.) için.<logger name>
: Günlük girişiyle ilişkili kaynağın adı.<message>
: Günlük iletisinin içeriği.
Python'da önem derecesine göre sayısal değerler atanmış altı günlük düzeyi vardır:
Günlük düzeyi | Sayısal değer |
---|---|
KRİTİK | 50 |
HATA | 40 |
UYARI | 30 |
BİLGİ | 20 |
HATA AYIKLAMA | 10 |
NOTSET | 0 |
Sunucu sorunlarını giderme
Aşağıdaki bölümlerde Azure Machine Learning çıkarımı HTTP sunucusu için temel sorun giderme ipuçları sağlanmaktadır. Çevrimiçi uç noktaların sorunlarını gidermek için bkz . Çevrimiçi uç nokta dağıtımı sorunlarını giderme.
Yüklü paketleri denetleme
Yüklü paketlerle ilgili sorunları gidermek için bu adımları izleyin.
Python ortamınız için yüklü paketler ve sürümler hakkında bilgi toplayın.
Ortam dosyasında belirtilen Python paketi sürümünün başlangıç günlüğünde görüntülenen Azure Machine Learning çıkarım HTTP sunucusu sürümüyle eşleşeceğini
azureml-inference-server-http
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.Flask'i veya ortamınızdaki bağımlılıklarını belirtirseniz, bu öğeleri kaldırın.
- Bağımlı paketler arasında
flask
,jinja2
,itsdangerous
,werkzeug
,markupsafe
ve bulunurclick
. flask
sunucu 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, sunucu paket güncelleştirmelerini kullanıma sunuldukça otomatik olarak alır.
- Bağımlı paketler arasında
Sunucu sürümünü denetleme
Sunucu azureml-inference-server-http
paketi PyPI'da yayımlanır. PyPI sayfasında değişiklik günlüğü ve önceki tüm sürümler listelenir.
Önceki bir paket sürümünü 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 | tarihli 20220601 veya önceki eğitim görüntülerinde paketlenmiş ve azureml-defaults sürümleri .1.34 aracılığıyla paketlenmiştir 1.43 . En son kararlı sürüm 0.4.13'dür. |
0.4.11'den önceki sunucu sürümleri için gibi "can't import name Markup from jinja2" Flask bağımlılık sorunlarıyla karşılaşabilirsiniz. |
Mümkünse en son sürüm olan 0.4.13 veya 0.8.x sürümüne yükseltin. |
0.6.x | Eski ve önceki 20220516 görüntüleri çıkarsama önceden yüklenmiş. 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ünlük biçimi değiştirildi. Python 3.6 desteği sona erdi. | Yok | Yok |
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
Paketi Python ortamınızda belirttiyseniz azureml-defaults
, azureml-inference-server-http
paket bağımlı bir pakettir. Bağımlılık otomatik olarak yüklenir.
İpucu
Python SDK v1 kullanıyorsanız ve paketi Python ortamınızda açıkça belirtmezseniz azureml-defaults
, SDK paketi otomatik olarak ekleyebilir. Ancak paketleyici sürümü SDK sürümüne göre kilitlenir. Örneğin, SDK sürümü ise1.38.0
azureml-defaults==1.38.0
, giriş ortamın pip gereksinimlerine eklenir.
Sunucu başlatma sırasında TypeError
Sunucu başlatma sırasında 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, paket sürümü 0.7.0 ve üzeri ile azureml-defaults
paket sürümü 1.44 ve üzeri sürümlerde azureml-inference-server-http
kullanılabilir.
Flask 2 paketini bir Azure Machine Learning Docker görüntüsünde kullanmıyorsanız veya
azureml-defaults
paketininazureml-inference-server-http
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 Temmuz 2022 veya üzeri olduğunu onaylayın.
Görüntü sürümünü kapsayıcı günlüklerinde bulabilirsiniz. Örneğin:
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, gösterimin
Materialization Build
ardından görünür. Yukarıdaki örnekte, görüntü sürümü veya 8 Temmuz 2022'dir20220708
. 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 AzureML Kapsayıcıları'nda kullanım dışı olup olmadığını denetleyin. Kullanım dışı bırakılan görüntüler için belirlenmiş değiştirmeler bulabilirsiniz.
Sunucuyu çevrimiçi uç noktayla kullanıyorsanız, günlükleri Azure Machine Learning stüdyosu Uç Noktalar sayfasındaki Günlükler'de de bulabilirsiniz.
SDK v1 ile dağıtım yaparsanız ve dağıtım yapılandırmanızda açıkça bir görüntü belirtmezseniz, sunucu 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 sunucu 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, veya girdilerini ortam dosyanıza sabitleyerek azureml-defaults==1.43
azureml-inference-server-http~=0.4.13
geçici olarak sorundan kaçınabilirsiniz. Bu girdiler sunucuyu ile flask 1.0.x
eski sürümü yüklemeye yönlendirir.
Sunucu başlatma sırasında ImportError veya ModuleNotFoundError
Sunucu başlatma sırasında , jinja2
, markupsafe
veya ModuleNotFoundError
gibi opencensus
belirli modüllerde veya click
ile karşılaşabilirsinizImportError
. Aşağıdaki örnekte hata iletisi gösterilmektedir:
ImportError: cannot import name 'Markup' from 'jinja2'
İçeri aktarma ve modül hataları, Flask bağımlılığını uyumlu bir sürüme sabitlemeyen sunucunun 0.4.10 veya önceki sürümlerini kullandığınızda oluşur. Sorunu önlemek için sunucunun daha sonraki bir sürümünü yükleyin.
İlgili içerik
- Azure Machine Learning kullanarak model dağıtma
- Çıkarım için önceden oluşturulmuş docker görüntülerini kullanma