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:
- Numero di CPU virtuali (vCPU) per nodo
- Quantità di memoria per nodo
- Supporto delle GPU, che puoi aggiungere ad alcuni tipi di macchine
- Supporto di determinate funzionalità di AI Platform Prediction
- Prezzi
- Copertura dell'accordo sul livello del servizio (SLA)
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 | 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 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:
- 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 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 | Sì | 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 | Sì | No |
Copertura dello SLA per i tipi di macchine disponibili a livello generale | Sì, in alcuni casi | Sì |
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:
- Non puoi utilizzare una pipeline di 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 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).