Questo tutorial mostra come addestrare i modelli di ranking DLRM e DCN v2 che possono essere utilizzati per attività come la previsione della percentuale di clic (CTR). Consulta la nota in Eseguire la configurazione per il modello DLRM o DCN per scoprire come impostare i parametri per addestrare un modello di ranking DLRM o DCN 2.
Gli input del modello sono caratteristiche numeriche e categoriche e l'output è un tipo scalare (ad es. la probabilità di clic). Il modello può essere addestrato e valutato su Cloud TPU. I modelli di ranking profondo usano entrambi la memoria (per l'incorporamento tabelle e ricerche) e ad alta intensità di calcolo per reti profonde (MLP). Le TPU sono progettato per entrambi.
Il modello utilizza uno strato TPUEmbedding per le caratteristiche categoriche. L'embedding TPU supporta tabelle di embedding di grandi dimensioni con ricerca rapida. Le dimensioni delle tabelle di embedding aumentano in modo lineare con le dimensioni di un pod TPU. È possibile creare tabelle di incorporamento fino a 90 GB utilizzata per TPU v3-8, 5,6 TB per un pod v3-512 e 22,4 TB per un pod di TPU v3-2048.
Il codice del modello si trova nella libreria dei motori per suggerimenti di TensorFlow. mentre la pipeline di input, la configurazione e il loop di addestramento sono descritti nel TensorFlow Model Garden.
Obiettivi
- configura l'ambiente di addestramento
- Esegui il job di addestramento utilizzando dati sintetici
- Verificare i risultati di output
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
- Compute Engine
- Cloud TPU
- Cloud Storage
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
Prima di iniziare questo tutorial, verifica che il tuo progetto Google Cloud sia corretto configurazione.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
Questa procedura dettagliata utilizza i componenti fatturabili di Google Cloud. Consulta la pagina Prezzi per Cloud TPU per stimare i costi. Assicurati di pulire le risorse TPU che crei quando per evitare addebiti inutili.
Configura le risorse
Questa sezione fornisce informazioni sulla configurazione del bucket Cloud Storage, della VM e delle risorse Cloud TPU utilizzate da questo tutorial.
Apri una finestra di Cloud Shell.
Crea una variabile per l'ID del progetto.
export PROJECT_ID=project-id
Configura Google Cloud CLI in modo da utilizzare il progetto in cui vuoi creare Cloud TPU.
Per ulteriori informazioni sul comando
gcloud
, consulta la documentazione su Google Cloud CLI.gcloud config set project ${PROJECT_ID}
La prima volta che esegui questo comando in una nuova VM Cloud Shell, Pagina
Authorize Cloud Shell
visualizzata. Fai clic suAuthorize
nella parte inferiore della pagina per consentire agcloud
di effettuare chiamate API con le tue credenziali.Creare un account di servizio per il progetto Cloud TPU.
gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
Il comando restituisce un account di servizio Cloud TPU con il seguente formato:
service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
Crea un bucket Cloud Storage utilizzando il seguente comando, in cui l'opzione
--location
specifica la regione in cui deve essere creato il bucket. Per ulteriori dettagli su zone e regioni, consulta Tipi e zone:gcloud storage buckets create gs://bucket-name --project=${PROJECT_ID} --location=europe-west4
Questo bucket Cloud Storage archivia i dati che utilizzi per addestrare il modello e i risultati dell'addestramento. Lo strumento
gcloud compute tpus tpu-vm
utilizzato in questo tutorial configura le autorizzazioni predefinite per l'account di servizio Cloud TPU configurato nel passaggio precedente. Se vuoi autorizzazioni più granulari, rivedi le autorizzazioni a livello di accesso.La località del bucket deve trovarsi nella stessa regione di Compute Engine (VM) e il tuo nodo Cloud TPU.
Avvia una VM di Compute Engine e Cloud TPU utilizzando il comando
gcloud
.$ gcloud compute tpus tpu-vm create dlrm-dcn-tutorial \ --zone=europe-west4-a \ --accelerator-type=v3-8 \ --version=tpu-vm-tf-2.17.0-se
Descrizioni flag di comando
zone
- La zona in cui prevedi di creare la tua Cloud TPU.
accelerator-type
- Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, vedi Versioni TPU.
version
- La versione software di Cloud TPU.
Connettiti all'istanza Compute Engine tramite SSH. Quando sei connesso alla VM, il prompt della shell cambia da
username@projectname
ausername@vm-name
:gcloud compute tpus tpu-vm ssh dlrm-dcn-tutorial --zone=europe-west4-a
Imposta le variabili del bucket Cloud Storage
Configura le seguenti variabili di ambiente, sostituendo bucket-name con il nome del tuo bucket Cloud Storage:
(vm)$ export STORAGE_BUCKET=gs://bucket-name (vm)$ export PYTHONPATH="/usr/share/tpu/models/:${PYTHONPATH}" (vm)$ export EXPERIMENT_NAME=dlrm-exp
Imposta una variabile di ambiente per il nome della TPU.
(vm)$ export TPU_NAME=local
L'applicazione di addestramento si aspetta che i dati di addestramento siano accessibili in Cloud Storage. L'applicazione di addestramento utilizza anche il tuo bucket Cloud Storage per archiviare i checkpoint durante l'addestramento.
Configura per eseguire il modello DLRM o DCN con dati sintetici
Il modello può essere addestrato su vari set di dati. Due tra i più utilizzati sono Criteo Terabyte e Criteo Kaggle.
Questo tutorial addestra i dati sintetici impostando il flag use_synthetic_data=True
.
Il set di dati sintetico è utile solo per capire come utilizzare Cloud TPU e convalidare le prestazioni end-to-end. L'accuratezza i numeri e il modello salvato non saranno significativi.
Visita Criteo Terabyte e Criteo Kaggle siti web per informazioni su come scaricare pre-elaborazione di questi set di dati.
Installa i pacchetti richiesti.
(vm)$ pip3 install tensorflow-recommenders (vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
Passa alla directory dello script.
(vm)$ cd /usr/share/tpu/models/official/recommendation/ranking
Esegui lo script di addestramento. Viene utilizzato un set di dati falso simile a Criteo per addestrare il modello DLRM. L'addestramento richiede circa 20 minuti.
export EMBEDDING_DIM=32 python3 train.py --mode=train_and_eval \ --model_dir=${STORAGE_BUCKET}/model_dirs/${EXPERIMENT_NAME} --params_override=" runtime: distribution_strategy: 'tpu' task: use_synthetic_data: true train_data: input_path: '${DATA_DIR}/train/*' global_batch_size: 16384 validation_data: input_path: '${DATA_DIR}/eval/*' global_batch_size: 16384 model: num_dense_features: 13 bottom_mlp: [512,256,${EMBEDDING_DIM}] embedding_dim: ${EMBEDDING_DIM} top_mlp: [1024,1024,512,256,1] interaction: 'dot' vocab_sizes: [39884406, 39043, 17289, 7420, 20263, 3, 7120, 1543, 63, 38532951, 2953546, 403346, 10, 2208, 11938, 155, 4, 976, 14, 39979771, 25641295, 39664984, 585935, 12972, 108, 36] trainer: use_orbit: false validation_interval: 1000 checkpoint_interval: 1000 validation_steps: 500 train_steps: 1000 steps_per_loop: 1000 "
Questo addestramento viene eseguito per circa 10 minuti su una TPU v3-8. Al termine, visualizzerai messaggi simili ai seguenti:
I0621 21:32:58.519792 139675269142336 tpu_embedding_v2_utils.py:907] Done with log of TPUEmbeddingConfiguration. I0621 21:32:58.540874 139675269142336 tpu_embedding_v2.py:389] Done initializing TPU Embedding engine. 1000/1000 [==============================] - 335s 335ms/step - auc: 0.7360 - accuracy: 0.6709 - prediction_mean: 0.4984 - label_mean: 0.4976 - loss: 0.0734 - regularization_loss: 0.0000e+00 - total_loss: 0.0734 - val_auc: 0.7403 - val_accuracy: 0.6745 - val_prediction_mean: 0.5065 - val_label_mean: 0.4976 - val_loss: 0.0749 - val_regularization_loss: 0.0000e+00 - val_total_loss: 0.0749 Model: "ranking" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= tpu_embedding (TPUEmbedding) multiple 1 _________________________________________________________________ mlp (MLP) multiple 154944 _________________________________________________________________ mlp_1 (MLP) multiple 2131969 _________________________________________________________________ dot_interaction (DotInteract multiple 0 _________________________________________________________________ ranking_1 (Ranking) multiple 0 ================================================================= Total params: 2,286,914 Trainable params: 2,286,914 Non-trainable params: 0 _________________________________________________________________ I0621 21:43:54.977140 139675269142336 train.py:177] Train history: {'auc': [0.7359596490859985], 'accuracy': [0.67094486951828], 'prediction_mean': [0.4983849823474884], 'label_mean': [0.4975697994232178], 'loss': [0.07338511198759079], 'regularization_loss': [0], 'total_loss': [0.07338511198759079], 'val_auc': [0.7402724623680115], 'val_accuracy': [0.6744520664215088], 'val_prediction_mean': [0.5064718723297119], 'val_label_mean': [0.4975748658180237], 'val_loss': [0.07486172765493393], 'val_regularization_loss': [0], 'val_total_loss': [0.07486172765493393]}
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Se non l'hai ancora fatto, disconnetti dall'istanza Compute Engine:
(vm)$ exit
Il tuo prompt ora dovrebbe essere
username@projectname
per indicare che stai in Cloud Shell.Elimina le risorse Cloud TPU.
$ gcloud compute tpus tpu-vm delete dlrm-dcn-tutorial \ --zone=europe-west4-a
Verifica che le risorse siano state eliminate eseguendo
gcloud compute tpus tpu-vm list
. L'eliminazione potrebbe richiedere alcuni minuti. L'output del comando seguente non devono includere nessuna delle risorse create in questo tutorial:$ gcloud compute tpus tpu-vm list --zone=europe-west4-a
Elimina il bucket Cloud Storage utilizzando la CLI gcloud. Sostituisci bucket-name con il nome del tuo bucket Cloud Storage.
$ gcloud storage rm gs://bucket-name --recursive
Passaggi successivi
I tutorial di TensorFlow Cloud TPU generalmente addestrano il modello utilizzando un set di dati di esempio. I risultati di questo addestramento non sono utilizzabili per l'inferenza. A per l'inferenza, puoi addestrare i dati su una o il tuo set di dati. Modelli TensorFlow addestrati su Cloud TPU richiedono generalmente che i set di dati siano TFRecord.
Puoi utilizzare lo strumento di conversione dei set di dati sample per convertire un'immagine in formato TFRecord. Se non utilizzi un modello di classificazione delle immagini, dovrai convertire autonomamente il tuo set di dati in formato TFRecord. Per ulteriori informazioni, consulta TFRecord e tf.Example.
Ottimizzazione degli iperparametri
Per migliorare le prestazioni del modello con il tuo set di dati, puoi ottimizzare e regolare gli iperparametri. Puoi trovare informazioni sugli iperparametri comuni a tutti i modelli supportati da TPU su GitHub. Puoi trovare informazioni sugli iperparametri specifici del modello nella fonte per ciascuno un modello di machine learning. Per ulteriori informazioni sull'ottimizzazione degli iperparametri, consulta la Panoramica delle ottimizzazione degli iperparametri e Tune e regolare gli iperparametri.
Inferenza
Una volta addestrato il modello, puoi utilizzarlo per l'inferenza (chiamato anche previsione). Puoi utilizzare lo strumento di conversione per l'inferenza Cloud TPU per preparare e ottimizzare un modello TensorFlow per l'inferenza su Cloud TPU v5e. Per ulteriori informazioni sull'inferenza su Cloud TPU v5e, consulta l'introduzione all'inferenza su Cloud TPU v5e.