1. Introduzione
Le istanze di notebook gestiti dall'utente di Vertex AI Workbench ti consentono di creare e gestire istanze di macchine virtuali (VM) di deep learning preconfigurate con JupyterLab.
Le istanze dei blocchi note gestiti dall'utente sono dotate di una suite preinstallata di pacchetti di deep learning, tra cui il supporto per i framework di TensorFlow e PyTorch. Puoi configurare istanze solo CPU o abilitate alla GPU.
Cosa creerai
Questo tutorial descrive il processo di deployment di un notebook sicuro gestito dall'utente basato sulle best practice di networking e sicurezza. Ecco i passaggi da seguire:
- Crea un VPC
- Crea un router Cloud e Cloud NAT
- Configura l'istanza del notebook con le impostazioni di sicurezza appropriate
Questo tutorial fornisce istruzioni dettagliate per ogni passaggio. Include anche suggerimenti e best practice per proteggere i notebook gestiti dagli utenti. La figura 1 mostra un'illustrazione del deployment che utilizza un VPC autonomo.
Figura 1

Cosa imparerai a fare
- Come determinare se una rete VPC condivisa o autonoma è adatta alla tua organizzazione
- Come creare un VPC autonomo
- Come creare un router Cloud e Cloud NAT
- Come creare un notebook gestito dall'utente
- Come accedere a un notebook gestito dall'utente
- Come monitorare l'integrità del notebook gestito dall'utente
- Come creare e applicare una pianificazione delle istanze
Che cosa ti serve
- Progetto Google Cloud
Autorizzazioni IAM
- Compute Network Admin
- Compute Security Admin
- Compute Instance Admin
- Amministratore Notebooks
- Amministratore spazio di archiviazione
- Project IAM Admin
- Amministratore account di servizio
- Utente Service Account
- Storage Object Viewer (applicato al service account)
- Utente Vertex AI (applicato al service account)
2. Rete VPC
In sostanza, una rete VPC è come una rete fisica, ad eccezione del fatto che è virtualizzata all'interno di Google Cloud. Una rete VPC è una risorsa globale formata da subnet regionali. Le reti VPC sono isolate logicamente tra loro in Google Cloud.
VPC autonomo
La Figura 2 mostra un esempio di VPC globale autonomo costituito da una subnet regionale (us-central1) oltre a Cloud Router e Cloud NAT utilizzati per consentire al notebook gestito dall'utente di stabilire in modo sicuro la connettività a internet.
Figura 2

VPC condiviso
Un VPC condiviso consente di esportare le subnet da una rete VPC in un progetto host ai progetti di servizio nella stessa organizzazione. Il progetto host contiene risorse di networking condivise con il progetto di servizio, come subnet, Cloud NAT e regole firewall. Il progetto di servizio contiene risorse a livello di applicazione che sfruttano le risorse di rete nel progetto host.
La figura 3 mostra un VPC condiviso globale, in cui l'infrastruttura di rete e di sicurezza viene implementata nel progetto host, mentre i carichi di lavoro vengono implementati nel progetto di servizio.
Figura 3

VPC autonomo e VPC condiviso
Una singola rete VPC è sufficiente per molti casi d'uso semplici, in quanto è più facile da creare, mantenere e comprendere rispetto ad alternative più complesse. Il VPC condiviso è uno strumento efficace per le organizzazioni con più team, in quanto consente di estendere la semplicità dell'architettura di una singola rete VPC su più gruppi di lavoro tramite l'utilizzo di progetti di servizio.
Best practice VPC utilizzata nel tutorial
- Abilita Cloud NAT per accedere al notebook.
- Attiva l'accesso privato Google quando crei le subnet.
- Crea regole firewall prescrittive per ridurre il traffico non richiesto, ad esempio non utilizzare 0.0.0.0/0 tcp, ma definisci gli indirizzi IP esatti di subnet o host.
- Sfrutta le policy firewall per ampliare l'ambito delle regole di ingresso, ad esempio geolocalizzazioni, elenchi di Threat Intelligence, nomi di dominio di origine e così via.
3. Best practice per Notebook
Dimensionare correttamente le istanze
- Interrompere e/o eliminare le istanze inutilizzate
- Utilizza un'istanza iniziale più piccola e itera con dati di esempio più piccoli
- Aumenta le istanze in base alle esigenze
- Sperimenta con set di dati più piccoli
Selezionare i tipi di macchina giusti
- VM ottimizzate per i costi
- Utilizzare al meglio le risorse hardware per ridurre i costi
- Fino al 31% di risparmio rispetto a N1
- Risparmi aggiuntivi (20-50%) per impegni di 1 o 3 anni
- Aumentare le dimensioni della macchina o aggiungere GPU può migliorare le prestazioni e superare gli errori di limitazioni della memoria.
Pianificare l'arresto delle istanze
- Disattiva le istanze quando sono inattive (paga solo l'archiviazione su disco)
- Pianifica l'arresto e l'avvio automatico delle istanze VM del notebook a orari specifici
Monitorare lo stato di integrità del notebook
- Le istanze di notebook gestiti dall'utente hanno uno strumento di diagnostica integrato che può aiutarti a monitorare l'integrità delle istanze.
Considerazioni sulla sicurezza
Di seguito sono riportate le considerazioni sulla sicurezza consigliate durante la creazione di un notebook gestito dall'utente:
- Seleziona l'opzione per l'accesso al notebook "solo per un utente". Se l'utente specificato non è il creatore dell'istanza, devi concedergli il ruolo Utente service account (roles/iam.serviceAccountUser) sul service account dell'istanza.
- Disattiva le seguenti opzioni:
- accesso root
- nbconvert
- download di file dall'interfaccia utente di JupyterLab
- Cloud NAT verrà utilizzato al posto dell'assegnazione di un indirizzo IP esterno al notebook gestito dall'utente.
- Seleziona le seguenti opzioni di calcolo:
- Avvio protetto
- Virtual Trusted Platform Module (vTPM)
- Monitoraggio dell'integrità
4. Prima di iniziare
Aggiornare il progetto per supportare il tutorial
Questo tutorial utilizza le variabili $per facilitare l'implementazione della configurazione di gcloud in Cloud Shell.
In Cloud Shell, esegui le seguenti operazioni:
gcloud config list project
gcloud config set project [your-project-name]
projectid=your-project-name
echo $projectid
5. Configurazione VPC
Crea il VPC autonomo
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute networks create securevertex-vpc --project=$projectid --subnet-mode=custom
Crea la subnet del notebook gestito dall'utente
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute networks subnets create securevertex-subnet-a --project=$projectid --range=10.10.10.0/28 --network=securevertex-vpc --region=us-central1 --enable-private-ip-google-access
Configurazione di Cloud Router e NAT
Cloud NAT viene utilizzato nel tutorial per i download dei pacchetti software del notebook perché l'istanza del notebook gestita dall'utente non ha un indirizzo IP esterno. Cloud NAT offre anche funzionalità NAT in uscita, il che significa che gli host internet non sono autorizzati a iniziare la comunicazione con un notebook gestito dall'utente, rendendolo più sicuro.
In Cloud Shell, crea il router cloud regionale.
gcloud compute routers create cloud-router-us-central1 --network securevertex-vpc --region us-central1
In Cloud Shell, crea il gateway Cloud NAT regionale.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1 --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
6. Crea un bucket di archiviazione
I bucket di archiviazione offrono caricamento/recupero sicuro dei file. Nel tutorial, l'archiviazione cloud conterrà uno script post-avvio per installare i pacchetti di AI generativa nei notebook gestiti dall'utente.
Crea un bucket Cloud Storage e sostituisci BUCKET_NAME con un nome univoco a livello globale che preferisci.
In Cloud Shell, crea un bucket di archiviazione univoco.
gsutil mb -l us-central1 -b on gs://BUCKET_NAME
Memorizza "BUCKET_NAME" per la durata del lab
BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME
7. Crea uno script post-avvio
Per attivare il download dei pacchetti di AI generativa, crea uno script post-avvio in Cloud Shell utilizzando l'editor vi o nano e salvalo come poststartup.sh.
#! /bin/bash
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Changing dir to /home/jupyter" >> /tmp/notebook_config.log 2>&1
cd /home/jupyter
echo "Cloning generative-ai from github" >> /tmp/notebook_config.log 2>&1
su - jupyter -c "git clone https://github.com/GoogleCloudPlatform/generative-ai.git" >> /tmp/notebook_config.log 2>&1
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Installing python packages" >> /tmp/notebook_config.log 2&1
su - jupyter -c "pip install --upgrade --no-warn-conflicts --no-warn-script-location --user \
google-cloud-bigquery \
google-cloud-pipeline-components \
google-cloud-aiplatform \
seaborn \
kfp" >> /tmp/notebook_config.log 2>&1
Esempio:
vpc_admin@cloudshell$ more poststartup.sh
#! /bin/bash
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Changing dir to /home/jupyter" >> /tmp/notebook_config.log 2>&1
cd /home/jupyter
echo "Cloning generative-ai from github" >> /tmp/notebook_config.log 2>&1
su - jupyter -c "git clone https://github.com/GoogleCloudPlatform/generative-ai.git" >> /tmp/notebook_config.log 2>&1
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Installing python packages" >> /tmp/notebook_config.log 2&1
su - jupyter -c "pip install --upgrade --no-warn-conflicts --no-warn-script-location --user \
google-cloud-bigquery \
google-cloud-pipeline-components \
google-cloud-aiplatform \
seaborn \
kfp" >> /tmp/notebook_config.log 2>&1
Carica lo script post-avvio nel bucket di archiviazione da Cloud Shell utilizzando gsutil
gsutil cp poststartup.sh gs://$BUCKET_NAME
8. Crea un account di servizio
Per fornire un controllo preciso del notebook gestito dall'utente, è necessario un service account. Una volta generate, le autorizzazioni del service account possono essere modificate in base ai requisiti aziendali. Nel tutorial, al service account verranno applicate le seguenti regole:
Prima di procedere, devi l'API Service Account.
In Cloud Shell, crea il service account.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
In Cloud Shell, aggiorna il service account con il ruolo Visualizzatore oggetti Storage
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.objectViewer"
In Cloud Shell, aggiorna il service account con il ruolo Utente Vertex AI
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
In Cloud Shell, elenca il service account e annota l'indirizzo email che verrà utilizzato durante la creazione del notebook gestito dall'utente.
gcloud iam service-accounts list
Esempio:
$ gcloud iam service-accounts list
DISPLAY NAME: user-managed-notebook-sa
EMAIL: user-managed-notebook-sa@my-project-id.iam.gserviceaccount.com
DISABLED: False
9. Crea un notebook gestito dall'utente sicuro
Un'istanza di notebook gestiti dall'utente è un'istanza di macchina virtuale Deep Learning con le librerie di machine learning e di data science più recenti preinstallate. Se vuoi, puoi includere GPU Nvidia per l'accelerazione hardware.
Abilita le API consumer
Crea il notebook gestito dall'utente
- Vai a Workbench
- Seleziona Blocchi note gestiti dall'utente, quindi Crea blocco note. Si apre la pagina Crea un notebook gestito dall'utente.
- Se è stato eseguito il deployment di un notebook esistente, seleziona Blocchi note gestiti dall'utente → Nuovo notebook → Personalizza.
- Nella pagina Crea un notebook gestito dall'utente, nella sezione Dettagli, fornisci le seguenti informazioni per la nuova istanza:
- Nome: fornisci un nome per la nuova istanza.
- Regione e zona: il tutorial utilizzerà la regione us-central1 e la zona us-central1-a
Selezionate Continua.
- Nella sezione Ambiente, fornisci quanto segue:
- Sistema operativo: seleziona il sistema operativo che vuoi utilizzare.
- Seleziona l'ambiente che vuoi utilizzare.
- Versione: seleziona la versione che vuoi utilizzare.
- Script post-avvio (facoltativo,utilizza lo script di AI generativa creato in precedenza). Seleziona Sfoglia per selezionare uno script da eseguire dopo l'avvio dell'istanza.
- Metadati: facoltativo: fornisci chiavi dei metadati personalizzate per l'istanza.
Selezionate Continua.
- Nella sezione Tipo di macchina, fornisci quanto segue:
- Tipo di macchina: seleziona il numero di CPU e la quantità di RAM per la nuova istanza. Vertex AI Workbench fornisce stime dei costi mensili per ogni tipo di macchina selezionato.
- Tipo di GPU: seleziona il tipo di GPU e il numero di GPU per la nuova istanza. Per informazioni sulle diverse GPU, consulta GPU su Compute Engine.
- Seleziona la casella di controllo Installa automaticamente il driver GPU NVIDIA.
Shielded VM
- Attiva Avvio protetto
- Attiva vTPM
- Attiva il monitoraggio dell'integrità
Selezionate Continua.
- Nella sezione Dischi, fornisci quanto segue:
- Dischi: (facoltativo) per modificare le impostazioni predefinite del disco di avvio o dei dati, seleziona il tipo di disco di avvio, le dimensioni del disco di avvio in GB, il tipo di disco dati e le dimensioni del disco dati in GB che preferisci. Per saperne di più sui tipi di disco, vedi Opzioni di archiviazione.
- Elimina nel cestino: (facoltativo) seleziona questa casella di controllo per utilizzare il comportamento predefinito del cestino del sistema operativo. Se utilizzi il comportamento predefinito del cestino, i file eliminati utilizzando l'interfaccia utente JupyterLab sono recuperabili, ma utilizzano spazio su disco.
- Backup: (facoltativo) per sincronizzare una posizione di Cloud Storage con il disco dati dell'istanza, seleziona Sfoglia e specifica la posizione di Cloud Storage. Per informazioni sui costi di archiviazione, consulta la pagina Prezzi di Cloud Storage.
- Crittografia: chiave di crittografia gestita da Google
Selezionate Continua.
- Nella sezione Networking, fornisci quanto segue:
- Networking: seleziona Reti in questo progetto o Reti condivise con me. Se utilizzi un VPC condiviso nel progetto host, devi concedere anche il ruolo Utente di rete Compute (roles/compute.networkUser) all'agente di servizio Notebooks dal progetto di servizio.
- Nel campo Rete, seleziona la rete che preferisci. Il tutorial utilizza la rete securevertex-vpc. Puoi selezionare una rete VPC, a condizione che la rete abbia l'accesso privato Google abilitato o possa accedere a internet. Nel campo Subnet, seleziona la subnet che preferisci. Nel tutorial viene utilizzata la subnet securevertex-subnet-a.
- Deseleziona Assegna indirizzo IP esterno
- Seleziona Consenti accesso proxy
Selezionate Continua.

- Nella sezione IAM e sicurezza, fornisci quanto segue:
- Seleziona Un solo utente e poi, nel campo Email utente, inserisci l'account utente a cui vuoi concedere l'accesso. Se l'utente specificato non è il creatore dell'istanza, devi concedergli il ruolo Utente service account (roles/iam.serviceAccountUser) sul service account dell'istanza.
- Deseleziona Utilizza il service account Compute Engine predefinito sulla VM per chiamare le API Google Cloud
- Inserisci l'indirizzo email del service account appena creato, ad esempio: user-managed-notebook-sa@my-project-id.iam.gserviceaccount.com
Opzioni di sicurezza
- Deseleziona Abilita l'accesso root all'istanza
- Deseleziona Abilita nbconvert
- Deseleziona Abilita il download di file dall'interfaccia utente di JupyterLab.
- Attiva terminale (deseleziona per gli ambienti di produzione)
Selezionate Continua.

- Nella sezione Integrità del sistema, fornisci quanto segue:
Upgrade dell'ambiente e integrità del sistema
- Seleziona la casella di controllo Abilita upgrade automatico dell'ambiente.
- Scegli se eseguire l'upgrade del notebook settimanalmente o mensilmente.
In Integrità del sistema e report, seleziona o deseleziona le seguenti caselle di controllo:
- Abilita report sull'integrità del sistema
- Segnala metriche personalizzate a Cloud Monitoring
- Installa agente Cloud Monitoring
Seleziona Crea.
10. Convalida
Vertex AI Workbench crea un'istanza di blocchi note gestiti dall'utente in base alle proprietà specificate e la avvia automaticamente. Quando l'istanza è pronta per l'uso, Vertex AI Workbench attiva un link Apri JupyterLab che consente all'utente finale di accedere al notebook.
11. Osservabilità
Monitora le metriche di sistema e delle applicazioni tramite Monitoring
Per le istanze di notebook gestite dall'utente in cui è installato Monitoring, puoi monitorare le metriche di sistema e delle applicazioni utilizzando la console Google Cloud:
- Nella console Google Cloud, vai alla pagina Notebook gestiti dall'utente.
- Fai clic sul nome dell'istanza di cui vuoi visualizzare le metriche di sistema e delle applicazioni.
- Nella pagina Dettagli notebook, fai clic sulla scheda Monitoraggio. Esamina le metriche di sistema e delle applicazioni per la tua istanza.
12. Crea una pianificazione del notebook
Le pianificazioni delle istanze ti consentono di avviare e arrestare automaticamente le istanze di macchine virtuali (VM). L'utilizzo delle pianificazioni delle istanze per automatizzare il deployment delle istanze VM può aiutarti a ottimizzare i costi e a gestire le istanze VM in modo più efficiente. Puoi utilizzare le pianificazioni delle istanze sia per i workload ricorrenti sia per quelli una tantum. Ad esempio, utilizza le pianificazioni delle istanze per eseguire le istanze VM solo durante l'orario di lavoro o per fornire la capacità per un evento una tantum.
Per utilizzare le pianificazioni delle istanze, crea una policy delle risorse che descriva il comportamento di avvio e arresto, quindi associala a una o più istanze VM.
Il tutorial ti mostrerà come creare una pianificazione dell'istanza che accenderà il notebook alle 7:00 e lo spegnerà alle 18:00.
Per creare la pianificazione dell'istanza, avrai bisogno delle autorizzazioni compute.instances.start e compute.instances.stop, pertanto è consigliabile un ruolo personalizzato creato dall'amministratore e concesso a te.
Una volta creato, il ruolo personalizzato verrà assegnato al service account Compute Engine predefinito nel tuo progetto, il che consentirà alla pianificazione delle istanze di avviare e arrestare il notebook.
Creare un ruolo personalizzato
In Cloud Shell, crea un ruolo personalizzato, VmScheduler, e includi le autorizzazioni necessarie.
gcloud iam roles create Vm_Scheduler --project=$projectid \
--title=vm-scheduler-notebooks \
--permissions="compute.instances.start,compute.instances.stop" --stage=ga
Descrivi il ruolo personalizzato da Cloud Shell.
gcloud iam roles describe Vm_Scheduler --project=$projectid
Esempio:
$ gcloud iam roles describe Vm_Scheduler --project=$projectid
etag: BwX991B0_kg=
includedPermissions:
- compute.instances.start
- compute.instances.stop
name: projects/$projectid/roles/Vm_Scheduler
stage: GA
title: vm-scheduler-notebooks
Aggiornare il service account predefinito
Nella sezione seguente, identificherai e aggiornerai il service account predefinito nel formato PROJECT_NUMBER-compute@developer.gserviceaccount.com.
In Cloud Shell, identifica il numero di progetto corrente.
gcloud projects list --filter=$projectid
In Cloud Shell, memorizza il numero di progetto come variabile.
project_number=your_project_number
echo $project_number
In Cloud Shell, aggiorna il service account Compute predefinito con il ruolo personalizzato VM_Scheduler.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler"
Crea la pianificazione delle istanze
In Cloud Shell, crea la pianificazione di avvio e arresto.
gcloud compute resource-policies create instance-schedule optimize-notebooks \
--region=us-central1 \
--vm-start-schedule='0 7 * * *' \
--vm-stop-schedule='0 18 * * *' \
--timezone=America/Chicago
In Cloud Shell, memorizza il nome del notebook.
gcloud compute instances list
notebook_vm=your_notebookvm_name
echo $notebook_vm
Puoi collegare una pianificazione delle istanze a qualsiasi istanza VM esistente che si trova nella stessa regione della pianificazione.
In Cloud Shell, associa la pianificazione al notebook.
gcloud compute instances add-resource-policies $notebook_vm \
--resource-policies=optimize-notebooks \
--zone=us-central1-a
13. Esegui la pulizia
Elimina il notebook gestito dall'utente dalla console, vai a Vertex AI → Workbench, seleziona ed elimina il notebook.
Da Cloud Shell, elimina i componenti VPC.
gcloud compute routers delete cloud-router-us-central1 --region=us-central1 --quiet
gcloud compute routers nats delete cloud-nat-us-central1 --region=us-central1 --router=cloud-router-us-central1 --quiet
gcloud compute instances remove-resource-policies $notebook_vm \
--resource-policies=optimize-notebooks \
--zone=us-central1-a --quiet
gcloud compute resource-policies delete optimize-notebooks --region=us-central1 --quiet
gcloud compute instances delete $notebook_vm --zone=us-central1-a --quiet
gcloud compute networks subnets delete securevertex-subnet-a --region=us-central1 --quiet
gcloud iam service-accounts delete user-managed-notebook-sa@$projectid.iam.gserviceaccount.com --quiet
gcloud projects remove-iam-policy-binding $projectid --member="serviceAccount:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler"
gcloud iam roles delete Vm_Scheduler --project=$projectid
gcloud compute networks delete securevertex-vpc --quiet
14. Complimenti
Ben fatto! Hai configurato e convalidato correttamente un notebook gestito dall'utente sicuro creando un VPC autonomo personalizzato utilizzando le best practice di protezione per i notebook gestiti e hai implementato una pianificazione delle istanze per ottimizzare la spesa.
Passaggi successivi
Dai un'occhiata ad alcuni di questi tutorial…
- Introduzione a Vertex Pipelines
- Job di addestramento personalizzato e previsione utilizzando il set di dati gestito
Ulteriori letture e video
- Guida introduttiva a Notebooks per il machine learning
- Inizia a utilizzare Vertex AI
- Introduzione all'AI generativa
Documenti di riferimento
- Introduzione a Vertex AI Workbench
- Introduzione ai blocchi note gestiti dall'utente
- Utilizzo di un'istanza di blocchi note gestiti dall'utente all'interno di un perimetro di servizio
- Crea un service account.
- Programmazione dell'avvio e dell'arresto di un'istanza VM