Scelta di un tipo di macchina per la previsione online

AI Platform Prediction alloca nodi per gestire le richieste di previsione online inviate a una versione del modello. Quando esegui il deployment di una versione del modello, puoi personalizzare il tipo di macchina virtuale che AI Platform Prediction utilizza per questi nodi.

I tipi di macchina differiscono in diversi modi:

Selezionando un tipo di macchina con più risorse di calcolo, puoi gestire previsioni con minore latenza o gestire più richieste di previsione contemporaneamente.

Tipi di macchina disponibili

I tipi di macchina di Compute Engine (N1) e il tipo di macchina mls1-c1-m2 sono in disponibilità generale per la previsione online. Il tipo di macchina mls1-c4-m2 è disponibile in versione beta.

La tabella seguente mette a confronto i tipi di macchina disponibili:

Nome Disponibilità vCPUs Memoria (GB) Supporta le GPU? Supporto di framework ML Dimensione massima del modello
mls1-c1-m2 (valore predefinito sull'endpoint globale) Generalmente disponibile 1 2 No TensorFlow, XGBoost, scikit-learn (incluse pipeline con codice personalizzato), routine di previsione personalizzate 500 MB
mls1-c4-m2 Beta 4 2 No TensorFlow, XGBoost, scikit-learn (incluse pipeline con codice personalizzato), routine di previsione personalizzate 500 MB
n1-standard-2 (valore predefinito sugli endpoint a livello di regione) Generalmente disponibile 2 7.5 TensorFlow, XGBoost e scikit-learn 10 GB
n1-standard-4 Generalmente disponibile 4 15 TensorFlow, XGBoost e scikit-learn 10 GB
n1-standard-8 Generalmente disponibile 8 30 TensorFlow, XGBoost e scikit-learn 10 GB
n1-standard-16 Generalmente disponibile 16 60 TensorFlow, XGBoost e scikit-learn 10 GB
n1-standard-32 Generalmente disponibile 32 120 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highmem-2 Generalmente disponibile 2 13 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highmem-4 Generalmente disponibile 4 26 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highmem-8 Generalmente disponibile 8 52 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highmem-16 Generalmente disponibile 16 104 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highmem-32 Generalmente disponibile 32 208 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highcpu-2 Generalmente disponibile 2 1.8 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highcpu-4 Generalmente disponibile 4 3.6 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highcpu-8 Generalmente disponibile 8 7.2 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highcpu-16 Generalmente disponibile 16 14.4 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highcpu-32 Generalmente disponibile 32 28.8 TensorFlow, XGBoost e scikit-learn 10 GB

Scopri di più sui prezzi per ciascun tipo di macchina. Ulteriori informazioni sulle specifiche dettagliate dei tipi di macchine di Compute Engine (N1) sono disponibili nella documentazione di Compute Engine.

Specificare un tipo di macchina

Puoi specificare la scelta del tipo di macchina quando crei una versione del modello. Se non specifichi un tipo di macchina, per impostazione predefinita la versione del modello utilizza n1-standard-2 se utilizzi un endpoint a livello di regione e mls1-c1-m2 se utilizzi l'endpoint globale.

Le seguenti istruzioni illustrano come specificare un tipo di macchina quando crei una versione del modello. Usano il tipo di macchina n1-standard-4 come esempio. Per informazioni sul processo completo di creazione di una versione del modello, leggi la guida al deployment dei modelli.

Console Google Cloud

Nella pagina Crea versione, apri l'elenco a discesa Tipo di macchina e seleziona Standard > n1-standard-4.

gcloud

Dopo aver caricato gli artefatti del modello in Cloud Storage e creato una risorsa del modello, puoi creare una versione del modello che utilizza il tipo di macchina n1-standard-4:

gcloud ai-platform versions create VERSION_NAME \
  --model MODEL_NAME \
  --origin gs://model-directory-uri \
  --runtime-version 2.11 \
  --python-version 3.7 \
  --framework ML_FRAMEWORK_NAME \
  --region us-central1 \
  --machine-type n1-standard-4

Python

Questo esempio utilizza la libreria client delle API di Google per Python. Prima di eseguire il seguente esempio di codice, devi configurare l'autenticazione.

Dopo aver caricato gli artefatti del modello in Cloud Storage e creato una risorsa del modello, invia una richiesta al metodo projects.models.versions.create del modello e specifica il campo machineType nel corpo della richiesta:

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_dict = {
    'name': 'VERSION_NAME',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '2.11',
    'pythonVersion': '3.7',
    'framework': 'ML_FRAMEWORK_NAME',
    'machineType': 'n1-standard-4'
}
request = ml.projects().models().versions().create(
    parent='projects/PROJECT_NAME/models/MODEL_NAME',
    body=request_dict
)
response = request.execute()

Utilizzo di GPU per la previsione online

Per alcune configurazioni, puoi aggiungere facoltativamente GPU per accelerare ogni nodo di previsione. Per utilizzare le GPU, devi tenere conto di diversi requisiti:

  • Puoi utilizzare GPU solo con tipi di macchine di Compute Engine (N1). I tipi di macchina legacy (MLS1) non supportano le GPU.
  • Puoi utilizzare le GPU solo quando esegui il deployment di un TensorFlow SalvaModel. Non puoi utilizzare GPU per i modelli scikit-learn o XGBoost.
  • La disponibilità di ciascun tipo di GPU varia in base alla regione utilizzata per il modello. Scopri i tipi di GPU disponibili in quali regioni.
  • Puoi utilizzare un solo tipo di GPU per la versione del tuo modello e il numero di GPU che puoi aggiungere è limitato a seconda del tipo di macchina utilizzato. La tabella seguente descrive queste limitazioni.

La tabella seguente mostra le GPU disponibili per la previsione online e il numero di GPU che puoi utilizzare con ciascun tipo di macchina Compute Engine per ciascun tipo:

Numeri validi di GPU per ogni tipo di macchina
Tipo di macchina NVIDIA Tesla K80 NVIDIA Tesla P4 NVIDIA Tesla P100 NVIDIA Tesla T4 NVIDIA Tesla V100
n1-standard-2 1; 2; 4; 8 1, 2, 4 1, 2, 4 1, 2, 4 1; 2; 4; 8
n1-standard-4 1; 2; 4; 8 1, 2, 4 1, 2, 4 1, 2, 4 1; 2; 4; 8
n1-standard-8 1; 2; 4; 8 1, 2, 4 1, 2, 4 1, 2, 4 1; 2; 4; 8
n1-standard-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-standard-32 4, 8 2, 4 2, 4 2, 4 4, 8
n1-highmem-2 1; 2; 4; 8 1, 2, 4 1, 2, 4 1, 2, 4 1; 2; 4; 8
n1-highmem-4 1; 2; 4; 8 1, 2, 4 1, 2, 4 1, 2, 4 1; 2; 4; 8
n1-highmem-8 1; 2; 4; 8 1, 2, 4 1, 2, 4 1, 2, 4 1; 2; 4; 8
n1-highmem-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highmem-32 4, 8 2, 4 2, 4 2, 4 4, 8
n1-highcpu-2 1; 2; 4; 8 1, 2, 4 1, 2, 4 1, 2, 4 1; 2; 4; 8
n1-highcpu-4 1; 2; 4; 8 1, 2, 4 1, 2, 4 1, 2, 4 1; 2; 4; 8
n1-highcpu-8 1; 2; 4; 8 1, 2, 4 1, 2, 4 1, 2, 4 1; 2; 4; 8
n1-highcpu-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highcpu-32 4, 8 2, 4 2, 4 2, 4 4, 8

Le GPU sono facoltative e prevedono costi aggiuntivi.

Specifica delle GPU

Specifica le GPU quando crei una versione del modello. AI Platform Prediction alloca il numero e il tipo di GPU specificati per ciascun nodo di previsione. I nodi di previsione possono essere scalati automaticamente (anteprima) o manualmente, ma il numero di GPU utilizzate da ogni nodo è fisso quando crei la versione del modello. A meno che tu non abbia un caso d'uso avanzato, ti consigliamo di configurare una GPU per ogni nodo di previsione, ovvero di impostare il conteggio degli acceleratori su 1.

Le seguenti istruzioni mostrano come specificare le GPU per la previsione online creando una versione del modello che viene eseguita su almeno due nodi di previsione in qualsiasi momento. Ogni nodo utilizza il tipo di macchina n1-standard-4 e una GPU NVIDIA Tesla T4.

Gli esempi presuppongono che tu abbia già caricato un SaveModel di TensorFlow in Cloud Storage e creato una risorsa del modello in una regione che supporta le GPU.

Console Google Cloud

Segui la guida alla creazione di una versione del modello. Nella pagina Crea versione, specifica le seguenti opzioni:

  1. Nell'elenco a discesa Scalabilità, seleziona Scalabilità automatica.
  2. Nel campo Numero minimo di nodi, inserisci 2.
  3. Nell'elenco a discesa Tipo di macchina, seleziona Standard > n1-standard-4.
  4. Nell'elenco a discesa Tipo di acceleratore, seleziona NVIDIA_TESLA_T4.
  5. Nell'elenco a discesa Conteggio acceleratore, seleziona 1.

gcloud

Utilizza gcloud CLI per creare una versione del modello. In questo esempio, la versione viene eseguita su nodi di previsione n1-standard-4, ognuno dei quali utilizza una GPU NVIDIA Tesla T4. AI Platform Prediction scala automaticamente il numero di nodi di previsione fino a un numero compreso tra 2 e 4, a seconda dell'utilizzo della GPU in un determinato momento. L'esempio utilizza l'endpoint a livello di regione us-central1:

gcloud beta ai-platform versions create VERSION_NAME \
  --model MODEL_NAME \
  --origin gs://model-directory-uri \
  --runtime-version 2.11 \
  --python-version 3.7 \
  --framework tensorflow \
  --region us-central1 \
  --machine-type n1-standard-4 \
  --accelerator count=1,type=nvidia-tesla-t4 \
  --min-nodes 2 \
  --max-nodes 4 \
  --metric-targets gpu-duty-cycle=60

Tieni presente che il nome dell'acceleratore è specificato in minuscolo con trattini tra le parole.

Python

Questo esempio utilizza la libreria client delle API di Google per Python. Prima di eseguire il seguente esempio di codice, devi configurare l'autenticazione.

L'esempio utilizza l'endpoint a livello di regione us-central1.

Invia una richiesta al metodo projects.models.versions.create del tuo modello e specifica i campi machineType, acceleratorConfig e manualScaling nel corpo della richiesta:

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_dict = {
    'name': 'VERSION_NAME',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '2.11',
    'pythonVersion': '3.7',
    'framework': 'TENSORFLOW',
    'machineType': 'n1-standard-4',
    'acceleratorConfig': {
      'count': 1,
      'type': 'NVIDIA_TESLA_T4'
    },
    'autoScaling': {
      'minNodes': 2,
      'maxNodes': 4,
      'metrics': [
        {
          'name': 'GPU_DUTY_CYCLE',
          'target': 60
        }
      ]
    }
}
request = ml.projects().models().versions().create(
    parent='projects/PROJECT_NAME/models/MODEL_NAME',
    body=request_dict
)
response = request.execute()

Tieni presente che il nome dell'acceleratore è specificato in maiuscole con trattini bassi tra le parole.

Differenze tra i tipi di macchina

Oltre a fornire quantità diverse di risorse di calcolo, i tipi di macchine variano anche nel supporto per determinate funzionalità di AI Platform Prediction. La seguente tabella offre una panoramica delle differenze tra i tipi di macchine di Compute Engine (N1) e i tipi di macchine legacy (MLS1):

Tipi di macchina di Compute Engine (N1) Tipi di macchina legacy (MLS1)
Regioni Tutte le regioni degli endpoint a livello di regione Tutte le regioni degli endpoint globali
Tipi di artefatti ML
Versioni runtime 1.11 o versioni successive Tutte le versioni di runtime di AI Platform disponibili
Supporto per container personalizzato No
Dimensione massima del modello 10 GB 500 MB
Scalabilità automatica Numero minimo di nodi = 1 Numero minimo di nodi = 0
Scalabilità manuale Può aggiornare il numero di nodi Impossibile aggiornare il numero di nodi dopo aver creato la versione del modello
Supporto GPU Sì (solo TensorFlow) No
Supporto di AI Explanations Sì (solo TensorFlow) No
Supporto dei Controlli di servizio VPC No
Copertura SLA per i tipi di macchina in disponibilità generale Sì, in alcuni casi

Le seguenti sezioni forniscono spiegazioni dettagliate sulle differenze tra i tipi di macchina.

Disponibilità a livello di area geografica

I tipi di macchine di Compute Engine (N1) sono disponibili quando esegui il deployment del modello su un endpoint a livello di regione. Quando utilizzi un tipo di macchina di Compute Engine (N1), non puoi eseguire il deployment del modello nell'endpoint globale.

Quando scali una versione del modello che utilizza i tipi di macchina di Compute Engine (N1) su due o più nodi di previsione, i nodi vengono eseguiti in più zone all'interno della stessa regione. Ciò garantisce una disponibilità continua in caso di interruzione in una delle zone. Scopri di più nella sezione relativa alla scalabilità di questo documento.

Tieni presente che la disponibilità delle GPU per i tipi di macchine di Compute Engine (N1) varia anche in base alla regione.

I tipi di macchine legacy (MLS1) sono disponibili sull'endpoint globale in molte regioni. I tipi di macchine legacy (MLS1) non sono disponibili per gli endpoint a livello di regione.

Supporto per la previsione batch

Le versioni del modello che utilizzano il tipo di macchina mls1-c1-m2 supportano la previsione batch. Le versioni del modello che usano altri tipi di macchina non supportano la previsione batch.

Supporto di framework ML

Se utilizzi uno dei tipi di macchina di Compute Engine (N1), puoi creare la versione del modello con tutti gli artefatti del modello descritti nella Guida all'esportazione di modelli di previsione, tranne due:

Per i tipi di macchine legacy (MLS1), puoi utilizzare qualsiasi tipo di artefatto del modello supportato da AI Platform Prediction, tra cui una pipeline scikit-learn con codice personalizzato o una routine di previsione personalizzata.

Supporto delle versioni di runtime

Se utilizzi un tipo di macchina di Compute Engine (N1), devi utilizzare la versione 1.11 o successiva del runtime per la versione del modello.

Se utilizzi un tipo di macchina legacy (MLS1), puoi utilizzare qualsiasi versione di runtime di AI Platform disponibile.

Supporto per container personalizzato

Per utilizzare un container personalizzato per la gestione delle previsioni online, devi utilizzare un tipo di macchina di Compute Engine (N1).

Dimensione massima del modello

Gli elementi del modello che fornisci quando crei una versione del modello devono avere dimensioni file totali inferiori a 500 MB se utilizzi un tipo di macchina legacy (MLS1). Se utilizzi un tipo di macchina di Compute Engine (N1), la dimensione totale del file può arrivare fino a 10 GB.

Previsioni di logging

Per i tipi di macchine di Compute Engine (N1), il logging della console è in anteprima. Per i tipi di macchine legacy (MLS1), il logging della console è in disponibilità generale.

Scalabilità dei nodi di previsione

La scalabilità automatica e la scalabilità manuale dei nodi di previsione hanno entrambi vincoli diversi a seconda che utilizzi un tipo di macchina di Compute Engine (N1) o un tipo di macchina legacy (MLS1).

Scalabilità automatica

Se utilizzi un tipo di macchina di Compute Engine (N1) con scalabilità automatica, la versione del tuo modello deve avere sempre almeno un nodo in esecuzione. In altre parole, il valore predefinito del campo autoScaling.minNodes della versione è 1 e non può essere inferiore a 1. Se imposti autoScaling.minNodes su 2 o su un valore superiore, i nodi di previsione vengono eseguiti in più zone all'interno della stessa regione. Ciò garantisce la disponibilità continua in caso di interruzione in una delle zone.

Tieni presente che se assegni più vCPU o RAM di quelle necessarie per il modello di machine learning, la scalabilità automatica potrebbe non funzionare correttamente. Questo può causare problemi con le prestazioni del modello. Prova a utilizzare diversi tipi di macchina per il tuo modello, in modo da assicurarti di non fornire troppe risorse di calcolo.

Se utilizzi un tipo di macchina legacy (MLS1), la versione del modello può scalare fino a zero nodi quando non riceve traffico: autoScaling.minNodes può essere impostato su 0 ed è impostata su 0 per impostazione predefinita. La scalabilità fino a zero può ridurre i costi quando la versione del modello non riceve richieste di previsione. Tuttavia, può anche causare latenza o errori in qualsiasi periodo in cui AI Platform Prediction sta allocando un nuovo nodo per gestire le richieste dopo un periodo senza nodi. Scopri di più sulla scalabilità a zero.

Scalabilità manuale

Se utilizzi un tipo di macchina di Compute Engine (N1) con scalabilità manuale, puoi aggiornare il numero di nodi di previsione in esecuzione in qualsiasi momento utilizzando il metodo API projects.models.versions.patch. Se imposti il campo manualScaling.nodes su 2 o su un valore superiore, i nodi di previsione vengono eseguiti in più zone all'interno della stessa regione. Ciò garantisce la disponibilità continua in caso di interruzione in una delle zone.

Se utilizzi un tipo di macchina legacy (MLS1) con scalabilità manuale, non puoi aggiornare il numero di nodi di previsione dopo aver creato la versione del modello. Se vuoi modificare il numero di nodi, devi eliminare la versione e crearne una nuova.

Supporto dei Controlli di servizio VPC

Se utilizzi Controlli di servizio VPC per proteggere AI Platform Prediction, non puoi creare versioni che utilizzano tipi di macchine legacy (MLS1). Devi utilizzare tipi di macchina di Compute Engine (N1).