Scelta di un tipo di macchina per la previsione online

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

I tipi di macchine si differenziano in diversi modi:

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

Tipi di macchina disponibili

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

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

Nome Disponibilità vCPU 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 del codice), le routine di previsione personalizzate 500 MB
mls1-c4-m2 Beta 4 2 No TensorFlow, XGBoost, scikit-learn (incluse pipeline con del codice), le 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 di ogni macchina del testo. Scopri di più sulle informazioni dettagliate specifiche dei tipi di macchine di Compute Engine (N1) Compute Engine documentazione.

Specifica di un tipo di macchina

Puoi specificare la scelta del tipo di macchina quando crei un modello dell'audiodescrizione. In caso contrario specifica un tipo di macchina, per impostazione predefinita la versione del modello utilizza l'utilizzo n1-standard-2 se utilizzi una regione endpoint e mls1-c1-m2 se usano l'endpoint globale.

Le seguenti istruzioni evidenziano come specificare un tipo di macchina quando per creare una versione del modello. Usano il tipo di macchina n1-standard-4 come esempio. Per informazioni sull'intero processo di creazione di una versione del modello, leggi la guida alle deployment dei modelli.

Console Google Cloud

Nella sezione Crea versione , apri la nell'elenco a discesa Tipo di macchina e seleziona Standard > n1-standard-4,

gcloud

Dopo aver caricato gli artefatti del modello in Cloud Storage e una risorsa del modello, puoi creare 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 il parametro Libreria client dell'API di Google per Python. Prima di eseguire nell'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 del modello projects.models.versions.create: 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 facoltativamente aggiungere GPU per accelerare di previsione. Per utilizzare le GPU, devi tenere conto di diversi requisiti:

  • Puoi utilizzare GPU solo con 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 TensorFlow SavedModel. Non puoi utilizzare GPU per 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 e in cui regioni.
  • Puoi usare un solo tipo di GPU per la versione del tuo modello Limitazioni al numero di GPU che puoi aggiungere in base al tipo di macchina che stai utilizzando. Queste limitazioni sono descritte nella tabella seguente.

La tabella seguente mostra le GPU disponibili per la previsione online e il numero di ciascun tipo di GPU che 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 e 8 2, 4 2, 4 2, 4 4 e 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 e 8 2, 4 2, 4 2, 4 4 e 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 e 8 2, 4 2, 4 2, 4 4 e 8

Le GPU sono facoltative e comportano costi aggiuntivi.

Specifica le 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. Puoi scalabilità automatica (anteprima) o scalabilità manuale (GA) i nodi di previsione, ma il numero di GPU ciascuna dei nodi è fissato durante la creazione della versione del modello. A meno che tu non abbia caso d'uso avanzato, consigliamo di configurare una GPU per ogni previsione node; in altre parole, imposta il conteggio degli acceleratori su 1.

Le istruzioni seguenti mostrano come specificare le GPU per la previsione online in base a creando una versione del modello 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 SavedModel di TensorFlow in Cloud Storage e creato un modello risorsa in una regione che supporta per uso generico di CPU.

Console Google Cloud

Segui la guida per creare un modello dell'audiodescrizione. Il giorno Nella pagina Crea versione, specifica le opzioni seguenti:

  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, della versione viene eseguita su nodi di previsione n1-standard-4 che utilizzano ciascuno GPU. AI Platform Prediction scala automaticamente il di nodi di previsione a un numero compreso tra 2 e 4, a seconda dell'utilizzo della GPU in qualsiasi momento. Nell'esempio viene utilizzato 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 parole.

Python

Questo esempio utilizza il parametro Libreria client dell'API di Google per Python. Prima di eseguire nell'esempio di codice, devi configurare l'autenticazione.

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

Invia una richiesta al projects.models.versions.create e specificare i valori machineType, acceleratorConfig e manualScaling campi 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 viene specificato in maiuscolo con trattini bassi tra le parole.

Differenze tra i tipi di macchina

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

Tipi di macchine di Compute Engine (N1) Tipi di macchine legacy (MLS1)
Regioni Tutte le regioni di endpoint a livello di regione Tutte le regioni di endpoint globali
Tipi di artefatti ML
Versioni runtime 1.11 o versioni successive Tutte le AI Platform disponibili versioni di runtime
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 di AI Explanations Sì (solo TensorFlow) No
Supporto dei Controlli di servizio VPC No
Copertura SLA per i tipi di macchine in disponibilità generale Sì, in alcuni casi

Le seguenti sezioni forniscono spiegazioni dettagliate sulle differenze tra i vari 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 in una endpoint. Quando utilizzi un tipo di macchina Compute Engine (N1), non puoi il deployment del modello nell'endpoint globale.

Quando scali una versione di un modello che utilizza tipi di macchine di Compute Engine (N1) a due o più previsioni nodi, vengono eseguiti in più zone all'interno della stessa regione. Ciò garantisce disponibilità continua in caso di interruzione in una delle zone. Scopri di più in la 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 a regione.

I tipi di macchine legacy (MLS1) sono disponibili nell'endpoint globale in molti regioni. I tipi di macchine legacy (MLS1) non sono disponibili a livello di regione endpoint.

Supporto per le previsioni batch

Le versioni del modello che utilizzano il tipo di macchina mls1-c1-m2 supportano batch per la previsione. Versioni del modello che utilizzano un'altra macchina non supportano la previsione batch.

Supporto di framework ML

Se utilizzi un tipo di macchina Compute Engine (N1), puoi creare la versione del modello con tutte gli artefatti del modello descritti nella sezione Esportazione di modelli di previsione guida, fatta eccezione per due:

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

Supporto della versione di runtime

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

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

Supporto per container personalizzato

Per utilizzare un container personalizzato per la pubblicazione online devi utilizzare un tipo di macchina Compute Engine (N1).

Dimensione massima del modello

Gli artefatto del modello che fornisci quando crei una versione del modello, le dimensioni totali del file devono essere 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).

Logging delle previsioni

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

Scalabilità dei nodi di previsione

Scalabilità automatica e scalabilità manuale della previsione nodi entrambi hanno vincoli diversi a seconda che venga utilizzata o meno Tipo di macchina Compute Engine (N1) o legacy (MLS1).

Scalabilità automatica

Se utilizzi un tipo di macchina Compute Engine (N1) con automatico della scalabilità, la versione del modello deve avere almeno un nodo in esecuzione. In altre parole, lo standard autoScaling.minNodes della versione campo il valore predefinito è 1 e non può essere inferiore a 1. Se imposti autoScaling.minNodes su 2 o 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 allochi più vCPU o RAM rispetto al tuo modello di machine learning la scalabilità automatica potrebbe non funzionare correttamente. Ciò può causare problemi con il modello delle prestazioni. Prova a utilizzare diversi tipi di macchina per far sì che il modello non devi 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: puoi impostare autoScaling.minNodes su 0, ed è impostato su 0 per impostazione predefinita. Scalando fino a zero puoi ridurre i costi quando il modello la versione precedente non riceve richieste di previsione. Tuttavia, può anche portare a di latenza o errori durante i periodi in cui AI Platform Prediction alloca nuovo nodo per gestire le richieste dopo un periodo senza nodi. Scopri di più su scalando fino a zero.

Scalabilità manuale

Se utilizzi un tipo di macchina Compute Engine (N1) con manuale della scalabilità, puoi aggiornare il numero di nodi di previsione in esecuzione in qualsiasi momento utilizzando il metodo projects.models.versions.patch: API. Se imposti la proprietà manualScaling.nodes campo a 2 o maggiore, 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 eseguire l'aggiornamento il numero di nodi di previsione dopo la creazione della versione del modello. Se vuoi per 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 potrai creare che utilizzano tipi di macchine legacy (MLS1). Devi utilizzare tipi di macchine di Compute Engine (N1).