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:
- Numero di CPU virtuali (vCPU) per nodo
- Quantità di memoria per nodo
- Supporto per le GPU, che puoi aggiungere ad alcuni tipi di macchina
- Supporto di alcune funzionalità di AI Platform Prediction
- Prezzi
- Copertura dell'accordo sul livello del servizio (SLA)
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 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-standard-4 |
Generalmente disponibile | 4 | 15 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-standard-8 |
Generalmente disponibile | 8 | 30 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-standard-16 |
Generalmente disponibile | 16 | 60 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-standard-32 |
Generalmente disponibile | 32 | 120 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highmem-2 |
Generalmente disponibile | 2 | 13 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highmem-4 |
Generalmente disponibile | 4 | 26 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highmem-8 |
Generalmente disponibile | 8 | 52 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highmem-16 |
Generalmente disponibile | 16 | 104 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highmem-32 |
Generalmente disponibile | 32 | 208 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highcpu-2 |
Generalmente disponibile | 2 | 1.8 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highcpu-4 |
Generalmente disponibile | 4 | 3.6 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highcpu-8 |
Generalmente disponibile | 8 | 7.2 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highcpu-16 |
Generalmente disponibile | 16 | 14.4 | Sì | TensorFlow, XGBoost e scikit-learn | 10 GB |
n1-highcpu-32 |
Generalmente disponibile | 32 | 28.8 | Sì | 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:
- Nell'elenco a discesa Scalabilità, seleziona Scalabilità automatica.
- Nel campo Numero minimo di nodi, inserisci
2
. - Nell'elenco a discesa Tipo di macchina, seleziona Standard > n1-standard-4.
- Nell'elenco a discesa Tipo di acceleratore, seleziona NVIDIA_TESLA_T4.
- 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 | Sì | 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 | Sì | No |
Copertura SLA per i tipi di macchina in disponibilità generale | Sì, in alcuni casi | Sì |
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:
- Non puoi utilizzare una pipeline scikit-learn con codice personalizzato.
- Non puoi utilizzare una routine di previsione personalizzata.
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).