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 utilizzata da AI Platform Prediction per questi nodi.

I tipi di macchine differiscono in diversi modi:

Se selezioni un tipo di macchina con più risorse di calcolo, puoi fornire predizioni con una latenza inferiore o gestire più richieste di previsione contemporaneamente.

Tipi di macchine disponibili

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

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

Nome Disponibilità vCPU Memoria (GB) Supporta le GPU? Supporto del framework ML Dimensioni massime del modello
mls1-c1-m2 (valore predefinito per l'endpoint globale) Generalmente disponibile 1 2 No TensorFlow, XGBoost, scikit-learn (incluse le pipeline con codice personalizzato), routine di previsione personalizzate 500 MB
mls1-c4-m2 Beta 4 2 No TensorFlow, XGBoost, scikit-learn (incluse le pipeline con codice personalizzato), routine di previsione personalizzate 500 MB
n1-standard-2 (valore predefinito per gli endpoint regionali) 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 ogni tipo di macchina. Scopri di più sulle specifiche dettagliate dei tipi di macchine Compute Engine (N1) nella documentazione di Compute Engine.

Specifica di un tipo di macchina

Puoi specificare una 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 regionale e mls1-c1-m2 se utilizzi l'endpoint globale.

Le istruzioni riportate di seguito mostrano come specificare un tipo di macchina quando crei una versione del modello. Utilizza il tipo di macchina n1-standard-4 come esempio. Per informazioni sulla procedura completa di creazione di una versione del modello, consulta 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 elementi del modello su Cloud Storage e creato una risorsa 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 dell'API di Google per Python. Prima di eseguire il seguente esempio di codice, devi configurare l'autenticazione.

Dopo aver caricato gli elementi del modello su Cloud Storage e creato una risorsa modello, invia una richiesta al metodo projects.models.versions.create del tuo 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 delle 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 le GPU solo con i tipi di macchine Compute Engine (N1). I tipi di macchine legacy (MLS1) non supportano le GPU.
  • Puoi utilizzare le GPU solo quando esegui il deployment di un modello salvato di TensorFlow. Non puoi utilizzare le GPU per i modelli scikit-learn o XGBoost.
  • La disponibilità di ogni tipo di GPU varia in base alla regione utilizzata per il modello. Scopri quali tipi di GPU sono disponibili in quali regioni.
  • Puoi utilizzare un solo tipo di GPU per la versione del modello e ci sono limitazioni sul numero di GPU che puoi aggiungere a seconda del tipo di macchina in uso. La tabella seguente descrive queste limitazioni.

La tabella seguente mostra le GPU disponibili per le previsioni online e quante GPU di ciascun tipo puoi utilizzare con ciascun tipo di macchina Compute Engine:

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 comportano costi aggiuntivi.

Specificare le GPU

Specifica le GPU quando crei una versione del modello. AI Platform Prediction alloca il numero e il tipo di GPU specificati per ogni nodo di previsione. Puoi scalare automaticamente (anteprima) o manualmente (GA) i nodi di previsione, ma il numero di GPU utilizzate da ciascun 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 su ogni node di previsione; in altre parole, imposta il conteggio degli acceleratori su 1.

Le istruzioni riportate di seguito 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 modello TensorFlow SavedModel su Cloud Storage e creato una risorsa modello in una regione che supporta le GPU.

Console Google Cloud

Segui la guida per la 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 acceleratori, 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 che utilizzano ciascuno una GPU NVIDIA Tesla T4. AI Platform Prediction scala automaticamente il numero di nodi di previsione a un numero compreso tra 2 e 4, a seconda dell'utilizzo della GPU in un determinato momento. L'esempio utilizza l'endpoint regionale 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 deve essere specificato in minuscole con i trattini tra le parole.

Python

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

L'esempio utilizza l'endpoint regionale 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 maiuscolo con trattini bassi tra le parole.

Differenze tra i tipi di macchine

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

Tipi di macchine Compute Engine (N1) Tipi di macchine legacy (MLS1)
Regioni Tutte le regioni degli endpoint a livello di regione Tutte le regioni di endpoint globali
Tipi di artefatti ML
Versioni runtime 1.11 o versioni successive Tutte le versioni di runtime di AI Platform
Supporto per container personalizzato No
Dimensioni massime del modello 10 GB 500 MB
Scalabilità automatica Nodi minimi = 1 Nodi minimi = 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 dello SLA per i tipi di macchine disponibili a livello generale Sì, in alcuni casi

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

Disponibilità a livello di area geografica

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

Quando esegui la scalabilità di una versione di modello che utilizza tipi di macchine Compute Engine (N1) a due o più nodi di previsione, i nodi vengono eseguiti in più zone all'interno della stessa regione. In questo modo, viene garantita la disponibilità continua in caso di interruzione in una delle zone. Scopri di più nella sezione sulla scalabilità di questo documento.

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

I tipi di macchine legacy (MLS1) sono disponibili nell'endpoint globale in molte regioni. I tipi di macchine legacy (MLS1) non sono disponibili negli endpoint regionali.

Supporto della previsione batch

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

Supporto del framework ML

Se utilizzi uno dei tipi di macchine di Compute Engine (N1), puoi creare la versione del modello con tutti gli elementi del modello descritti nella guida all'esportazione dei modelli di previsione, ad eccezione di due:

Per i tipi di macchine legacy (MLS1), puoi utilizzare qualsiasi tipo di elemento 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 Compute Engine (N1), devi utilizzare la versione di runtime 1.11 o successiva per la versione del modello.

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

Supporto per container personalizzato

Per utilizzare un contenitore personalizzato per pubblicare le predizioni online, devi utilizzare un tipo di macchina Compute Engine (N1).

Dimensioni massime del modello

Gli artefatti del modello che fornisci quando crei una versione del modello devono avere dimensioni totali dei file inferiori a 500 MB se utilizzi un tipo di macchina legacy (MLS1). Le dimensioni totali del file possono essere fino a 10 GB se utilizzi un tipo di macchina Compute Engine (N1).

Registrazione delle previsioni

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

Nodi di previsione con scalabilità

Sia il scaling automatico che quello manuale dei nodi di previsione hanno vincoli diversi a seconda che tu utilizzi un tipo di macchina Compute Engine (N1) o un tipo di macchina legacy (MLS1).

Scalabilità automatica

Se utilizzi un tipo di macchina Compute Engine (N1) con il scaling automatico, la versione del modello deve avere sempre almeno un nodo in esecuzione. In altre parole, il valore predefinito del autoScaling.minNodes campo 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. In questo modo viene garantita la disponibilità continua in caso di interruzione in una delle zone.

Tieni presente che se allocati più vCPU o RAM di quanto necessario per il tuo modello di machine learning, l'autoscaling potrebbe non funzionare correttamente. Ciò può causare problemi di prestazioni del modello. Prova a utilizzare tipi di macchine diversi per il tuo modello per assicurarti di non fornire troppe risorse di calcolo.

Se utilizzi un tipo di macchina legacy (MLS1), la versione del modello può essere scalata a zero nodi quando non riceve traffico: autoScaling.minNodes può essere impostato su 0 e lo è 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 comportare latenza o errori durante i periodi in cui AI Platform Prediction alloca un nuovo nodo per gestire le richieste dopo un periodo senza nodi. Scopri di più sul ridimensionamento a zero.

Scalabilità manuale

Se utilizzi un tipo di macchina 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 manualScaling.nodes campo su 2 o superiore, i nodi di previsione vengono eseguiti in più zone all'interno della stessa regione. In questo modo viene garantita la disponibilità continua in caso di interruzione in una delle zone.

Se utilizzi un tipo di macchina legacy (MLS1) con il ridimensionamento 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 i tipi di macchine Compute Engine (N1).