Condividi tramite


Compilare e distribuire pipeline di dati e Machine Learning con Flyte nel servizio Azure Kubernetes (AKS)

Questo articolo mostra come usare Flyte nel servizio Azure Kubernetes (AKS). Flyte è un agente di orchestrazione del flusso di lavoro open source che unifica gli stack di Machine Learning, ingegneria dei dati e analisi dei dati per facilitare la creazione di applicazioni solide e affidabili. Quando si usa Flyte come strumento di automazione di un flusso di lavoro nativo di Kubernetes, è possibile concentrarsi sulla sperimentazione e sul fornire valore aziendale senza aumentare l'ambito per l'infrastruttura e la gestione delle risorse. Tenere presente che Flyte non è ufficialmente supportato da Microsoft, quindi il suo uso è a discrezione dell’utente.

Per altre informazioni, vedere Introduzione a Flyte.

Importante

Il software open source è citato nella documentazione e negli esempi di Azure Kubernetes. Il software distribuito viene escluso dai contratti di servizio del servizio Azure Kubernetes, dalla garanzia limitata e supporto tecnico di Azure. Quando si usa la tecnologia open source insieme al servizio Azure Kubernetes, consultare le opzioni di supporto disponibili dalle rispettive community e dai gestori di progetti per sviluppare un piano.

Ad esempio, il repository GitHub Ray descrive diverse piattaforme che variano in tempo di risposta, scopo e livello di supporto.

Microsoft si assume la responsabilità di creare i pacchetti open source distribuiti nel servizio Azure Kubernetes. Tale responsabilità include la proprietà completa del processo di compilazione, analisi, firma, convalida e hotfix, oltre al controllo sui file binari nelle immagini del contenitore. Per altre informazioni, vedere Gestione delle vulnerabilità per il servizio Azure Kubernetes e Copertura del supporto del servizio Azure Kubernetes.

Casi d'uso di Flyte

Flyte può essere usato per diversi casi d'uso, ad esempio per:

  • Offrire modelli per calcoli finanziari semplificati relativi a profitti e perdite.
  • Elaborare petabyte di dati per effettuare in modo efficiente il mapping 3D delle nuove aree.
  • Eseguire rapidamente il rollback alle versioni precedenti e ridurre al minimo l'impatto dei bug nelle pipeline.

Per altre informazioni, vedere Casi d'uso di base di Flyte.

Prerequisiti

  • Una sottoscrizione di Azure. Se non hai una sottoscrizione Azure, crea un account gratuito.
    • Se si dispone di più sottoscrizioni, assicurarsi di selezionare quella corretta tramite il comando az account set --subscription <subscription-id>.
  • Interfaccia della riga di comando di Azure installata e configurata. Controllare la versione tramite il comando az --version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
  • Interfaccia della riga di comando di Helm installata e aggiornata. Controllare la versione tramite il comando helm version. Se è necessario eseguire l’installazione o l'aggiornamento, vedere Installare Helm.
  • Interfaccia della riga di comando di kubectl installata e aggiornata. Installarla in locale tramite il comando az aks install-cli o Installa kubectl.
  • Ambiente di sviluppo Docker locale. Per altre informazioni, vedere Get Docker (Ottenere Docker).
  • flytekit e flytectl installati. Per altre informazioni, vedere Installazione di Flyte.

Nota

Se si usa Azure Cloud Shell, l'interfaccia della riga di comando di Azure, Helm e kubectl sono già installati.

Impostare le variabili di ambiente

  • Impostare le variabili di ambiente da usare in questo articolo. Sostituire i valori segnaposto con i propri valori.

    export RESOURCE_GROUP="<resource-group-name>"
    export LOCATION="<location>"
    export CLUSTER_NAME="<cluster-name>"
    export DNS_NAME_PREFIX="<dns-name-prefix>"
    

Creare un cluster del servizio Azure Kubernetes

  1. Creare un gruppo di risorse di Azure per il cluster del servizio Azure Kubernetes tramite il comando az group create.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  2. Creare un cluster del servizio Azure Kubernet tramite il comando az aks create e i parametri --enable-azure-rbac, --enable-managed-identity, --enable-aad e --dns-name-prefix.

    az aks create --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-azure-rbac --enable-managed-identity --enable-aad --dns-name-prefix $DNS_NAME_PREFIX  --generate-ssh-keys
    

Connettersi al cluster del servizio Azure Kubernetes

  • Configurare kubectl per connettersi al cluster del servizio Azure Kubernetes usando il comando az aks get-credentials.

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
    

Aggiungere il repository di Flyte Helm

  • Aggiungere il repository di Flyte Helm tramite il comando helm repo add.

    helm repo add flyteorg https://flyteorg.github.io/flyte
    

Trovare grafici di Flyte Helm

  1. Cercare i grafici di Flyte Helm tramite il comando helm search repo.

    helm search repo flyteorg
    

    L'output di esempio seguente mostra alcuni dei grafici di Flyte Helm disponibili:

    NAME                    CHART VERSION   APP VERSION     DESCRIPTION
    flyteorg/flyte          v1.12.0                         A Helm chart for Flyte Sandbox
    flyteorg/flyte-binary   v1.12.0         1.16.0          Chart for basic single Flyte executable deployment
    flyteorg/flyte-core     v1.12.0                         A Helm chart for Flyte core
    flyteorg/flyte-deps     v1.12.0                         A Helm chart for Flyte dependencies
    flyteorg/flyte-sandbox  0.1.0           1.16.1          A Helm chart for the Flyte local sandbox
    flyteorg/flyteagent     v0.1.10                         A Helm chart for Flyte Agent
    
  2. Aggiornare il repository tramite il comando helm repo update.

    helm repo update
    

Distribuire un grafico di Flyte nel servizio Azure Kubernetes

In questa sezione viene distribuito il grafico flyte-binary di Helm per iniziare a compilare e distribuire pipeline di dati e Machine Learning con Flyte nel servizio Azure Kubernetes. Il grafico flyte-binary è una distribuzione di base semplice che può essere eseguita in Flyte.

  1. Creare uno spazio dei nomi per la distribuzione di Flyte tramite il comando kubectl create namespace.

    kubectl create namespace <namespace-name>
    
  2. Installare un grafico di Flyte Helm tramite il comando helm install. In questo esempio viene usato il grafico flyte-binary.

    helm install flyte-binary flyteorg/flyte-core --namespace <namespace-name>
    
  3. Verificare che la distribuzione di Flyte sia in esecuzione tramite il comando kubectl get services.

    kubectl get services --namespace <namespace-name> --output wide
    

    L'output di esempio condensato seguente mostra la distribuzione di Flyte:

    NAME                            TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
    flyteorg-flyte-binary-grpc      ClusterIP      xx.x.xx.xxx    <none>          81/TCP           1m
    flyteorg-flyte-binary-http      ClusterIP      xx.x.xx.xxx    <none>          80/TCP           1m
    flyteorg-flyte-binary-webhook   ClusterIP      xx.x.xx.xxx    <none>          80/TCP           1m
    

Passaggi successivi

In questo articolo si è appreso come installare Flyte nel servizio Azure Kubernetes usando un grafico Helm. Il progetto Flyte gestisce anche un'implementazione di riferimento per il servizio Azure Kubernetes che configura automaticamente tutte le dipendenze e distribuisce un cluster Flyte di livello di produzione.

Per iniziare a compilare e distribuire pipeline di dati e Machine Learning, vedere gli articoli seguenti: