Scelta di un tipo di macchina per la previsione online

AI Platform Prediction alloca i 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:

Se selezioni un tipo di macchina con più risorse di elaborazione, puoi eseguire previsioni con una latenza più bassa o gestire più richieste di previsione contemporaneamente.

Tipi di macchine disponibili

I tipi di macchine Compute Engine (N1) e mls1-c1-m2 sono generalmente disponibili 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 Dimensione massima del modello
mls1-c1-m2 (valore predefinito sull'endpoint globale) Disponibilità generale 1 2 No TensorFlow, XGBoost, scikit-learn (comprese pipeline con codice personalizzato), routine di previsione personalizzate 500 MB
mls1-c4-m2 Beta 4 2 No TensorFlow, XGBoost, scikit-learn (comprese pipeline con codice personalizzato), routine di previsione personalizzate 500 MB
n1-standard-2 (valore predefinito sugli endpoint a livello di area geografica) Disponibilità generale 2 7,5 TensorFlow, XGBoost e scikit-learn 10 GB
n1-standard-4 Disponibilità generale 4 15 TensorFlow, XGBoost e scikit-learn 10 GB
n1-standard-8 Disponibilità generale 8 30 TensorFlow, XGBoost e scikit-learn 10 GB
n1-standard-16 Disponibilità generale 16 60 TensorFlow, XGBoost e scikit-learn 10 GB
n1-standard-32 Disponibilità generale 32 120 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highmem-2 Disponibilità generale 2 13 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highmem-4 Disponibilità generale 4 26 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highmem-8 Disponibilità generale 8 52 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highmem-16 Disponibilità generale 16 104 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highmem-32 Disponibilità generale 32 208 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highcpu-2 Disponibilità generale 2 1.8 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highcpu-4 Disponibilità generale 4 3,6 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highcpu-8 Disponibilità generale 8 7,2 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highcpu-16 Disponibilità generale 16 14,4 TensorFlow, XGBoost e scikit-learn 10 GB
n1-highcpu-32 Disponibilità generale 32 28,8 TensorFlow, XGBoost e scikit-learn 10 GB

Scopri i prezzi per ogni tipo di macchina. Scopri di più sulle specifiche dettagliate dei tipi di macchine Compute Engine (N1) nella documentazione di Compute Engine.

Specificare un tipo di macchina

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

Le istruzioni seguenti spiegano come specificare un tipo di macchina quando crei una versione modello. Ad esempio, utilizza il tipo di macchina n1-standard-4. Per informazioni sull'intero processo di creazione di una versione del modello, consulta la guida al deployment dei modelli.

console

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 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.8 \
  --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 questo esempio di codice, devi configurare l'autenticazione.

Dopo aver caricato gli artefatti del modello in 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.8',
    '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, in via facoltativa, puoi aggiungere 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 se esegui il deployment di un elemento TensorFlow SavedModel. Non puoi utilizzare GPU per i modelli scikit-learn o XGBoost.
  • La disponibilità di ogni tipo di GPU varia a seconda dell'area geografica che utilizzi per il tuo modello. Scopri quali tipi di GPU sono disponibili in quali aree geografiche.
  • Puoi utilizzare un solo tipo di GPU per la versione del tuo modello e ci sono limitazioni al numero di GPU che puoi aggiungere a seconda del tipo di macchina in uso. Nella tabella seguente sono descritte queste limitazioni.

La tabella seguente mostra le GPU disponibili per la previsione online e quanti di questi tipi di GPU puoi utilizzare con ogni 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.

Specifica delle GPU

Specifica le GPU quando crei una versione del modello. AI Platform Prediction assegna il numero e il tipo di GPU specificati per ogni nodo di previsione. Puoi scalare automaticamente (anteprima) o scalare 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 disponga di un caso d'uso avanzato, ti consigliamo di configurare una GPU per ogni nodo di previsione; in altre parole, imposta il conteggio dell'acceleratore su 1.

Le seguenti istruzioni mostrano come specificare le GPU per la previsione online creando una versione modello che venga eseguita su almeno due nodi di previsione alla volta. 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 salvato in Cloud Storage e creato una risorsa modello in un'area geografica che supporta GPU.

console

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

  1. Nell'elenco a discesa Ridimensiona, 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 accelerator, seleziona NVIDIA_TESLA_T4.
  5. Nell'elenco a discesa Conteggio degli acceleratori, seleziona 1.

gcloud

Utilizza l'interfaccia a riga di comando gcloud per creare una versione del modello. In questo esempio, la versione viene eseguita su nodi di previsione n1-standard-4 che utilizzano ognuno 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 dato momento. L'esempio utilizza l'endpoint a livello di area geografica us-central1:

gcloud beta ai-platform versions create VERSION_NAME \
  --model MODEL_NAME \
  --origin gs://model-directory-uri \
  --runtime-version 2.8 \
  --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 dell'API di Google per Python. Prima di eseguire questo esempio di codice, devi configurare l'autenticazione.

L'esempio utilizza l'endpoint dell'area geograficaus-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.8',
    '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 e sottolineato tra le parole.

Differenze tra i tipi di macchina

Oltre a fornire diverse risorse di calcolo, i tipi di macchine variano anche nel supporto di alcune 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 aree geografiche endpoint a livello di area geografica Tutte le aree geografiche 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 la creazione della versione del modello
Supporto GPU Sì (solo TensorFlow) No
Supporto AI Explanations Sì (solo TensorFlow) No
Supporto dei Controlli di servizio VPC No
Copertura SLA per tipi di macchine disponibili a livello generale Sì, in alcuni casi

Le sezioni seguenti 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 area geografica. Se utilizzi un tipo di macchina Compute Engine (N1), non puoi eseguire il deployment del modello sull'endpoint globale.

Quando ridimensioni una versione del modello che utilizza i tipi di macchine di Compute Engine (N1) a due o più nodi di previsione, i nodi vengono eseguiti in più zone all'interno della stessa area geografica. Ciò garantisce la disponibilità continua in caso di interruzione in una delle zone. Scopri di più nella sezione Ridimensionamento di questo documento.

Tieni presente che la disponibilità della GPU per i tipi di macchine di Compute Engine (N1) varia anche a seconda dell'area geografica.

I tipi di macchine legacy (MLS1) sono disponibili nell'endpoint globale in molte aree geografiche. I tipi di macchine legacy (MLS1) non sono disponibili sugli endpoint a livello di area geografica.

Supporto della previsione batch

Le versioni del 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 la previsione 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 artefatti del modello descritti nella esportazione dei modelli di previsione, ad eccezione di due:

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

Supporto per le versioni di runtime

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

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

Supporto per container personalizzato

Per utilizzare un contenitore personalizzato per fornire previsioni online, devi usare un tipo di macchina Compute Engine (N1).

Dimensione massima del modello

Gli artefatto 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). La dimensione totale del file può arrivare fino a 10 GB se utilizzi un tipo di macchina Compute Engine (N1).

Previsioni di logging

Per i tipi di macchine di Compute Engine (N1), il log 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 Compute Engine (N1) o un tipo di macchina legacy (MLS1).

Scalabilità automatica

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

Tieni presente che se assegni più vCPU o RAM di quanto necessario al tuo modello di machine learning, la scalabilità automatica potrebbe non funzionare correttamente. Questo può causare problemi di prestazioni del modello. Prova a utilizzare diversi tipi di macchine per il modello per assicurarti di non fornire troppe risorse di calcolo.

Se utilizzi un tipo di macchina legacy (MLS1), la versione del modello può scalare su zero nodi quando non riceve traffico: autoScaling.minNodes può essere impostato su 0 e per impostazione predefinita è impostato su 0. La scalabilità a zero può ridurre i costi quando la versione del modello non riceve richieste di previsione. Tuttavia, può anche causare latenza o errori in tutti i periodi in cui AI Platform Prediction alloca un nuovo nodo per gestire le richieste dopo un periodo pari a zero. Scopri di più sulla scalabilità 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 campo manualScaling.nodes su 2 o su un valore maggiore, i nodi di previsione vengono eseguiti in più zone all'interno della stessa area geografica. 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 i Controlli di servizio VPC per proteggere le previsioni di AI Platform, non puoi creare versioni che utilizzano i tipi di macchine legacy (MLS1). Devi utilizzare i tipi di macchine di Compute Engine (N1).