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.
Azure Machine Learning çıkarımı HTTP sunucusu, puanlama işlevinizi bir HTTP uç noktası olarak kullanıma sunan bir Python paketidir. Flask sunucu kodunu ve bağımlılıklarını tek bir pakete sarmalar. Çıkarım sunucusu, Azure Machine Learning'de bir model dağıtırken kullanılan çıkarım için önceden oluşturulmuş Docker görüntülerine eklenir. Paketi tek başına kullandığınızda, modeli üretim için yerel olarak dağıtabilirsiniz. Ayrıca puanlama (giriş) betiğinizi yerel bir geliştirme ortamında kolayca doğrulayabilirsiniz. Eğer puanlama betiğinde bir sorun varsa, çıkarım sunucusu bir hata mesajı ve hatanın konumunu bildirir.
Sürekli tümleştirme ve dağıtım işlem hattında doğrulama geçitleri oluşturmak için çıkarım sunucusunu da kullanabilirsiniz. Örneğin, çıkarım sunucusunu aday betiğiyle 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. Bu makalede, çıkarım sunucusunun çevrimiçi uç noktalarla nasıl kullanılacağını göreceksiniz.
Önkoşullar
- Python 3.10 veya üzeri
- Anakonda
Çıkarım 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ı erken saatlerde 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.
Aşağıdaki tabloda, her seçeneğin çeşitli hata ayıklama senaryoları için sunduğu desteğe genel bir bakış sağlanır:
| Senaryo | Çıkarım sunucusu | Yerel uç nokta |
|---|---|---|
| Docker görüntüsü yeniden derlemesi olmadan yerel Python ortamını güncelleştirme | Evet | Hayır |
| Puanlama betiğini güncelleştirme | Evet | Evet |
| 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 | Evet | Evet |
Bu makalede çıkarım sunucusunun nasıl kullanılacağı açıklanmaktadır.
Çıkarım sunucusunu yerel olarak çalıştırdığınızda, dağıtım konteyneri yapılandırmalarıyla ilgilenmeden puanlama betiğinizi hata ayıklamaya odaklayabilirsiniz.
Puanlama betiğinizde yerel olarak hata ayıklama
Puanlama betiğinizde yerel olarak hata ayıklamak için çıkarım sunucusu davranışını test etmek için çeşitli seçenekleriniz vardır:
- Sahte puanlama betiği kullanın.
- azureml-inference-server-http paketiyle hata ayıklamak için VS Code kullanın.
- Örnek deposundan gerçek bir puanlama betiği, model dosyası ve ortam dosyası çalıştırın.
Aşağıdaki bölümlerde her seçenek hakkında bilgi sağlanır.
Çıkarım sunucusunun davranışını test etmek için örnek puanlama betiği kullanma
Dosyalarınızı tutmak için adlı
server_quickstartbir dizin oluşturun:mkdir server_quickstart cd server_quickstartPaket çakışmalarını önlemek için gibi
myenvbir sanal ortam oluşturun ve etkinleştirin:python -m venv myenvNot
Linux'ta komutunu çalıştırarak
source myenv/bin/activatesanal ortamı etkinleştirin.Çıkarım sunucusunu test ettikten sonra Komutunu çalıştırarak
deactivatePython sanal ortamını devre dışı bırakın.azureml-inference-server-httppaketini Python Paket Dizini (PyPI) akışından kurun.python -m pip install azureml-inference-server-httpGiriş betiğinizi oluşturun. Aşağıdaki örnek, temel bir giriş betiği oluşturur ve adlı
score.pybir dosyaya kaydeder:echo -e 'import time\ndef init(): \n\ttime.sleep(1) \n\ndef run(input_data): \n\treturn {"message":"Hello, World!"}' > score.pyazmlinfsrvkomutunu kullanarak çıkarım sunucusunu başlatın vescore.pydosyasını giriş betiği olarak ayarlayın.azmlinfsrv --entry_script score.pyNot
Çıkarım sunucusu üzerinde
0.0.0.0barındırılır, yani barındırma makinesinin tüm IP adreslerini dinler.Çıkarım sunucusuna
curlpuanlama isteği göndermek için yardımcı programını kullanın:curl -p 127.0.0.1:5001/scoreÇıkarım sunucusu aşağıdaki yanıtı gönderir:
{"message": "Hello, World!"}Testi bitirdiğinizde çıkarım sunucusunu durdurmak için Ctrl+C'yi seçin.
Puanlama betiği dosyasını değiştirebilirsiniz score.py . Ardından çıkarım sunucusunu yeniden çalıştırmak için komutunu kullanarak azmlinfsrv --entry_script score.py değişikliklerinizi test edebilirsiniz.
VS Code ile tümleştirme
VS Code'da azureml-inference-server-http paketiyle hata ayıklamak için Python uzantısını kullanabilirsiniz. VS Code hata ayıklama için iki mod sunar: başlatma ve ekleme.
İki moddan birini kullanmadan önce aşağıdaki komutu çalıştırarak paketi yükleyin azureml-inference-server-http :
python -m pip install azureml-inference-server-http
Not
Paket çakışmalarını önlemek için çıkarım sunucusunu bir sanal ortama yükleyin. Sanal ortam oluşturmak için yerleşik python -m venv komutunu kullanabilirsiniz.
Başlatma modu
Başlatma modu için VS Code yapılandırma dosyasını ayarlayın ve VS Code launch.json içinde çıkarım sunucusunu başlatın:
VS Code'ı başlatın ve betiği içeren
score.pyklasörü açın.VS Code'daki bu çalışma alanı için dosyaya aşağıdaki yapılandırmayı
launch.jsonekleyin:{ "version": "0.2.0", "configurations": [ { "name": "Debug score.py", "type": "debugpy", "request": "launch", "module": "azureml_inference_server_http.amlserver", "args": [ "--entry_script", "score.py" ] } ] }VS Code'da Hata Ayıklamayı Çalıştır'ı> seçerek veya F5'i seçerekhata ayıklama oturumunu başlatın.
Bağlantı modu
Ekleme modu için, çıkarım sunucusu işlemine eklemek için Python uzantısıyla VS Code kullanın:
Not
Linux için, önce gdb paketini sudo apt-get install -y gdb komutunu çalıştırarak yükleyin.
VS Code'ı başlatın ve betiği içeren
score.pyklasörü açın.VS Code'daki bu çalışma alanı için dosyaya aşağıdaki yapılandırmayı
launch.jsonekleyin:{ "version": "0.2.0", "configurations": [ { "name": "Python: Attach using Process ID", "type": "debugpy", "request": "attach", "processId": "${command:pickProcess}", "justMyCode": true } ] }Komut penceresinde komutunu çalıştırarak
azmlinfsrv --entry_script score.pyçıkarım sunucusunu başlatın.VS Code'da hata ayıklama oturumunu başlatmak için aşağıdaki adımları izleyin:
Çalıştır>Hata Ayıklamayı Başlat'ı seçin veya F5'i seçin.
Komut penceresinde,
azmlinfsrvsürecinin işlem kimliğini bulmak için çıkarım sunucusundaki günlükleri arayın.azmlinfsrvişleminin kimliğini bulduğunuzdan emin olun,gunicornişleminin değil.VS Code hata ayıklayıcısına işlemin kimliğini
azmlinfsrvgirin.VS Code işlem seçicisini görmüyorsanız, çalışma alanının dosyasının
processIdalanınalaunch.jsonişlem kimliğini el ile girin.
Başlatma ve ekleme modları için kesme noktaları ayarlayabilir ve betiğin hatalarını adım adım ayıklayabilirsiniz.
Uçtan uca örnek kullanma
Aşağıdaki yordam, çıkarım sunucusunu Azure Machine Learning örnek deposundaki örnek dosyalarla yerel olarak çalıştırır. Örnek dosyalar bir puanlama betiği, bir model dosyası ve bir ortam dosyası içerir. 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 ve ilgili örnek dosyaları içeren klasöre gidin:
git clone --depth 1 https://github.com/Azure/azureml-examples cd azureml-examples/cli/endpoints/online/model-1/Sanal ortam oluşturmak ve etkinleştirmek için conda kullanın:
Bu örnekte paket
azureml-inference-server-httpotomatik olarak yüklenir. Paket, conda.yaml dosyasında listelenen paketin bağımlı kitaplığıazureml-defaultsolarak eklenir.Önemli
Paket
azureml-defaults, kullanım dışı bırakılan Azure Machine Learning SDK v1'in bir parçasıdır. Yeni projeler içinazureml-inference-server-httppaketiniazureml-defaultskullanmak yerine doğrudan yükleyin.# Create the environment from the YAML file. conda env create --name model-env -f ./environment/conda.yaml # Activate the new environment. conda activate model-envPuanlama betiğini 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 klasörünün yolunu belirterek çıkarım sunucusunu çalıştırın.
Dağıtım sırasında değişken,
AZUREML_MODEL_DIRmodel klasörünün yolunu depolamak için tanımlanır. Bu değeri parametresindemodel_dirbelirtirsiniz. Puanlama betiği çalıştığında,AZUREML_MODEL_DIRdeğişkeninden değeri alır.Bu durumda, geçerli dizin olan
./'ımodel_dirdeğeri olarak kullanın, çünkü puanlama betiği alt dizinimodel/sklearn_regression_model.pklolarak belirtmektedir.azmlinfsrv --entry_script ./onlinescoring/score.py --model_dir ./Çıkarım sunucusu 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.
Aşağıdaki adımları uygulayarak puanlama betiğini örnek verilerle test edin:
Başka bir komut penceresi açın ve
azmlinfsrvkomutunu çalıştırdığınız çalışma dizinine gidin.Çıkarım sunucusuna örnek bir istek göndermek ve bir puanlama sonucu almak için aşağıdaki
curlyardımcı programı kullanın:curl --request POST "127.0.0.1:5001/score" --header "Content-Type:application/json" --data @sample-request.jsonPuanlama betiğinizde herhangi bir sorun olmadığında, betik puanlama sonucunu döndürür. Sorun oluşursa, puanlama betiğini güncelleştirebilir ve sonra güncelleştirilmiş betiği test etmek için çıkarım sunucusunu yeniden başlatabilirsiniz.
Çıkarım sunucusu yollarını gözden geçirme
Çıkarım sunucusu varsayılan olarak aşağıdaki yollarda 5001 numaralı bağlantı noktasını dinler:
| Veri Akışı Adı | Rota |
|---|---|
| Canlılık sondası | 127.0.0.1:5001/ |
| Puan | 127.0.0.1:5001/score |
| OpenAPI (swagger) | 127.0.0.1:5001/swagger.json |
Çıkarım sunucusu parametrelerini gözden geçirme
Çıkarım sunucusu aşağıdaki parametreleri kabul eder:
| Parametre | Zorunlu | Varsayılan | Açıklama |
|---|---|---|---|
entry_script |
Doğru | Yok | Puanlama betiğinin göreli veya mutlak yolunu tanımlar |
model_dir |
Yanlış | Yok | Çıkarım için kullanılan modeli barındıran dizinin göreli veya mutlak yolunu tanımlar |
port |
Yanlış | 5001 | Çıkarım sunucusunun sunum bağlantı noktasını belirtir |
worker_count |
Yanlış | 1 | Eşzamanlı istekleri işlemek için çalışan iş parçacığı sayısını sağlar |
appinsights_instrumentation_key |
Yanlış | Yok | Uygulama Kayıtlarının yayımlandığı Application Insights örneği için araç anahtarını sağlar. |
access_control_allow_origins |
Yanlış | Yok | Belirtilen çıkış noktaları için çıkış noktaları arası kaynak paylaşımını (CORS) açar; burada birden çok çıkış noktası virgülle (,) ayrılır, örneğin microsoft.com, bing.com |
Çıkarım sunucusu istek işleme sürecini keşfetmek
Aşağıdaki adımlar çıkarım sunucusunun azmlinfsrvgelen istekleri nasıl işlediğini gösterir:
Python CLI sarmalayıcısı çıkarım sunucusunun ağ yığınının etrafında yer alır ve çıkarım sunucusunu başlatmak için kullanılır.
İstemci çıkarım sunucusuna bir istek gönderir.
Çıkarım sunucusu, isteği Aşağıdaki Flask çalışan uygulamalarından birine 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.
Giriş 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.
Çıkarım sunucusu günlüklerini keşfetme
Çıkarım sunucusu testi için günlük verilerini almanın iki yolu vardır:
-
azureml-inference-server-httpPaketi 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 formatı 0.8.0 sürümünden bu yana değişti. Günlüğünüz beklenenden farklı bir stil kullanıyorsa, azureml-inference-server-http paketini en son sürüme güncelleyin.
Başlangıç günlüklerini görüntüleme
Çıkarım sunucusu başlatıldığında günlükler aşağıdaki ilk sunucu ayarlarını gösterir:
Azure ML Inferencing HTTP server <version>
Server Settings
---------------
Entry Script Name: <entry-script>
Model Directory: <model-directory>
Config File: <configuration-file>
Worker Count: <worker-count>
Worker Timeout (seconds): None
Server Port: <port>
Health Port: <port>
Application Insights Enabled: false
Application Insights Key: <Application-Insights-instrumentation-key>
Inferencing HTTP server version: azmlinfsrv/<version>
CORS for the specified origins: <access-control-allow-origins>
Create dedicated endpoint for health: <health-check-endpoint>
Server Routes
---------------
Liveness Probe: GET 127.0.0.1:<port>/
Score: POST 127.0.0.1:<port>/score
<logs>
Örneğin, uçtan uca örnek adımları izleyerek çıkarım sunucusunu çalıştırdığınızda, günlükler aşağıdaki bilgileri içerir:
Azure ML Inferencing HTTP server v1.2.2
Server Settings
---------------
Entry Script Name: /home/user-name/azureml-examples/cli/endpoints/online/model-1/onlinescoring/score.py
Model Directory: ./
Config File: None
Worker Count: 1
Worker Timeout (seconds): None
Server Port: 5001
Health Port: 5001
Application Insights Enabled: false
Application Insights Key: None
Inferencing HTTP server version: azmlinfsrv/1.2.2
CORS for the specified origins: None
Create dedicated endpoint for health: 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,976 I [32756] azmlinfsrv - Scoring timeout is set to 3600000
2022-12-24 07:37:55,976 I [32756] azmlinfsrv - Worker with pid 32756 ready for serving traffic
Günlük veri formatını anlama
Başlatıcı betiği dışındaki çıkarım sunucusundaki tüm günlükler verileri aşağıdaki biçimde sunar:
<UTC-time> <level> [<process-ID>] <logger-name> - <message>
Her girdi aşağıdaki bileşenlerden oluşur:
-
<UTC-time>: Girişin günlüğe girilmiş olduğu saat -
<level>: Giriş için günlük düzeyinin ilk karakteri ( HATAEiçin,IBİlGİ için vb.) -
<process-ID>: Girişle ilişkili işlemin kimliği -
<logger-name>: Günlük girişiyle ilişkili kaynağın adı -
<message>: Günlük iletisinin içeriği
Python'da altı düzeyde loglama vardır. Her düzeyin önem derecesine göre atanmış bir sayısal değeri vardır:
| Günlük düzeyi | Sayısal değer |
|---|---|
| KRİTİK | 50 |
| HATA | 40 |
| UYARI | 30 |
| BİLGİ | 20 |
| Hata Ayıklama | 10 |
| NOTSET | 0 |
Çıkarım sunucusu sorunlarını giderme
Aşağıdaki bölümlerde çıkarım sunucusu için temel sorun giderme ipuçları sağlanır. Çevrimiçi uç noktaların sorunlarını gidermek için bkz . Çevrimiçi uç nokta dağıtımı ve puanlama sorunlarını giderme.
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-httpsü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
pipgerekebilir.Ortamınızda Flask veya bağımlılıkları belirttiyseniz, bu öğeleri kaldırın.
- Bağımlı paketler arasında
flask,jinja2,itsdangerous,werkzeug,markupsafeve 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 | Önceki ve 20220516 tarihli veya daha eski çıkarım görüntülerine önceden yüklenmiştir. 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:
flaskopencensus-ext-azureinference-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-httpveyaazureml-defaultspaketinin 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 2022veya 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, notasyonun
Materialization Buildsonrasında 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 belirlenmiş değiştirmeler bulabilirsiniz.
Çıkarım sunucusunu çevrimiçi uç noktayla kullanıyorsanız günlükleri Azure Machine Learning Stüdyosu'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, ortam dosyanızdaki azureml-defaults==1.43 veya azureml-inference-server-http~=0.4.13 girdilerini sabitleyerek geçici olarak sorunu önleyebilirsiniz. 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.