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
- Assicurarsi di soddisfare i prerequisiti per la creazione dell'ambiente.
- Verificare di essere connessi all'area di lavoro.
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.
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 fileflow.dag.yaml
.
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.
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.