Aracılığıyla paylaş


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:

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

  1. Dosyalarınızı tutmak için server_quickstart adlı bir dizin oluşturun:

    mkdir server_quickstart
    cd server_quickstart
    
  2. 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.

  3. azureml-inference-server-http Paketi pypi akışından yükleyin:

    python -m pip install azureml-inference-server-http
    
  4. 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
    
  5. 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.

  6. 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!"}
    
  7. 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:

    1. VS Code'ı başlatın ve betiği (score.py) içeren klasörü açın.

    2. 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"
                  ]
              }
          ]
        }
      
    3. 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.

    1. 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
              }
          ]
        }
      
    2. Komut penceresinde, komutunu kullanarak azmlinfsrv --entry_script score.py çıkarım HTTP sunucusunu başlatın.

    3. VS Code'da hata ayıklama oturumunu başlatın:

      1. Hata Ayıklamayı Çalıştır'ı>seçin veya F5 klavye kısayolunu kullanın.

      2. Komut penceresinde, çıkarım sunucusundan günlükleri görüntüleyin ve komutun azmlinfsrv işlem kimliğini (şu değil gunicorn) bulun:

        ÇıKARıM HTTP sunucusundan günlükleri ve azmlinfsrv komutunun işlem kimliğinin vurgulandığı bir komut penceresini gösteren ekran görüntüsü.

      3. 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.

  1. Örnek depoyu kopyalayın:

    git clone --depth 1 https://github.com/Azure/azureml-examples
    cd azureml-examples/cli/endpoints/online/model-1/
    
  2. 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 paketin azureml-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
    
  3. 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()
    
  4. 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ılarak AZUREML_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.

  5. 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:

  1. Python CLI sarmalayıcı, sunucunun ağ yığınının etrafında yer alır ve sunucuyu başlatmak için kullanılır.

  2. İstemci sunucuya bir istek gönderir.

  3. Sunucu, isteği Flask çalışan uygulamasına gönderen Web Sunucusu Ağ Geçidi Arabirimi (WSGI) sunucusu aracılığıyla gönderir:

  4. Flask çalışan uygulaması, giriş betiğini ve tüm bağımlılıkları yüklemeyi de içeren isteği işler.

  5. 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:

ÇıKARıM HTTP sunucusunun gelen istekleri nasıl işlediğini gösteren diyagram.

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.

  1. Python ortamınız için yüklü paketler ve sürümler hakkında bilgi toplayın.

  2. 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.

  3. 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, markupsafeve bulunur click.
    • flask sunucu paketinde bağımlılık olarak listelenir. En iyi yaklaşım, çıkarım sunucusunun paketi yüklemesine izin vermektir flask .
    • Çı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.

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.0azureml-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 paketinin azureml-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'dir 20220708 . 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.xeski sürümü yüklemeye yönlendirir.

Sunucu başlatma sırasında ImportError veya ModuleNotFoundError

Sunucu başlatma sırasında , jinja2, markupsafeveya ModuleNotFoundError gibi opencensusbelirli modüllerde veya clickile 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.