Angeben des bereitzustellenden Modells zur Verwendung in einem Onlineendpunkt

GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)

In diesem Artikel erfahren Sie mehr über die verschiedenen Möglichkeiten zum Angeben der Modelle, die Sie für Onlinebereitstellungen verwenden möchten. Wenn Sie ein Modell auf einem Azure Machine Learning-Onlineendpunkt bereitstellen, müssen Sie das Modell auf eine von zwei Arten angeben:

  • Bereitstellen des Pfads zum Speicherort des Modells auf Ihrem lokalen Computer
  • Bereitstellen eines Verweises auf ein Modell mit Versionsangabe, das bereits in Ihrem Arbeitsbereich registriert ist

Wie Sie Ihr Modell für die Bereitstellung eines Onlineendpunkts angeben, hängt vom Speicherort des Modells ab. Nachdem Sie Ihre Bereitstellung erstellt haben, verweist die Umgebungsvariable AZUREML_MODEL_DIR in Azure Machine Learning auf den Speicherort in Azure, an dem Ihr Modell gespeichert ist.

Bereitstellung für lokal gespeicherte Modelle

In diesem Abschnitt wird das folgende Beispiel einer lokalen Ordnerstruktur verwendet, um zu veranschaulichen, wie Sie Modelle zur Verwendung in einer Onlinebereitstellung angeben können:

Screenshot: Lokale Ordnerstruktur mit mehreren Modellen

Bereitstellung für ein einzelnes lokales Modell

Wenn Sie ein einzelnes Modell verwenden möchten, das auf Ihrem lokalen Computer in einer Bereitstellung enthalten ist, geben Sie den Pfad (path) des Modells (model) in Ihrer YAML-Konfigurationsdatei für die Bereitstellung an. Der folgende Code zeigt ein Beispiel für die YAML-Bereitstellungsdatei mit dem lokalen Pfad /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Nachdem Sie Ihre Bereitstellung auf einem Onlineendpunkt erstellt haben, verweist die Umgebungsvariable AZUREML_MODEL_DIR in Azure Machine Learning auf den Speicherort in Azure, an dem Ihr Modell gespeichert ist. Beispielsweise enthält /var/azureml-app/azureml-models/aaa-aaa-aaa-aaa-aaa/1 jetzt das Modell sample_m1.pkl.

In Ihrem Bewertungsskript (score.py) können Sie das Modell (in diesem Beispiel sample_m1.pkl) in der init()-Funktion des Skripts laden:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "sample_m1.pkl") 
    model = joblib.load(model_path) 

Bereitstellung für mehrere lokale Modelle

Die Azure CLI, das Python SDK und andere Clienttools ermöglichen es Ihnen zwar, nur ein Modell pro Bereitstellung in der Bereitstellungsdefinition anzugeben, aber Sie können weiterhin mehrere Modelle in einer Bereitstellung verwenden, indem Sie einen Modellordner registrieren, der alle Modelle als Dateien oder Unterverzeichnisse enthält. Weitere Informationen zum Registrieren Ihrer Ressourcen (z. B. Modelle), damit Sie während der Bereitstellung die registrierten Namen und Versionen angeben können, finden Sie unter Registrieren Ihres Modells und Ihrer Umgebung.

Im obigen Beispiel einer lokalen Ordnerstruktur sehen Sie mehrere Modelle im Ordner models. Um diese Modelle in Ihrer YAML-Bereitstellung verwenden zu können, geben Sie den Pfad zum Ordner models wie folgt an:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/ 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Nachdem Sie Ihre Bereitstellung erstellt haben, verweist die Umgebungsvariable AZUREML_MODEL_DIR auf den Speicherort in Azure, an dem Ihre Modelle gespeichert sind. Beispielsweise enthält /var/azureml-app/azureml-models/bbb-bbb-bbb-bbb-bbb/1 jetzt die Modelle und die Dateistruktur.

In diesem Beispiel sieht der Inhalt des Ordners AZUREML_MODEL_DIR wie folgt aus:

Screenshot: Ordnerstruktur des Speicherorts für mehrere Modelle

In Ihrem Bewertungsskript (score.py) können Sie Ihre Modelle in der init()-Funktion laden: Mit dem folgenden Code wird das Modell sample_m1.pkl geladen:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "models","model_1","v1", "sample_m1.pkl ") 
    model = joblib.load(model_path) 

Ein Beispiel zum Bereitstellen mehrerer Modelle in einer Bereitstellung finden Sie unter Bereitstellen mehrerer Modelle in einer Bereitstellung (CLI-Beispiel) und Bereitstellen mehrerer Modelle in einer Bereitstellung (SDK-Beispiel).

Tipp

Wenn Sie mehr als 1.500 Dateien registrieren müssen, komprimieren Sie beim Registrieren der Modelle die Dateien oder Unterverzeichnisse ggf. als „.tar.gz“. Um die Modelle zu nutzen, können Sie die Dateien oder Unterverzeichnisse in der init()-Funktion des Bewertungsskripts entpacken. Alternativ können Sie beim Registrieren der Modelle die Eigenschaft azureml.unpack auf True festlegen, um die Dateien oder Unterverzeichnisse automatisch zu entpacken. In beiden Fällen wird das Entpacken der Dateien einmal in der Initialisierungsphase ausgeführt.

Bereitstellung für Modelle, die in Ihrem Arbeitsbereich registriert sind

Sie können registrierte Modelle in Ihrer Bereitstellungsdefinition verwenden, indem Sie in der YAML-Bereitstellung auf die Namen der Modelle verweisen. Die folgende Bereitstellungs-YAML-Konfiguration gibt beispielsweise den registrierten model-Namen als azureml:local-multimodel:3 an:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: azureml:local-multimodel:3 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Beachten Sie in diesem Beispiel, dass local-multimodel:3 die folgenden Modellartefakte enthält, die auf der Registerkarte Modelle im Azure Machine Learning Studio angezeigt werden können:

Screenshot: Ordnerstruktur mit den Modellartefakten eines registrierten Modells

Nachdem Sie Ihre Bereitstellung erstellt haben, verweist die Umgebungsvariable AZUREML_MODEL_DIR auf den Speicherort in Azure, an dem Ihre Modelle gespeichert sind. Beispielsweise enthält /var/azureml-app/azureml-models/local-multimodel/3 die Modelle und die Dateistruktur. AZUREML_MODEL_DIR verweist auf den Ordner, der den Stamm der Modellartefakte enthält. In diesem Beispiel sieht der Inhalt des Ordners AZUREML_MODEL_DIR wie folgt aus:

Screenshot der Ordnerstruktur mit mehreren Modellen.

In Ihrem Bewertungsskript (score.py) können Sie Ihre Modelle in der init()-Funktion laden: Laden Sie beispielsweise das Modell diabetes.sav:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR"), "models", "diabetes", "1", "diabetes.sav") 
    model = joblib.load(model_path) 

Bereitstellung für Modelle, die im Modellkatalog verfügbar sind

Mit Ausnahme von Modellen in der Azure OpenAI-Sammlung können Sie für jedes Modell im Modellkatalog die auf der Karte des Modells angezeigte Modell-ID für die Bereitstellung verwenden. Modell-IDs weisen das Format azureml://registries/{registry_name}/models/{model_name}/versions/{model_version} auf. Die Modell-ID für das Modell Meta Llama 3-8 B Instruct lautet beispielsweise azureml://registries/azureml-meta/models/Meta-Llama-3-8B-Instruct/versions/2. Einige Modellkarten enthalten Beispielnotebooks, die zeigen, wie Sie die Modell-ID für die Bereitstellung verwenden.

Bereitstellung für Modelle, die in der Registrierung Ihrer Organisation verfügbar sind

Jedes Modell in der Registrierung einer Organisation verfügt über eine Modell-ID im Format azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}. Sie können auch Umgebungen verwenden, die in derselben Registrierung registriert sind.