Questo documento spiega come integrare Managed Lustre con GKE per creare un ambiente ottimizzato per workload impegnativi e con uso intensivo di dati come intelligenza artificiale (AI), machine learning (ML) e computing ad alte prestazioni (HPC).
In questo documento esegui il provisioning di un cluster GKE con XPK, crea un'istanza Managed Lustre e la colleghi al cluster. Per testare questa configurazione, esegui un carico di lavoro sui nodi di cui viene eseguito il provisioning con avvio flessibile.
Questo documento è destinato a machine learning engineer e specialisti di dati e AI interessati a esplorare le funzionalità di orchestrazione dei container Kubernetes supportate dalle istanze Managed Lustre. Per saperne di più sui ruoli comuni e sulle attività di esempio a cui viene fatto riferimento nei contenuti di Google Cloud , consulta Ruoli e attività comuni degli utenti GKE.
Sfondo
Questa sezione descrive le tecnologie chiave utilizzate in questo documento:
XPK
XPK è uno strumento che semplifica il provisioning e la gestione di cluster e workload GKE, in particolare per le attività di AI/ML. XPK consente di generare un'infrastruttura preconfigurata e ottimizzata per l'addestramento, il che la rende una buona opzione per le prove concettuali e gli ambienti di test.
Puoi creare un cluster che utilizza le TPU utilizzando Google Cloud CLI o un kit di elaborazione accelerata (XPK).
- Utilizza gcloud CLI per creare manualmente l'istanza del cluster GKE per una personalizzazione o un'espansione precisa degli ambienti GKE di produzione esistenti.
- Utilizza XPK per creare rapidamente cluster GKE ed eseguire workload per prove concettuali e test. Per saperne di più, consulta il file README di XPK.
Questo documento utilizza XPK esclusivamente per il provisioning e la gestione delle risorse.
Per saperne di più, consulta la documentazione relativa al kit di elaborazione accelerata (XPK).
Avvio flessibile
L'avvio flessibile consente di ottimizzare il provisioning delle TPU pagando solo le risorse necessarie. L'avvio flessibile è consigliato se il tuo workload richiede risorse di cui viene eseguito il provisioning dinamico in base alle necessità, per un massimo di sette giorni e un accesso conveniente.
Questo documento utilizza l'avvio flessibile come esempio di opzione di consumo, ma puoi utilizzare anche altre opzioni, ad esempio le prenotazioni o Spot. Per maggiori informazioni, consulta Informazioni sulle opzioni di consumo degli acceleratori per i carichi di lavoro AI/ML in GKE.
Managed Lustre
Managed Lustre è un servizio di file system parallelo ad alte prestazioni progettato per carichi di lavoro impegnativi. Il driver CSI di Managed Lustre consente di integrare le istanze Managed Lustre con GKE utilizzando le richieste di volumi permanenti (PVC) e i volumi permanenti (PV) standard di Kubernetes. Questo driver è particolarmente utile per i carichi di lavoro AI, ML e HPC che richiedono spazio di archiviazione persistente, scalabile e ad alta velocità effettiva.
Per saperne di più, consulta la pagina Informazioni sul driver CSI Managed Lustre.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Abilita l'API Google Cloud Managed Lustre e l'API Google Kubernetes Engine. Abilita le API
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza
gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il comando
gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
prepara l'ambiente
Questa sezione mostra come preparare l'ambiente del cluster.
Nella nuova finestra del terminale, crea un ambiente virtuale:
VENV_DIR=~/venvp4;python3 -m venv $VENV_DIR;source $VENV_DIR/bin/activateInstalla XPK seguendo i passaggi descritti nel file Installazione di XPK. Utilizza
pip installanziché la clonazione dall'origine.Imposta le variabili di ambiente predefinite:
gcloud config set project PROJECT_ID gcloud config set billing/quota_project PROJECT_ID export PROJECT_ID=$(gcloud config get project) export LOCATION=LOCATION export CLUSTER_NAME=CLUSTER_NAME export GKE_VERSION=VERSION export NETWORK_NAME=NETWORK_NAME export IP_RANGE_NAME=IP_RANGE_NAME export FIREWALL_RULE_NAME=FIREWALL_RULE_NAME export ACCELERATOR_TYPE=v6e-16 export NUM_SLICES=1Sostituisci i seguenti valori:
- PROJECT_ID: il tuo Google Cloud ID progetto.
- LOCATION: la zona del cluster GKE. Seleziona una zona per le istanze sia flessibili che
Managed Lustre. Ad esempio,
us-west4-a. Per i valori di throughput validi, consulta Informazioni sul provisioning di GPU e TPU con la modalità di provisioning con avvio flessibile. - CLUSTER_NAME: il nome del cluster GKE.
- VERSION: la versione di GKE. Assicurati che sia almeno la versione minima che supporta Managed Lustre. Ad esempio, 1.33.2-gke.1111000.
- NETWORK_NAME: il nome della rete che crei.
- IP_RANGE_NAME: il nome dell'intervallo di indirizzi IP.
- FIREWALL_RULE_NAME: il nome della regola firewall.
I comandi precedenti configurano un tipo di acceleratore
v6e-16. Questa configurazione include le seguenti variabili:ACCELERATOR_TYPE=v6e-16: corrisponde a TPU Trillium con una topologia4x4. Questa versione della TPU indica a GKE di eseguire il provisioning di un pool di nodi slice multi-host.v6e-16corrisponde al tipo di macchinact6e-standard-4tin GKE.NUM_SLICES=1: il numero di node pool di sezioni TPU che XPK crea perACCELERATOR_TYPEche selezioni.
Se vuoi personalizzare le variabili
ACCELERATOR_TYPEeNUM_SLICES, consulta i seguenti documenti per trovare le combinazioni disponibili:- Per identificare la versione della TPU, il tipo di macchina per GKE, la topologia e la zona disponibile che vuoi utilizzare, consulta Pianificare le TPU in GKE.
- Per mappare il tipo di macchina GKE con il tipo di acceleratore nell'API Cloud TPU, consulta la documentazione di TPU Trillium (v6e).
Prepara una rete VPC
Prepara una rete Virtual Private Cloud per l'istanza Managed Lustre e il cluster GKE.
Abilita l'API Service Networking:
gcloud services enable servicenetworking.googleapis.com \ --project=${PROJECT_ID}Crea una rete VPC:
gcloud compute networks create ${NETWORK_NAME} \ --subnet-mode=auto --project=${PROJECT_ID} \ --mtu=8896Crea un intervallo di indirizzi IP per il peering VPC:
gcloud compute addresses create ${IP_RANGE_NAME} \ --global \ --purpose=VPC_PEERING \ --prefix-length=20 \ --description="Managed Lustre VPC Peering" \ --network=${NETWORK_NAME} \ --project=${PROJECT_ID}Ottieni l'intervallo CIDR dell'intervallo di indirizzi IP:
CIDR_RANGE=$( gcloud compute addresses describe ${IP_RANGE_NAME} \ --global \ --format="value[separator=/](address, prefixLength)" \ --project=${PROJECT_ID} )Crea una regola firewall per consentire il traffico TCP dall'intervallo di indirizzi IP:
gcloud compute firewall-rules create ${FIREWALL_RULE_NAME} \ --allow=tcp:988,tcp:6988 \ --network=${NETWORK_NAME} \ --source-ranges=${CIDR_RANGE} \ --project=${PROJECT_ID}Connetti il peering VPC.
gcloud services vpc-peerings connect \ --network=${NETWORK_NAME} \ --project=${PROJECT_ID} \ --ranges=${IP_RANGE_NAME} \ --service=servicenetworking.googleapis.com
Crea un'istanza di archiviazione Managed Lustre
Crea un'istanza di archiviazione Managed Lustre.
Imposta le variabili dell'istanza di archiviazione:
export STORAGE_NAME=STORAGE_NAME export STORAGE_THROUGHPUT=STORAGE_THROUGHPUT export STORAGE_CAPACITY=STORAGE_CAPACITY_GIB export STORAGE_FS=lfsSostituisci i seguenti valori:
- STORAGE_NAME: il nome dell'istanza Managed Lustre.
- STORAGE_THROUGHPUT: il throughput dell'istanza Managed Lustre, in MiB/s per TiB. Per i valori di throughput validi, consulta la sezione Calcola la nuova capacità.
- STORAGE_CAPACITY_GIB: la capacità dell'istanza Managed Lustre, in GiB. Per i valori di capacità validi, consulta Valori di capacità e throughput consentiti.
Crea l'istanza Managed Lustre:
gcloud lustre instances create ${STORAGE_NAME} \ --per-unit-storage-throughput=${STORAGE_THROUGHPUT} \ --capacity-gib=${STORAGE_CAPACITY} \ --filesystem=${STORAGE_FS} \ --location=${LOCATION} \ --network=projects/${PROJECT_ID}/global/networks/${NETWORK_NAME} \ --project=${PROJECT_ID} \ --async # Creates the instance asynchronouslyIl flag
--asynccrea l'istanza in modo asincrono e fornisce un ID operazione per monitorarne lo stato.Controlla lo stato dell'operazione:
gcloud lustre operations describe OPERATION_ID \ --location=${LOCATION} \ --project=${PROJECT_ID}Sostituisci
OPERATION_IDcon l'ID dell'output del comando asincrono precedente. Se non hai l'ID, puoi elencare tutte le operazioni:gcloud lustre operations list \ --location=${LOCATION} \ --project=${PROJECT_ID}L'istanza è pronta quando l'output del comando mostra
done: true.
Utilizzare XPK per creare un cluster GKE
Utilizza XPK per creare un cluster GKE con un pool di nodi.
Crea un cluster GKE:
xpk cluster create --cluster ${CLUSTER_NAME} \
--num-slices=${NUM_SLICES} \
--tpu-type=${ACCELERATOR_TYPE} \
--zone=${LOCATION} \
--project=${PROJECT_ID} \
--gke-version=${GKE_VERSION} \
--custom-cluster-arguments="--network=${NETWORK_NAME}" \
--enable-lustre-csi-driver \
--flex
Questo comando crea un cluster GKE utilizzando XPK. Il cluster è configurato per utilizzare flex-start per il provisioning dei nodi e ha il driver CSI Managed Lustre abilitato.
Collega l'istanza di archiviazione al cluster
Per configurare PersistentVolume (PV) e PersistentVolumeClaim (PVC), questa sezione utilizza il comando di collegamento dell'archiviazione XPK (xpk storage attach) con un file manifest.
Questa sezione utilizza un manifest di esempio
dal codice sorgente XPK.
Collega l'istanza di archiviazione Managed Lustre al tuo cluster GKE completando questi passaggi:
Scarica il file manifest di esempio nella directory di lavoro attuale e salvalo come
lustre-manifest-attach.yaml.Aggiorna il file manifest con le informazioni della tua istanza Managed Lustre:
Nella sezione
PersistentVolume, sostituisci i seguenti valori:- STORAGE_SIZE: le dimensioni dell'istanza Managed Lustre in GiB.
- PROJECT_ID/ZONE/INSTANCE_NAME: il percorso completo della risorsa della tua istanza Managed Lustre.
- IP_ADDRESS: l'indirizzo IP dell'istanza Managed Lustre.
- FILE_SYSTEM: il tipo di file system, ovvero
lfs.
Nella sezione
PersistentVolumeClaim, sostituisci i seguenti valori:- STORAGE_SIZE: le dimensioni di PersistentVolumeClaim, in GiB.
Collega l'istanza di archiviazione al cluster:
xpk storage attach ${STORAGE_NAME} \ --cluster=${CLUSTER_NAME} --project=${PROJECT_ID} --zone=${LOCATION} \ --type=lustre \ --mount-point='/lustre-data' \ --readonly=false \ --auto-mount=true \ --manifest='./lustre-manifest-attach.yaml'Verifica di aver collegato lo spazio di archiviazione per il cluster:
xpk storage list \ --cluster=${CLUSTER_NAME} --project=${PROJECT_ID} --zone=${LOCATION}
Esegui un carico di lavoro
Esegui un workload con l'istanza Managed Lustre collegata . Il seguente comando di esempio elenca i dischi disponibili e crea un file "hello" nella directory dell'istanza Managed Lustre.
Crea ed esegui il workload:
xpk workload create --workload test-lustre \
--cluster=${CLUSTER_NAME} --project=${PROJECT_ID} --zone=${LOCATION} \
--command="df -h && echo 'hello' > /lustre-data/hello.txt && cat /lustre-data/hello.txt" \
--tpu-type=${ACCELERATOR_TYPE} \
--num-slices=1 \
--flex
Esegui la pulizia
Dopo aver completato i passaggi descritti in questo documento, per evitare addebiti indesiderati sul tuo account, elimina il cluster:
xpk cluster delete --cluster ${CLUSTER_NAME} \
--zone ${LOCATION} \
--project ${PROJECT_ID}
Passaggi successivi
- Scopri di più sul driver CSI Managed Lustre.
- Esplora il riferimento al driver CSI di Google Cloud Managed Lustre.
- Scopri come creare e utilizzare un volume supportato da Lustre.
- Scopri come accedere alle istanze Lustre esistenti.