AI Platform Training offre l'addestramento dei modelli come servizio asincrono (batch).
Questa pagina descrive come configurare e inviare un job di addestramento eseguendo
gcloud ai-platform jobs submit training
dalla riga di comando o inviando una richiesta all'API su
projects.jobs.create.
Prima di iniziare
Prima di poter inviare un job di addestramento, devi Pacchettizzare la tua applicazione e caricarla. ed eventuali dipendenze insolite in un bucket Cloud Storage. Nota: se utilizzi Google Cloud CLI per inviare il tuo job, puoi pacchettizzare per presentare la candidatura e inviare il lavoro nello stesso passaggio.
Configurazione del job
Puoi passare i tuoi parametri al servizio di addestramento impostando i membri del
Job
, che include gli elementi nella
TrainingInput
.
Se utilizzi Google Cloud CLI per inviare i job di addestramento, puoi:
- Specifica i parametri di addestramento più comuni come flag
Comando
gcloud ai-platform jobs submit training
. - Passa i parametri rimanenti in un file di configurazione YAML,
config.yaml
per convenzione. Il file di configurazione rispecchia della rappresentazione JSON della risorsaJob
. Tu passa il percorso del tuo file di configurazione nel flag--config
dell'oggetto Comandogcloud ai-platform jobs submit training
. Pertanto, se il percorso del file di configurazione èconfig.yaml
, devi impostare--config=config.yaml
.
Raccolta dei dati di configurazione del job
Per definire il job vengono utilizzate le seguenti proprietà.
- Nome job (
jobId
) - Un nome da utilizzare per il job (lettere minuscole, numeri e trattini bassi) iniziando con una lettera).
- Configurazione del cluster (
scaleTier
) - Un livello di scalabilità
specificando il tipo di cluster di elaborazione su cui eseguire il job. Può essere
il livello di scalabilità
CUSTOM
, nel qual caso devi specificare anche in modo esplicito il numero e il tipo di macchine da utilizzare. - Configurazione disco (
diskConfig
) - Configurazione del disco di avvio per ogni VM di addestramento. Questo campo è facoltativo;
per impostazione predefinita, ogni VM viene eseguita con un avvio da 100 GB
pd-ssd
del disco. La specifica di questo campo potrebbe comportare costi aggiuntivi per il disco. - Pacchetto dell'applicazione di addestramento (
packageUris
) - Un'applicazione di addestramento in pacchetto che si trova in una fase intermedia in un ambiente Cloud Storage in ogni località. Se utilizzi Google Cloud CLI, l'applicazione di pacchettizzazione è in gran parte automatizzata. Leggi i dettagli nella guida per la pacchettizzazione dell'applicazione.
- Nome modulo (
pythonModule
) - Il nome del modulo principale nel tuo pacchetto. Il modulo principale è
il file Python che chiami per avviare l'applicazione. Se utilizzi
gcloud
per inviare il job, specifica il nome del modulo principale nel Flag--module-name
. Consulta la guida per la pacchettizzazione dell'applicazione. - Regione (
region
) - La regione Compute Engine in cui vuoi eseguire il job. Dovresti il job di addestramento nella stessa regione di Cloud Storage in cui sono archiviati i dati di addestramento. Consulta le regioni disponibili per AI Platform Training servizi.
- Directory del job (
jobDir
) - Il percorso di una località di Cloud Storage da utilizzare per l'output del job.
La maggior parte delle applicazioni di addestramento salva i checkpoint durante l'addestramento
addestrato in un file al termine del job. È necessaria una
Percorso di Cloud Storage in cui salvarle. Il tuo progetto Google Cloud
deve avere accesso in scrittura al bucket. La
il servizio di addestramento passa automaticamente il percorso impostato per la directory del job
all'applicazione di addestramento come argomento della riga di comando denominato
job_dir
. Tu può analizzarlo insieme agli altri argomenti dell'applicazione e usarlo il tuo codice. Il vantaggio di usare la directory dei job è che l'addestramento convalida la directory prima di avviare l'applicazione. - Versione runtime (
runtimeVersion
) - Il runtime di AI Platform Training da utilizzare per il job.
- Versione Python (
pythonVersion
) - La versione Python da utilizzare per il lavoro. Python 3.5 è disponibile nelle versioni del runtime 1.13 alla 1.14. Python 3.7 è disponibile nella versione del runtime 1.15 e successive.
- Tempo di attesa massimo (
scheduling.maxWaitTime
) - Una durata massima di attesa in secondi con il suffisso
s
(ad es.3600s
) che determina per quanto tempo consenti al tuo job di rimanere inQUEUED
ePREPARING
stati. AI Platform Training non inizia sempre a eseguire il job immediatamente a causa di vincoli delle risorse; specificare questo campo se non è disposto ad attendere più a lungo di una determinata durata per l'esecuzione del job. La una durata limitata inizia quando crei il job. Se il job non è stato ancora è entrato nello statoRUNNING
entro la fine di questo periodo, AI Platform Training annulla il job. Questo campo è facoltativo e per impostazione predefinita non ha alcun limite. Se specifichi questo campo, devi impostare il valore su almeno1800s
(30 minuti). - Tempo di esecuzione massimo (
scheduling.maxRunningTime
) - Una durata di esecuzione massima in secondi con il suffisso
s
(ad esempio,7200s
) per il tuo job di addestramento. La durata limitata inizia quando il job entra nello statoRUNNING
. Se il job è ancora in esecuzione dopo questo intervallo di di addestramento, AI Platform Training annulla il job. Questo campo è facoltativo e predefinito a sette giorni (604800s
). - Account di servizio (
serviceAccount
) - L'indirizzo email di un account di servizio che AI Platform Training può utilizzare durante l'esecuzione dell'applicazione di addestramento. In questo modo puoi addestrare delle applicazioni alle risorse Google Cloud senza concedere l'accesso all'agente di servizio AI Platform del tuo progetto. Questo campo è facoltativo. Scopri di più sui requisiti per il servizio personalizzato Google Cloud.
Formattazione dei parametri di configurazione
Il modo in cui specifichi i dettagli di configurazione dipende da come stai avviando un job di addestramento:
gcloud
Fornisci i dettagli di configurazione del job
Comando gcloud ai-platform jobs submit training
.
Puoi farlo in due modi:
- Con i flag della riga di comando.
- In un file YAML che rappresenta la risorsa
Job
. Puoi assegnare un nome questo file come preferisci. Per convenzione il nome èconfig.yaml
.
Anche se utilizzi un file YAML, alcuni dettagli devono essere forniti come
dalla riga di comando. Ad esempio, devi fornire il flag --module-name
e almeno uno tra --package-path
o --packages
. Se utilizzi
--package-path
, devi includere anche --job-dir
o --staging-bucket
.
Inoltre, devi fornire il flag --region
o impostare un valore predefinito
regione per gcloud
di destinazione.
Queste opzioni, e tutte quelle fornite come flag della riga di comando, sostituiranno
per queste opzioni nel file di configurazione.
Esempio 1: in questo esempio, hai scelto un cluster di macchine preconfigurato e fornisci tutti i dettagli richiesti sotto forma di flag della riga di comando quando il job. Non è necessario alcun file di configurazione. Consulta la guida all'invio del job nella sezione successiva.
Esempio 2: l'esempio seguente mostra i contenuti della configurazione per un job con un'elaborazione personalizzata cluster. Il file di configurazione include ma non tutti i dettagli di configurazione, supponendo che tu fornisca l'altra dettagli richiesti come i flag della riga di comando quando si invia il job.
trainingInput:
scaleTier: CUSTOM
masterType: complex_model_m
workerType: complex_model_m
parameterServerType: large_model
workerCount: 9
parameterServerCount: 3
runtimeVersion: '2.11'
pythonVersion: '3.7'
scheduling:
maxWaitTime: 3600s
maxRunningTime: 7200s
L'esempio precedente specifica Python la versione 3.7, disponibile quando si utilizza il runtime di AI Platform Training 1.15 o versioni successive. Inoltre, configura le macchine virtuali worker e server dei parametri; solo configurare queste macchine se esegui l'addestramento distribuito con TensorFlow di container personalizzati. Scopri di più sulla macchina di classificazione.
Python
Quando invii un job di addestramento
utilizzando la libreria client dell'API di Google per Python, imposta
la tua configurazione in un dizionario con la stessa struttura
Job
. Si tratta di un dizionario con due
chiavi: jobId
e trainingInput
, con i rispettivi dati corrispondenti al nome
per il job e un secondo dizionario con chiavi per gli oggetti
TrainingInput
.
L'esempio seguente mostra come creare una rappresentazione di un job per un job con un cluster di elaborazione personalizzato.
training_inputs = {
'scaleTier': 'CUSTOM',
'masterType': 'complex_model_m',
'workerType': 'complex_model_m',
'parameterServerType': 'large_model',
'workerCount': 9,
'parameterServerCount': 3,
'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'],
'pythonModule': 'trainer.task',
'args': ['--arg1', 'value1', '--arg2', 'value2'],
'region': 'us-central1',
'jobDir': 'gs://my/training/job/directory',
'runtimeVersion': '2.11',
'pythonVersion': '3.7',
'scheduling': {'maxWaitTime': '3600s', 'maxRunningTime': '7200s'},
}
job_spec = {'jobId': 'my_job_name', 'trainingInput': training_inputs}
Tieni presente che training_inputs
e job_spec
sono identificatori arbitrari: tu
puoi assegnare a questi dizionari il nome che preferisci. Tuttavia, le chiavi del dizionario
deve essere denominato esattamente come mostrato, affinché corrisponda a quelli in Job
e TrainingInput
.
L'esempio precedente specifica Python la versione 3.7, disponibile quando si utilizza il runtime di AI Platform Training 1.15 o versioni successive. Inoltre, configura le macchine virtuali worker e server dei parametri; solo configurare queste macchine se esegui l'addestramento distribuito con TensorFlow di container personalizzati. Scopri di più sulla macchina di classificazione.
Invio del job in corso...
Quando invii un job di addestramento, devi specificare due set di flag:
- Parametri di configurazione del job. AI Platform Training ha bisogno di questi valori per impostare le risorse nel cloud ed esegui il deployment della tua applicazione su ciascun nodo di elaborazione.
- Argomenti utente o parametri dell'applicazione. Pass di AI Platform Training il valore di questi flag alla tua applicazione.
Crea il tuo job:
gcloud
Invia un job di addestramento utilizzando
Comando gcloud ai-platform jobs submit training
.
Innanzitutto, è utile definire alcune variabili di ambiente contenenti della configurazione. Per creare un nome job, il seguente codice aggiunge la macro data e ora al nome del modello:
PACKAGE_PATH="/path/to/your/application/sources"
now=$(date +"%Y%m%d_%H%M%S")
JOB_NAME="your_name_$now"
MODULE_NAME="trainer.task"
JOB_DIR="gs://your/chosen/job/output/path"
REGION="us-east1"
RUNTIME_VERSION="2.11"
Il seguente job di invio corrisponde all'esempio 1 di configurazione
qui sopra, dove scegli un livello di scalabilità preconfigurato (basic
) e
se deciderai di fornire tutti i dettagli della configurazione
tramite flag della riga di comando. Là
non è necessario un file config.yaml
:
gcloud ai-platform jobs submit training $JOB_NAME \
--scale-tier basic \
--package-path $PACKAGE_PATH \
--module-name $MODULE_NAME \
--job-dir $JOB_DIR \
--region $REGION \
-- \
--user_first_arg=first_arg_value \
--user_second_arg=second_arg_value
Il seguente job di invio corrisponde all'esempio 2 di configurazione qui sopra, dove parte della configurazione è nel file e tu fornisci gli altri dettagli tramite flag della riga di comando:
gcloud ai-platform jobs submit training $JOB_NAME \
--package-path $PACKAGE_PATH \
--module-name $MODULE_NAME \
--job-dir $JOB_DIR \
--region $REGION \
--config config.yaml \
-- \
--user_first_arg=first_arg_value \
--user_second_arg=second_arg_value
Note:
- Se specifichi un'opzione sia nel file di configurazione
(
config.yaml
) e come flag della riga di comando, il valore nel riga di comando sostituisce il valore nel file di configurazione. - Il flag
--
vuoto segna la fine delgcloud
di segnalazioni specifiche e l'inizio delUSER_ARGS
da trasferire alla tua richiesta. - I flag specifici per AI Platform Training,
--module-name
,--runtime-version
e--job-dir
, deve precedere il flag--
vuoto. Il servizio AI Platform Training interpreta questi flag. - Il flag
--job-dir
, se specificato, deve precedere il carattere flag--
vuoto, perché AI Platform Training utilizza--job-dir
per convalidare il percorso. - La tua applicazione deve gestire anche il flag
--job-dir
se specificato. Anche se la bandiera precede il campo--
vuoto, Inoltre, il--job-dir
viene passato alla tua richiesta come flag della riga di comando. - Puoi definire tutti i
USER_ARGS
di cui hai bisogno. Pass di AI Platform Training:--user_first_arg
,--user_second_arg
e così via fino alla tua domanda.
Python
Puoi utilizzare lo Libreria client dell'API di Google per Python per chiamare il metodo API AI Platform Training e Prediction senza creare manualmente richieste HTTP. Prima di eseguire nell'esempio di codice, devi configurare l'autenticazione.
Salva l'ID progetto nel formato necessario alle API ('projects/_projectname'):
project_name = 'my_project_name' project_id = 'projects/{}'.format(project_name)
Ottieni una rappresentazione Python dei servizi AI Platform Training:
cloudml = discovery.build('ml', 'v1')
Forma la richiesta e inviala. Tieni presente che la pagina
job_spec
è stata creata nel passaggio precedente in cui hai formattato parametri di configurazionerequest = cloudml.projects().jobs().create(body=job_spec, parent=project_id) response = request.execute()
Rileva eventuali errori HTTP. Il modo più semplice è inserire il comando precedente in un blocco
try
:try: response = request.execute() # You can put your code for handling success (if any) here. except errors.HttpError, err: # Do whatever error response is appropriate for your application. # For this example, just send some text to the logs. # You need to import logging for this to work. logging.error('There was an error creating the training job.' ' Check the details:') logging.error(err._get_reason())
Passaggi successivi
- Monitorare o visualizzare il job di addestramento durante l'esecuzione.
- Leggi ulteriori informazioni su come specificare i tipi di macchina.
- Scopri come configurare un job di ottimizzazione degli iperparametri.
- Preparati a eseguire il deployment modello per la previsione.