Share via


Personalizzare un ambiente per il runtime

Personalizzare un ambiente con il contesto Docker per il runtime

Questa sezione presuppone la conoscenza di Docker e degli ambienti di Azure Machine Learning.

Passaggio 1: Preparare il contesto Docker

Creare la cartella image_build

Nell'ambiente locale creare una cartella contenente i file seguenti. La struttura della cartella dovrebbe essere simile alla seguente:

|--image_build
|  |--requirements.txt
|  |--Dockerfile
|  |--environment.yaml

Definire i pacchetti necessari in requirements.txt

Facoltativo: aggiungere pacchetti nel repository pypi privato.

Usare il comando seguente per scaricare i pacchetti nell'ambiente locale: pip wheel <package_name> --index-url=<private pypi> --wheel-dir <local path to save packages>

Aprire il file requirements.txt e aggiungervi i pacchetti aggiuntivi e la versione specifica. Ad esempio:

###### Requirements with Version Specifiers ######
langchain == 0.0.149        # Version Matching. Must be version 0.0.149
keyring >= 4.1.1            # Minimum version 4.1.1
coverage != 3.5             # Version Exclusion. Anything except version 3.5
Mopidy-Dirble ~= 1.1        # Compatible release. Same as >= 1.1, == 1.*
<path_to_local_package>     # reference to local pip wheel package

Per altre informazioni sulla strutturazione del requirements.txt file, vedere Formato di file dei requisiti nella documentazione di pip.

Nota

Non aggiungere la versione di promptflow e promptflow-tools in requirements.txt, perché le versioni sono già incluse nell'immagine di base del runtime.

Definire il Dockerfile

Creare un Dockerfile e aggiungere il contenuto seguente, quindi salvare il file:

FROM <Base_image>
COPY ./* ./
RUN pip install -r requirements.txt

Nota

Questa immagine Docker deve essere creata dall'immagine di base del prompt flow, ovvero mcr.microsoft.com/azureml/promptflow/promptflow-runtime:<newest_version>. Se possibile, usare la versione più recente dell'immagine di base.

Passaggio 2: Creare un ambiente di Azure Machine Learning personalizzato

Definire l'ambiente in environment.yaml

Nell'ambiente di calcolo locale è possibile usare l'interfaccia della riga di comando (v2) per creare un ambiente personalizzato basato sull'immagine Docker.

Nota

az login # if not already authenticated

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Aprire il file environment.yaml e aggiungere il contenuto seguente. Sostituire il segnaposto <environment_name> con il nome dell'ambiente desiderato.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: <environment_name>
build:
  path: .

Crea un ambiente

cd image_build
az ml environment create -f environment.yaml --subscription <sub-id> -g <resource-group> -w <workspace>

Nota

La compilazione dell'immagine dell'ambiente può richiedere alcuni minuti.

Passare alla pagina dell'interfaccia utente dell'area di lavoro, quindi alla pagina Ambienti e individuare l'ambiente personalizzato creato. È ora possibile usarlo per creare un runtime dell'istanza di ambiente di calcolo nel prompt flow. Per altre informazioni, vedere Creare un runtime dell'istanza di ambiente di calcolo nell'interfaccia utente.

È anche possibile trovare l'immagine nella pagina dei dettagli dell'ambiente e usarla come immagine di base nel runtime automatico (anteprima) nel file flow.dag.yaml della cartella del prompt flow. Questa immagine verrà usata anche per creare l'ambiente per la distribuzione del flusso dall'interfaccia utente.

Screenshot del nome dell'immagine nella pagina dei dettagli dell'ambiente.

Per altre informazioni sull'interfaccia della riga di comando dell'ambiente, vedere Gestire gli ambienti.

Personalizzare l'ambiente con la cartella del flusso per il runtime automatico (anteprima)

Nel file flow.dag.yaml della cartella del prompt flow è possibile usare la sezione environment per definire l'ambiente per il flusso. Tale sezione include due parti:

  • image: si tratta dell'immagine di base per il flusso. Se è omessa, usa la versione più recente dell'immagine di base mcr.microsoft.com/azureml/promptflow/promptflow-runtime:<newest_version> del prompt flow. Per personalizzare l'ambiente, è possibile usare l'immagine creata nella sezione precedente.
  • È anche possibile specificare pacchetti requirements.txt. Sia il runtime automatico che la distribuzione del flusso dall'interfaccia utente useranno l'ambiente definito nel file flow.dag.yaml.

Screenshot della personalizzazione dell'ambiente per il runtime automatico nella pagina del flusso.

Per usare feed privati in Azure DevOps, vedere Aggiungere pacchetti in un feed privato in Azure DevOps.

Creare un'applicazione personalizzata nell'istanza di ambiente di calcolo che può essere usata come runtime dell'istanza di ambiente di calcolo del prompt flow

Un runtime dell'istanza di ambiente di calcolo è un'applicazione personalizzata che viene eseguita in un'istanza di ambiente di calcolo. È possibile creare un'applicazione personalizzata in un'istanza di ambiente di calcolo e quindi usarla come runtime del prompt flow. Per creare un'applicazione personalizzata a questo scopo, è necessario specificare le proprietà seguenti:

INTERFACCIA UTENTE SDK Nota
Immagine Docker ImageSettings.reference Immagine usata per creare questa applicazione personalizzata
Porta di destinazione EndpointsSettings.target Porta per l'accesso all'applicazione, ovvero la porta all'interno del contenitore
Porta pubblicata EndpointsSettings.published Porta usata per eseguire l'applicazione nell'immagine, ovvero la porta esposta pubblicamente

Creare un'applicazione personalizzata come runtime dell'istanza di ambiente di calcolo del prompt flow tramite SDK v2

import os
from azure.ai.ml import MLClient
from azure.ai.ml.entities import ComputeInstance, CustomApplications, EndpointsSettings, ImageSettings, VolumeSettings, WorkspaceConnection
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential

try:
    credential = DefaultAzureCredential()
    # Check if given credential can get token successfully.
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    # Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
    credential = InteractiveBrowserCredential()

ml_client = MLClient.from_config(credential=credential)

image = ImageSettings(reference='mcr.microsoft.com/azureml/promptflow/promptflow-runtime-stable:<newest_version>') 
endpoints = [EndpointsSettings(published=8081, target=8080)]

app = CustomApplications(name='promptflow-runtime',endpoints=endpoints,bind_mounts=[],image=image,environment_variables={}) 

ci_basic_name = "<compute_instance_name>"
ci_basic = ComputeInstance(name=ci_basic_name, size="<instance_type>",custom_applications=[app]) 

ml_client.begin_create_or_update(ci_basic)

Nota

Sostituire newest_version, compute_instance_name e instance_type con un valore personalizzato.

Creare un'applicazione personalizzata come runtime dell'istanza di ambiente di calcolo tramite un modello di Azure Resource Manager

È possibile usare questo modello di Azure Resource Manager per creare l'istanza di ambiente di calcolo con un'applicazione personalizzata.

Distribuzione in Azure

Per altre informazioni, vedere Modello di Azure Resource Manager per un'applicazione personalizzata come runtime del prompt flow nell'istanza di ambiente di calcolo.

Creare un'applicazione personalizzata come runtime dell'istanza di ambiente di calcolo del prompt flow tramite l'interfaccia utente dell'istanza di ambiente di calcolo

Consultare questo documento per aggiungere l'applicazione personalizzata.

Screenshot del calcolo che mostra le applicazioni personalizzate.

Passaggi successivi