Impostazione progetto applicazione ML

Dopo aver creato l'infrastruttura per l'applicazione ML di esempio, puoi utilizzare il progetto di applicazione ML di esempio come modello per iniziare a creare, distribuire e gestire le tue applicazioni ML.

Questo progetto include best practice di sviluppo e fornisce l'interfaccia CLI mlapp, uno strumento che semplifica lo sviluppo di applicazioni ML. Per creare un'applicazione ML, devi utilizzare l'interfaccia CLI mlapp, Terraform, l'SDK OCI o l'interfaccia CLI OCI. Non è possibile creare un'applicazione ML nella console, ma è possibile visualizzare le applicazioni ML e i relativi dettagli.

Avviando il tuo progetto con il progetto dell'applicazione ML di esempio, puoi passare dall'implementazione dell'applicazione ML alla produzione. Il progetto si basa sull'esperienza acquisita nell'aiutare le organizzazioni a implementare con successo le proprie applicazioni nella produzione.

Il progetto di applicazione ML di esempio è disponibile qui: sample-project.

Duplicare questo progetto per utilizzarlo come base per l'implementazione dell'applicazione ML.

Il progetto include la documentazione nei file README.md, in cui è possibile trovare informazioni dettagliate sul progetto e sui relativi componenti.

Struttura progetto

Il progetto si compone di due parti principali:

  • La cartella dell'infrastruttura automatizza la creazione delle risorse da cui dipende l'applicazione ML di esempio.
  • La cartella Applicazione ML contiene l'applicazione ML di esempio, inclusa la relativa configurazione, implementazione e l'interfaccia CLI mlapp.

Configurazione delle risorse dei prerequisiti

Prima di iniziare a creare e distribuire l'applicazione ML, è necessario creare le risorse necessarie da cui dipende l'applicazione ML di esempio (ad esempio, log, gruppi di log, un progetto Data Science e una subnet). Questo processo può essere automatizzato effettuando le operazioni riportate di seguito.

  1. Preparare la cartella ambiente.
    È possibile utilizzare la cartella di ambiente dev predefinita (environments/dev) o utilizzarla come modello per creare l'ambiente personalizzato. Per creare l'ambiente personalizzato:
    1. Creare una copia della cartella dell'ambiente di sviluppo (environments/dev).
    2. Rinominare la cartella copiata in modo che corrisponda al nome dell'ambiente.
  2. Configurare l'ambiente.
    1. Passare alla cartella dell'ambiente (ad esempio, environments/dev).
    2. Modificare il file input_variables.tfvars per configurare le impostazioni dell'ambiente.
  3. Eseguire Terraform per creare le risorse.
    1. Inizializza Terraform nella cartella ambiente:
      terraform init
    2. Applicare la configurazione per creare le risorse:
      terraform apply -var- file input_variables.tfvars
    3. Se necessario, eliminare le risorse create:
      terraform destroy -var- file input_variables.tfvars
    Nota

    Non riutilizzare le risorse in ambienti diversi, in quanto si potrebbe interrompere l'isolamento dell'ambiente. Ad esempio, la condivisione di una risorsa tra ambienti di sviluppo e QA potrebbe causare problemi di sviluppo che potrebbero rendere inutilizzabile l'ambiente QA, ritardando la distribuzione alla produzione.

Configurazione dell'ambiente dell'applicazione ML

  1. Preparare la cartella ambiente.
    È possibile utilizzare la cartella di ambiente dev predefinita (environments/dev) o utilizzarla come modello per creare l'ambiente personalizzato. Per creare l'ambiente personalizzato:
    1. Creare una copia della cartella dell'ambiente di sviluppo (environments/dev).
    2. Rinominare la cartella copiata in modo che corrisponda al nome dell'ambiente.
  2. Configurare l'ambiente.
    Nella cartella di configurazione dell'ambiente:
    1. Modificare il file env-config.yaml.
    2. Modificare il file testdata-instance.json (lo spazio di nomi dello storage degli oggetti, dopo che il simbolo di chiocciola ('@') deve essere aggiornato per corrispondere alla tenancy).
  3. Definire i riferimenti delle risorse.
    1. Modificare il file arguments.yaml nella cartella di configurazione dell'ambiente per definire i riferimenti alle risorse da cui dipende l'applicazione.
    2. Nella cartella infrastructure/environments/<your environment>, eseguire
      terraform output
    3. Copiare l'output (esclusa l'ultima riga) e incollarlo in arguments.yaml, sostituendo = con :.

Configurazione e inizializzazione dell'interfaccia CLI mlapp

  1. Configurare il progetto dell'applicazione ML.
    1. Passare alla cartella dell'applicazione.
    2. Modificare il file application-def.yaml per definire il nome e la descrizione dell'applicazione ML e della relativa implementazione.
    3. Creare default_env per impostare l'ambiente come predefinito (ciò rimuove la necessità di specificarlo nella riga di comando quando si utilizza l'interfaccia CLI mlapp). È possibile copiare ml-application/default_env.example in ml-application/default_env e memorizzarvi il nome dell'ambiente.
  2. Inizializzare l'ambiente.
    Nella cartella ml-application, eseguire:
    source ./mlapp init

    Questo comando aggiunge lo script mlapp alla variabile PATH, consentendo di eseguire l'interfaccia CLI con mlapp anziché ./mlapp.

Creazione e distribuzione dell'applicazione

Dopo aver configurato tutti gli elementi, è ora possibile iniziare a creare e distribuire l'applicazione.

Nota

Per informazioni sui comandi CLI mlapp, eseguire le operazioni riportate di seguito.
mlapp -h
  1. Creare l'applicazione.
    mlapp build
  2. Distribuire l'applicazione.
    mlapp deploy
  3. Creare un'istanza dell'applicazione.
    mlapp instantiate
  4. attivare un'esecuzione della pipeline di formazione.
    mlapp trigger
  5. Testare il servizio predittivo.
    mlapp predict
Dopo aver eseguito un comando CLI mlapp, controllare i risultati passando alle applicazioni ML in OCI Console / Analytics & AI / Machine Learning.

Usa tag definite e in formato libero

L'applicazione di esempio illustra come utilizzare tag sia definite che in formato libero per garantire l'isolamento del tenant e consentire il tracciamento delle risorse runtime, in particolare dei modelli.

Le tag definite vengono utilizzate per associare identificativi specifici del tenant a risorse quali le distribuzioni dei modelli, i bucket di storage e i modelli.
Aggiungere una tag definita a un bucket
resource "oci_objectstorage_bucket" "data_storage_bucket" {
  compartment_id = var.app_impl.compartment_id
  namespace      = data.oci_objectstorage_namespace.this.namespace
  name           = "ml-app-fetal-risk-bucket-${var.app_instance.id}"
  access_type    = "NoPublicAccess"
 
  # To allow Instance (tenant) isolation
  defined_tags   = {"MlApplications.MlApplicationInstanceId" = var.app_instance.id}
}
Per le risorse runtime create dinamicamente dal codice (ad esempio i modelli), aggiungere sia una tag definita che una tag in formato libero. La tag in formato libero collega la risorsa all'istanza, abilitando l'eliminazione automatica quando l'istanza viene rimossa.
Aggiungere tag definite e in formato libero a un modello
model_id = xgb_model.save(display_name='fetal_health_model',
                          # needed for tenant isolation
                          defined_tags={"MlApplications": {"MlApplicationInstanceId": instance_id}},
                          # needed for ML App to be able to track created model
                          freeform_tags={"MlApplicationInstance": instance_id})