Questo documento fornisce architetture di riferimento che mostrano come utilizzare Cloud Storage FUSE per ottimizzare le prestazioni dei carichi di lavoro di AI e ML su Google Kubernetes Engine (GKE).
Il pubblico di destinazione di questo documento include architetti e professionisti tecnici che progettano, eseguono il provisioning e gestiscono lo spazio di archiviazione per i carichi di lavoro di AI e ML su Google Cloud. Questo documento presuppone che tu abbia una conoscenza del ciclo di vita, dei processi e delle funzionalità di ML.
Cloud Storage FUSE è un adattatore FUSE open source che consente di montare i bucket Cloud Storage come file system locali. Questa configurazione consente alle applicazioni di interagire senza problemi con i bucket di archiviazione basati sul cloud utilizzando la semantica standard del sistema simile a un file. Cloud Storage FUSE ti consente di sfruttare la scalabilità e la convenienza economica di Cloud Storage.
Architettura
A seconda dei requisiti di prestazioni, disponibilità e ripristino di emergenza, puoi scegliere uno dei seguenti Google Cloud archetipi di deployment per eseguire i tuoi carichi di lavoro di AI e ML su Google Cloud:
- Regionale: le tue applicazioni vengono eseguite in modo indipendente all'interno di una singola Google Cloud regione. Consigliamo questo archetipo di deployment per le applicazioni che non sono mission-critical, ma che devono essere robuste contro le interruzioni di zona.
- Multiregionale: le tue applicazioni vengono eseguite in modo indipendente in due o più regioni Google Cloud , in modalità attiva-attiva o attiva-passiva. Questo archetipo di deployment è ideale per supportare scenari di RE. Consigliamo questo archetipo di deployment per le applicazioni mission-critical che richiedono resilienza contro interruzioni e disastri a livello di regione. I deployment duali o multiregionali possono ridurre la latenza e migliorare il throughput grazie alla maggiore vicinanza delle risorse.
L'archetipo di deployment che scegli determina i Google Cloud prodotti e le funzionalità necessari per la tua architettura. L'architettura multiregionale utilizza Anywhere Cache. Per valutare se Anywhere Cache è adatto al tuo workload, utilizza il motore per suggerimenti di Anywhere Cache per analizzare l'utilizzo dei dati e lo spazio di archiviazione.
Le seguenti schede forniscono architetture di riferimento per gli archetipi di deployment regionali e multiregionali:
Regionale
Il seguente diagramma mostra un'architettura regionale di esempio che utilizza Cloud Storage FUSE per ottimizzare le prestazioni dei flussi di lavoro di addestramento e servizio dei modelli:
Questa architettura include i seguenti componenti:
- Cluster GKE: GKE gestisce i nodi di calcolo su cui vengono eseguiti i processi di addestramento e pubblicazione dei modelli di AI e ML. GKE gestisce l'infrastruttura sottostante dei cluster Kubernetes, inclusi il piano di controllo, i nodi e tutti i componenti di sistema.
- Scheduler Kubernetes: il piano di controllo GKE pianifica i carichi di lavoro e ne gestisce il ciclo di vita, la scalabilità e gli upgrade. L'agente del nodo Kubernetes (
kubelet
), che non è mostrato nel diagramma, comunica con il control plane. L'agentekubelet
è responsabile dell'avvio e dell'esecuzione dei container pianificati sui nodi GKE. Per saperne di più sullo scheduler, consulta Orchestrazione di AI/ML su GKE. - Rete Virtual Private Cloud (VPC): tutte le risorse Google Cloud nell'architettura utilizzano una singola rete VPC. A seconda dei tuoi requisiti, puoi scegliere di creare un'architettura che utilizza più reti. Per ulteriori informazioni sulla configurazione di una rete VPC per Cloud Storage FUSE, consulta Decidere se creare più reti VPC.
- Cloud Load Balancing: in questa architettura, Cloud Load Balancing distribuisce in modo efficiente le richieste di inferenza in entrata dagli utenti dell'applicazione ai container di servizio nel cluster GKE. Per saperne di più, vedi Informazioni sul bilanciamento del carico di GKE.
- Graphics Processing Unit (GPU) o Tensor Processing Unit (TPU): GPU e TPU sono acceleratori di machine learning specializzati che migliorano le prestazioni dei carichi di lavoro di AI e ML. Per informazioni su come scegliere un tipo di processore appropriato, consulta la sezione Opzioni di acceleratore più avanti in questo documento.
- Cloud Storage: Cloud Storage fornisce uno spazio di archiviazione permanente, scalabile ed economico per i tuoi carichi di lavoro AI e ML. Cloud Storage funge da repository centrale per i set di dati di addestramento non elaborati, i checkpoint del modello e i modelli addestrati finali.
- Cloud Storage FUSE con la cache dei file abilitata: Cloud Storage FUSE ti consente di montare un bucket Cloud Storage come file system locale. La cache dei file in Cloud Storage FUSE è una directory sulla macchina locale che archivia i file a cui si accede di frequente dai bucket Cloud Storage. Il driver CSI di Cloud Storage FUSE gestisce l'integrazione di Cloud Storage FUSE con l'API Kubernetes per utilizzare i bucket Cloud Storage come volumi.
Le sezioni seguenti descrivono il flusso di lavoro nei carichi di lavoro di addestramento e serving dell'architettura.
A più regioni
Il seguente diagramma mostra un'architettura multiregionale di esempio che utilizza Cloud Storage FUSE e Anywhere Cache per ottimizzare le prestazioni dei flussi di lavoro di addestramento e servizio del modello:
Questa architettura include i seguenti componenti:
- Cluster GKE: GKE gestisce i nodi di calcolo su cui vengono eseguiti i processi di addestramento e pubblicazione dei modelli di AI e ML. GKE gestisce l'infrastruttura sottostante dei cluster Kubernetes, inclusi il piano di controllo, i nodi e tutti i componenti di sistema.
- Scheduler Kubernetes: il piano di controllo GKE pianifica i carichi di lavoro e ne gestisce il ciclo di vita, la scalabilità e gli upgrade. L'agente del nodo Kubernetes (
kubelet
), che non è mostrato nel diagramma, comunica con il control plane. L'agentekubelet
è responsabile dell'avvio e dell'esecuzione dei container pianificati sui nodi GKE. Per saperne di più sullo scheduler, consulta Orchestrazione di AI/ML su GKE. - Rete Virtual Private Cloud (VPC): tutte le risorse Google Cloud nell'architettura utilizzano una singola rete VPC. A seconda dei tuoi requisiti, puoi scegliere di creare un'architettura che utilizza più reti. Per ulteriori informazioni sulla configurazione di una rete VPC per Cloud Storage FUSE, consulta Decidere se creare più reti VPC.
- Cloud DNS: nelle architetture multiregionali, Cloud DNS indirizza il traffico ai bilanciatori del carico per garantire prestazioni e disponibilità ottimali tramite il routing anycast. Le richieste vengono indirizzate automaticamente alla località più vicina, il che riduce la latenza e migliora le prestazioni di ricerca dei nomi autorevoli per i tuoi utenti. Per informazioni su principi generali e best practice, consulta Best practice per Cloud DNS.
- Cloud Load Balancing: in questa architettura, Cloud Load Balancing distribuisce in modo efficiente le richieste di inferenza in entrata dagli utenti dell'applicazione ai container di servizio nel cluster GKE. Per saperne di più, consulta Informazioni sul bilanciamento del carico di GKE.
- Graphics Processing Unit (GPU) o Tensor Processing Unit (TPU): GPU e TPU sono acceleratori di machine learning specializzati che migliorano le prestazioni dei carichi di lavoro di AI e ML. Per informazioni su come scegliere un tipo di processore appropriato, consulta la sezione Opzioni di acceleratore più avanti in questo documento.
- Cloud Storage: Cloud Storage fornisce uno spazio di archiviazione permanente, scalabile ed economico per i tuoi carichi di lavoro AI e ML. Cloud Storage funge da repository centrale per i set di dati di addestramento non elaborati, i checkpoint del modello e i modelli addestrati finali.
- Cloud Storage FUSE: Cloud Storage FUSE ti consente di montare un bucket Cloud Storage come file system locale. Il driver CSI di Cloud Storage FUSE, che non è mostrato nel diagramma, gestisce l'integrazione di Cloud Storage FUSE con l'API Kubernetes per utilizzare i bucket Cloud Storage come volumi.
- Anywhere Cache: Anywhere Cache è una funzionalità di Cloud Storage che fornisce fino a 1 PiB di cache di sola lettura zonale basata su SSD per i bucket Cloud Storage. Durante l'addestramento e la pubblicazione, Anywhere Cache ti aiuta a raggiungere un throughput superiore a 1 TB/s scalando la capacità della cache e la larghezza di banda.
Le sezioni seguenti descrivono il flusso di lavoro nei carichi di lavoro di addestramento e serving dell'architettura.
Carico di lavoro di addestramento
Nelle architetture precedenti, i passaggi del flusso di dati durante l'addestramento del modello sono i seguenti:
- Carica i dati di addestramento in Cloud Storage: i dati di addestramento vengono caricati in un bucket Cloud Storage con gli spazi dei nomi gerarchici abilitati. Cloud Storage funge da repository centrale scalabile.
- Carica i dati di addestramento ed esegui i job di addestramento in GKE: il bucket Cloud Storage montato sui pod GKE consente alle applicazioni di addestramento di caricare e accedere in modo efficiente ai dati di addestramento utilizzando l'interfaccia FUSE. I nodi GKE eseguono il processo di addestramento del modello utilizzando la cache dei file montata come origine dati. Le applicazioni di addestramento inviano continuamente dati di addestramento agli acceleratori di machine learning per eseguire i calcoli complessi necessari per l'addestramento del modello. A seconda dei requisiti del tuo carico di lavoro, puoi utilizzare GPU o TPU. Per informazioni su come scegliere un tipo di processore appropriato, consulta la sezione Opzioni di acceleratore più avanti in questo documento.
Salvataggio e ripristino di checkpoint e modelli:
- Salva i checkpoint o il modello: durante l'addestramento, salva i checkpoint in modo asincrono a intervalli frequenti in un bucket Cloud Storage separato. I checkpoint acquisiscono lo stato del modello in base alle metriche o agli intervalli che definisci.
- Ripristina checkpoint o modello: quando il carico di lavoro di addestramento richiede il ripristino di un checkpoint o dei dati del modello, devi individuare l'asset che vuoi ripristinare in Cloud Storage. Puoi utilizzare il checkpoint o il modello ripristinato per riprendere l'addestramento, ottimizzare i parametri o valutare le prestazioni su un set di convalida.
Workload di pubblicazione
Nelle architetture precedenti, i passaggi nel flusso di dati durante l'erogazione del modello sono i seguenti:
- Carica modello: al termine dell'addestramento, i pod caricano il modello addestrato utilizzando Cloud Storage FUSE con i download paralleli attivati. I download paralleli accelerano il caricamento del modello recuperando le parti del modello in parallelo da Cloud Storage. Per ridurre significativamente i tempi di caricamento del modello, il processo utilizza la directory della cache come buffer di precaricamento.
- Richiesta di inferenza: gli utenti dell'applicazione inviano richieste di inferenza dall'applicazione AI e ML tramite il servizio Cloud Load Balancing. Cloud Load Balancing distribuisce le richieste in entrata tra i container di pubblicazione nel cluster GKE. Questa distribuzione garantisce che nessun singolo container venga sovraccaricato e che le richieste vengano elaborate in modo efficiente.
- Invio della risposta: i nodi elaborano la richiesta e generano una previsione. I container di pubblicazione inviano le risposte tramite Cloud Load Balancing e poi agli utenti dell'applicazione.
Prodotti utilizzati
Le architetture di riferimento utilizzano i seguenti prodotti Google Cloud :
- Google Kubernetes Engine (GKE): un servizio Kubernetes che puoi utilizzare per eseguire il deployment e gestire applicazioni containerizzate su larga scala utilizzando l'infrastruttura di Google.
- Cloud Storage: uno spazio di archiviazione di oggetti a basso costo e senza limiti per diversi tipi di dati. I dati sono accessibili dall'interno e dall'esterno di Google Cloude vengono replicati in più località per la ridondanza.
- Virtual Private Cloud (VPC): un sistema virtuale che fornisce funzionalità di rete globali e scalabili per i tuoi Google Cloud carichi di lavoro. VPC include il peering di rete VPC, Private Service Connect, l'accesso privato ai servizi e VPC condiviso.
- Cloud Load Balancing: un portafoglio di bilanciatori del carico scalabili, globali e regionali ad alte prestazioni.
- Cloud DNS: un servizio che fornisce una gestione DNS resiliente e a bassa latenza dalla rete globale di Google.
Caso d'uso
Per i carichi di lavoro di AI e ML che richiedono un'ampia capacità di archiviazione e un accesso ai file ad alte prestazioni, ti consigliamo di utilizzare un'architettura basata su Cloud Storage FUSE. Con una pianificazione adeguata, puoi ottenere un throughput superiore a 1 TB/s con queste architetture. Inoltre, Cloud Storage FUSE ti consente di sfruttare un repository di archiviazione centrale che funge da unica fonte attendibile per tutte le fasi del flusso di lavoro di AI e ML. Questo approccio può essere utilizzato per qualsiasi workload, indipendentemente dalla sua scala o dimensione.
Per questi carichi di lavoro, Cloud Storage FUSE offre i seguenti vantaggi:
- Accesso semplificato ai dati: accedi ai dati di addestramento e ai checkpoint con framework di AI e ML come Connector for PyTorch, JAX e TensorFlow. L'accesso ai dati tramite framework di AI e ML elimina la necessità di refactoring del codice.
- Avvio rapido: elimina la necessità di scaricare set di dati di grandi dimensioni nelle risorse di calcolo utilizzando Cloud Storage FUSE per accedere direttamente ai dati in Cloud Storage. Questo accesso diretto ai dati consente di avviare più rapidamente i job.
- Convenienza: ottimizza i costi utilizzando la scalabilità e l'efficienza in termini di costi intrinseche di Cloud Storage.
Cloud Storage FUSE non è adatto a carichi di lavoro sensibili alla latenza che contengono file inferiori a 50 MB o che richiedono una latenza inferiore a 1 millisecondo per l'accesso casuale a I/O e metadati.
Per l'addestramento con uso intensivo dei dati o per i checkpoint e i workload di riavvio, valuta una soluzione di archiviazione alternativa durante la fase di addestramento con uso intensivo di I/O.
Alternative di progettazione
Le sezioni seguenti presentano approcci di progettazione alternativi che puoi prendere in considerazione per la tua applicazione AI e ML in Google Cloud.
Alternativa alla piattaforma
Anziché ospitare il flusso di lavoro di addestramento e servizio del modello su GKE, puoi prendere in considerazione Compute Engine con Slurm. Slurm è un gestore di risorse e carichi di lavoro open source e altamente configurabile. L'utilizzo di Compute Engine con Slurm è particolarmente adatto per l'addestramento e le simulazioni di modelli su larga scala. Ti consigliamo di utilizzare Compute Engine con Slurm se devi integrare la proprietà intellettuale (IP) di AI e ML proprietarie in un ambiente scalabile con la flessibilità e il controllo per ottimizzare le prestazioni per carichi di lavoro specializzati. Per saperne di più su come utilizzare Compute Engine con Slurm, consulta Deployment di un cluster HPC con Slurm.
Su Compute Engine, esegui il provisioning e la gestione delle tue macchine virtuali (VM), il che ti offre un controllo granulare su tipi di istanza, archiviazione e networking. Puoi personalizzare l'infrastruttura in base alle tue esigenze esatte, inclusa la selezione di tipi di macchine VM specifici. Per informazioni su come utilizzare le opzioni della riga di comando di Cloud Storage FUSE in Compute Engine, consulta gcsfuse CLI e File di configurazione di Cloud Storage FUSE. Puoi anche utilizzare la famiglia di macchine ottimizzate per l'acceleratore per migliorare le prestazioni dei carichi di lavoro di AI e ML. Per ulteriori informazioni sulle famiglie di tipo di macchina disponibili su Compute Engine, consulta la guida alle risorse e al confronto delle famiglie di macchine.
Slurm offre un'opzione potente per la gestione dei workload di AI e ML e ti consente di controllare la configurazione e la gestione delle risorse di calcolo. Per utilizzare questo approccio, devi avere competenze di amministrazione di Slurm e di gestione del sistema Linux.
Opzioni dell'acceleratore
Gli acceleratori di macchine sono processori specializzati progettati per velocizzare i calcoli necessari per i carichi di lavoro di AI e ML. Puoi scegliere GPU o TPU.
- Gli acceleratori GPU offrono prestazioni eccellenti per un'ampia gamma di attività, tra cui rendering grafico, addestramento deep learning e computing scientifico. Google Cloud offre un'ampia selezione di GPU per soddisfare esigenze di prestazioni e requisiti di prezzo diversi. Le GPU spesso includono SSD locali in ogni configurazione della macchina, che possono essere utilizzati da Cloud Storage FUSE come directory della cache. Per informazioni sui modelli e sui prezzi delle GPU, consulta Prezzi delle GPU.
- Le TPU sono acceleratori AI progettati su misura, ottimizzati per l'addestramento e l'inferenza di modelli AI di grandi dimensioni. Sono ideali per una varietà di casi d'uso, tra cui chatbot, generazione di codice, generazione di contenuti multimediali, sintesi vocale, servizi di visione artificiale, motori per suggerimenti e modelli di personalizzazione. Per maggiori informazioni sui modelli e sui prezzi delle TPU, consulta la sezione Prezzi per Cloud TPU.
Alternative di archiviazione
Cloud Storage FUSE fornisce un file system pratico che ti consente di sfruttare la scalabilità e la convenienza di Cloud Storage. Tuttavia, Cloud Storage FUSE non è ideale per i carichi di lavoro che richiedono una bassa latenza per le letture di file di piccole dimensioni o per i carichi di lavoro che richiedono una soluzione di archiviazione completamente conforme a POSIX. Per questi casi d'uso, ti consigliamo di prendere in considerazione le seguenti alternative di archiviazione:
- Google Cloud Hyperdisk ML: una soluzione di archiviazione a blocchi ad alte prestazioni ideale per i carichi di lavoro che hanno cluster su larga scala di centinaia di nodi con set di dati di sola lettura più piccoli che vanno da centinaia di GB a 64 TB. Hyperdisk ML ha un throughput superiore a Cloud Storage e può essere collegato a più VM in modalità di sola lettura. La modalità di accesso Kubernetes ReadOnlyMany consente a Hyperdisk ML di accelerare il caricamento dei pesi del modello rispetto al caricamento diretto da un registro dei modelli. Per saperne di più sull'utilizzo di Hyperdisk ML nei carichi di lavoro di AI e ML, consulta Accelerare il caricamento dei dati di AI/ML con Hyperdisk ML.
- Connector for PyTorch: un prodotto open source in Cloud Storage ideale per i carichi di lavoro che utilizzano PyTorch. Il connettore per PyTorch ottimizza il workload di addestramento trasmettendo i dati in streaming direttamente dai bucket Cloud Storage ed eliminando la necessità di spazio di archiviazione intermedio. Questo accesso diretto e ottimizzazione offre prestazioni significativamente migliori rispetto alle chiamate API dirette a Cloud Storage per il caricamento, l'addestramento e il checkpointing dei dati.
Sebbene le opzioni di archiviazione alternative possano offrire vantaggi in termini di prestazioni per determinati carichi di lavoro di AI e ML, è fondamentale valutare le tue esigenze in termini di latenza, throughput e capacità di archiviazione.
Per un confronto completo delle opzioni di archiviazione per i carichi di lavoro AI e ML, consulta Progettare l'archiviazione per i carichi di lavoro AI e ML in Google Cloud.
Note sul layout
Questa sezione fornisce indicazioni sulle best practice e sulle considerazioni di progettazione per la configurazione di Cloud Storage FUSE per sicurezza, affidabilità, costi e prestazioni. Sebbene i consigli qui riportati non siano esaustivi, riguardano considerazioni chiave per massimizzare i vantaggi di Cloud Storage FUSE nel tuo ambiente. A seconda delle tue esigenze specifiche e delle caratteristiche del carico di lavoro, potresti dover prendere in considerazione opzioni di configurazione e compromessi aggiuntivi.
I seguenti consigli di progettazione mettono in evidenza le configurazioni per perfezionare la modalità di deployment di Cloud Storage FUSE in GKE. La maggior parte delle opzioni FUSE di Cloud Storage sono configurate con opzioni di montaggio. Per saperne di più sulle opzioni della riga di comando di Cloud Storage FUSE e su come utilizzarle, consulta CLI gcsfuse e Ottimizzare il driver CSI di Cloud Storage FUSE per le prestazioni di GKE.
Sicurezza, privacy e conformità
Questa sezione descrive le considerazioni per i tuoi carichi di lavoro di AI e ML in Google Cloud che soddisfano i tuoi requisiti di sicurezza, privacy e conformità.
Considerazioni su GKE
Nella modalità operativa Autopilot, GKE preconfigura il cluster e gestisce i nodi in base alle best practice di sicurezza, il che ti consente di concentrarti sulla sicurezza specifica del workload. Per maggiori informazioni, consulta le seguenti risorse:
Per garantire un controllo dell'accesso avanzato per le applicazioni eseguite in GKE, puoi utilizzare Identity-Aware Proxy (IAP). IAP si integra con la risorsa Ingress di GKE e contribuisce a garantire che solo gli utenti autenticati con il ruolo Identity and Access Management (IAM) corretto possano accedere alle applicazioni. Per maggiori informazioni, vedi Abilitare IAP per GKE.
Per impostazione predefinita, i tuoi dati in GKE vengono criptati at-rest e in transito utilizzando Google-owned and Google-managed encryption keys. Come livello aggiuntivo di sicurezza per i dati sensibili, puoi criptare i dati a livello di applicazione utilizzando una chiave di tua proprietà e gestita con Cloud Key Management Service (Cloud KMS). Per maggiori informazioni, vedi Crittografia dei secret a livello di applicazione.
Se utilizzi un cluster GKE Standard, puoi utilizzare le seguenti funzionalità aggiuntive di crittografia dei dati:
- Crittografa i dati in uso (ovvero in memoria) utilizzando Confidential GKE Node. Per saperne di più sulle funzionalità, sulla disponibilità e sulle limitazioni di Confidential GKE Nodes, consulta Crittografare i dati dei workload in uso con Confidential GKE Nodes.
- Se hai bisogno di un maggiore controllo sulle chiavi di crittografia utilizzate per criptare il traffico dei pod tra i nodi GKE, puoi criptare i dati in transito utilizzando chiavi che gestisci. Per ulteriori informazioni, vedi Criptare i dati in transito in GKE con chiavi di crittografia gestite dall'utente.
Considerazioni su Cloud Storage
Per impostazione predefinita, i dati archiviati in Cloud Storage vengono criptati utilizzando Google-owned and Google-managed encryption keys. Se necessario, puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) o le tue chiavi che gestisci utilizzando un metodo di gestione esterno come le chiavi di crittografia fornite dal cliente (CSEK). Per saperne di più, consulta Opzioni di crittografia dei dati.
Cloud Storage supporta due metodi per concedere agli utenti l'accesso ai tuoi bucket e oggetti: IAM ed elenchi di controllo dell'accesso (ACL). Nella maggior parte dei casi, ti consigliamo di utilizzare IAM, che ti consente di concedere autorizzazioni a livello di bucket e progetto. Per ulteriori informazioni, consulta Panoramica del controllo dell'accesso.
I dati di addestramento che carichi tramite Cloud Storage potrebbero includere dati sensibili. Per proteggere questi dati, puoi utilizzare Sensitive Data Protection per rilevarli, classificarli e anonimizzarli. Per separare i carichi di lavoro di addestramento e servizio, salva il modello e i checkpoint in bucket Cloud Storage separati. Questo isolamento contribuisce a evitare l'esposizione accidentale di informazioni sensibili dal set di dati di addestramento durante la pubblicazione. Per ulteriori informazioni, consulta Utilizzo di Sensitive Data Protection con Cloud Storage.
Se hai requisiti di residenza dei dati, Cloud Storage può aiutarti a soddisfarli. I dati vengono archiviati o replicati nelle regioni che hai specificato.
Considerazioni su Cloud Storage FUSE
Quando abiliti la memorizzazione nella cache, Cloud Storage FUSE archivia i file permanenti del bucket Cloud Storage in un formato non criptato all'interno della directory che specifichi. Cloud Storage espone tutti i file a qualsiasi utente o processo che ha accesso alla directory. Per mitigare questi rischi e migliorare la sicurezza, il livello del kernel FUSE limita l'accesso al file system all'utente che ha montato il sistema. Questa limitazione nega l'accesso ad altri utenti, incluso l'utente root, anche se le autorizzazioni inode sono più permissive.
Tuttavia, esistono casi d'uso in cui potrebbe essere necessario ignorare le limitazioni di accesso predefinite. Ad esempio, in un workload di addestramento AI e ML distribuito
in cui più nodi devono accedere e condividere i checkpoint archiviati in
Cloud Storage, potrebbe essere necessario consentire un accesso più ampio. In questi casi,
puoi ignorare la limitazione predefinita utilizzando l'opzione -o allow_other
.
Tuttavia, se ampli l'accesso ai tuoi file, potresti
esporre i tuoi dati a utenti non autorizzati.
Pertanto, devi prestare attenzione quando utilizzi questa opzione.
Per impostazione predefinita, tutti gli inode in un file system Cloud Storage FUSE sono di proprietà dell'utente che ha montato il file system. Sebbene questi valori predefiniti possano essere adatti a molti casi, puoi personalizzare un contesto di sicurezza per il tuo pod. Per informazioni sulla personalizzazione di un contesto di sicurezza, vedi Sicurezza e autorizzazioni.
Affidabilità
Per garantire un funzionamento affidabile, Cloud Storage FUSE incorpora tentativi automatici per gestire potenziali interruzioni e mantenere la coerenza dei dati. Le richieste non riuscite vengono riprovate automaticamente con backoff esponenziale su Cloud Storage. Il backoff esponenziale aumenta gradualmente il tempo tra i tentativi. Questo meccanismo integrato aiuta l'applicazione a superare problemi di rete temporanei o l'indisponibilità temporanea di Cloud Storage.
Sebbene Cloud Storage FUSE offra molti vantaggi, tieni presente quanto segue:
- Scritture simultanee: quando più utenti tentano di modificare un file, l'operazione ultima scrittura vincente ha la precedenza e tutte le operazioni di scrittura precedenti vengono perse. Per mantenere l'integrità dei dati, ti consigliamo di modificare un singolo oggetto solo da un'unica origine in un determinato momento.
- Persistenza della cache: quando smonti o riavvii il bucket, le cache non vengono mantenute. Per evitare potenziali problemi di sicurezza, dopo aver smontato o riavviato il bucket, è essenziale eliminare manualmente la directory della cache dei file.
- Processi con cache dedicate: sebbene Cloud Storage FUSE supporti l'accesso simultaneo per un'elaborazione parallela efficiente, è importante ricordare che le cache sono specifiche per ogni processo Cloud Storage FUSE. Pertanto, la stessa directory della cache non deve essere utilizzata da processi Cloud Storage FUSE diversi eseguiti su macchine uguali o diverse.
Quando crei l'architettura per il tuo carico di lavoro, considera anche le best practice e i suggerimenti generali forniti nel Well-Architected Framework: pilastro dell'affidabilità.
Ottimizzazione dei costi
Questa sezione fornisce indicazioni per aiutarti a ottimizzare il costo di configurazione e gestione del flusso di lavoro AI e ML in Google Cloud.
Considerazioni su GKE
In modalità Autopilot, GKE ottimizza l'efficienza dell'infrastruttura del cluster in base ai requisiti del carico di lavoro. Per controllare i costi, non devi monitorare costantemente l'utilizzo delle risorse o gestire la capacità.
Se riesci a prevedere l'utilizzo di CPU, memoria e spazio di archiviazione temporaneo del tuo cluster Autopilot, puoi ottenere sconti per impegno di utilizzo. Per ridurre il costo di esecuzione dell'applicazione, puoi utilizzare le VM spot per i nodi GKE. Le VM spot hanno un prezzo inferiore rispetto alle VM standard, ma non offrono una garanzia di disponibilità.
Per ottimizzare costi e prestazioni tramite una gestione efficiente, utilizza Dynamic Workload Scheduler. Dynamic Workload Scheduler è un servizio di gestione delle risorse e pianificazione dei job che ti aiuta a migliorare l'accesso alle risorse di AI e ML. Dynamic Workload Scheduler pianifica tutti gli acceleratori contemporaneamente e può essere eseguito al di fuori delle ore di punta con la gestione della capacità dell'acceleratore definita. Pianificando i job in modo strategico, Dynamic Workload Scheduler contribuisce a massimizzare l'utilizzo degli acceleratori, ridurre i tempi di inattività e, in definitiva, ottimizzare la spesa cloud.
Per maggiori informazioni sulle indicazioni per l'ottimizzazione dei costi, consulta Best practice per l'esecuzione di applicazioni Kubernetes con ottimizzazione dei costi su GKE.
Considerazioni su Cloud Storage
Le tue esigenze di spazio di archiviazione per l'AI e il ML possono essere dinamiche. Ad esempio, potresti richiedere una capacità di archiviazione significativa per i dati di addestramento, ma il requisito di capacità diminuisce per la pubblicazione, dove archivi principalmente i dati del modello e i checkpoint. Per controllare i costi, ti consigliamo di attivare la gestione del ciclo di vita degli oggetti e Autoclass.
La gestione del ciclo di vita degli oggetti ti consente di spostare automaticamente i dati meno recenti o inutilizzati in classi di archiviazione più economiche o persino di eliminarli, in base alle regole che imposti.
La funzionalità Autoclass sposta automaticamente i dati tra le classi di archiviazione in base ai tuoi pattern di accesso. Questa funzionalità ti garantisce il miglior equilibrio tra prestazioni e costi.
Considerazioni su Cloud Storage FUSE
Vengono applicati gli addebiti standard di Cloud Storage per l'archiviazione, le operazioni sui metadati e il traffico di rete generato dalle tue attività FUSE. L'utilizzo di Cloud Storage FUSE non comporta costi aggiuntivi. Per ulteriori informazioni sulle operazioni comuni di Cloud Storage FUSE e sulla loro mappatura alle operazioni di Cloud Storage, consulta la mappatura delle operazioni.
Per ottimizzare i costi della directory della cache, puoi utilizzare la capacità della macchina di cui è stato eseguito il provisioning, inclusi SSD locali, dischi permanenti o dati in memoria per i file system temporanei. Quando utilizzi la capacità della macchina esistente, puoi evitare di incorrere in addebiti per risorse di archiviazione aggiuntive. Inoltre, massimizzare gli hit della cache può ridurre significativamente i costi di Cloud Storage perché i dati serviti localmente non comportano costi per le operazioni o per il traffico in uscita dalla rete.
Per maggiori informazioni sui costi, consulta la pagina Prezzi di Cloud Storage.
Quando crei l'architettura per il tuo carico di lavoro, considera anche le best practice e i suggerimenti generali forniti nel Well-Architected Framework: pilastro dell'ottimizzazione dei costi.
Ottimizzazione delle prestazioni
Cloud Storage FUSE è progettato per fornire un accesso efficiente ai dati in Cloud Storage per i carichi di lavoro di AI e ML. Tuttavia, le richieste frequenti di metadati possono ridurre le prestazioni, soprattutto nei cluster di grandi dimensioni. Per ulteriori informazioni sul miglioramento delle prestazioni, vedi Ottimizzare il driver CSI di Cloud Storage FUSE per le prestazioni di GKE.
Per ottimizzare il rendimento, valuta le seguenti configurazioni:
- Abilita spazi dei nomi gerarchici: per migliorare l'accesso ai dati e l'organizzazione, crea bucket Cloud Storage con spazi dei nomi gerarchici abilitati. Gli spazi dei nomi gerarchici consentono di organizzare i dati in una struttura di file system, il che migliora le prestazioni, garantisce la coerenza e semplifica la gestione per i carichi di lavoro di AI e ML. Gli spazi dei nomi gerarchici consentono un QPS iniziale più elevato e ridenominazioni atomiche rapide delle directory.
Attiva la memorizzazione nella cache dei file: la memorizzazione nella cache dei file accelera l'accesso ripetuto ai dati di addestramento utilizzando una directory dei nodi locale per memorizzare nella cache i file letti di frequente. La pubblicazione di letture ripetute da un supporto della cache riduce la latenza e minimizza le operazioni di nuovo in Cloud Storage. Sui tipi di macchine GPU con un SSD locale, viene utilizzata automaticamente la directory SSD locale. Per i tipi di macchine che non includono SSD locali, come le TPU, puoi utilizzare una directory del disco RAM, ad esempio
/tmpfs
.Per abilitare la cache dei file, utilizza le seguenti opzioni di montaggio:
- Per impostare il valore della cache di file utilizzabile sul limite di capacità della cache, imposta
file-cache:max-size-mb:
su-1
. - Per impostare la durata (TTL) della cache dei metadati su illimitata e
l'eliminazione in base all'algoritmo LRU (Least Recently Used) dopo il
raggiungimento della capacità massima, imposta
metadata-cache:ttl-secs:
su-1
.
- Per impostare il valore della cache di file utilizzabile sul limite di capacità della cache, imposta
Aumenta i valori della cache dei metadati: Cloud Storage FUSE ha due forme di cache dei metadati che migliorano le prestazioni delle operazioni correlate alle ricerche di metadati: cache stat e cache dei tipi.
Per aumentare i valori della cache dei metadati, imposta le seguenti opzioni di montaggio:
- Per impostare il valore della cache delle statistiche utilizzabili sul limite di capacità della cache, imposta
metadata-cache:stat-cache-max-size-mb:
su-1
. - Per impostare il valore della cache del tipo utilizzabile sul limite di capacità, imposta
metadata-cache:type-cache-max-size-mb:
su-1
. - Per impedire la scadenza degli elementi di metadati memorizzati nella cache, con un valore predefinito di
60 secondi, imposta
metadata-cache:ttl-secs:
su-1
. I valori infiniti devono essere utilizzati solo per volumi e nodi di sola lettura con configurazioni di memoria di grandi dimensioni.
- Per impostare il valore della cache delle statistiche utilizzabili sul limite di capacità della cache, imposta
Precompila la cache dei metadati: la funzionalità di precaricamento dei metadati consente al driver CSI di Cloud Storage FUSE di caricare in modo proattivo i metadati pertinenti sugli oggetti nel bucket Cloud Storage nelle cache di Cloud Storage FUSE. Questo approccio riduce le chiamate a Cloud Storage ed è particolarmente vantaggioso per le applicazioni che accedono a set di dati di grandi dimensioni con molti file, come i carichi di lavoro di addestramento di AI e ML.
Per precompilare la cache dei metadati, attiva il precaricamento dei metadati per il volume specificato. Imposta l'attributo del volume
gcsfuseMetadataPrefetchOnMount
sutrue
.Attiva la memorizzazione nella cache degli elenchi: questa funzionalità ottimizza le directory e i file degli elenchi. È particolarmente utile per i carichi di lavoro di addestramento di AI e ML, che spesso comportano l'accesso e l'elenco ripetuti di intere directory. La memorizzazione nella cache delle liste fornisce processi di addestramento altamente efficienti riducendo la necessità di accedere ripetutamente agli elenchi di directory nella memoria del computer.
Per abilitare la memorizzazione nella cache degli elenchi ed evitare la scadenza degli elementi della cache degli elenchi del kernel, imposta l'opzione di montaggio
file-system:kernel-list-cache-ttl-secs:
su-1
.Attiva download paralleli: i download paralleli accelerano il caricamento iniziale del modello recuperando più blocchi contemporaneamente. L'attivazione dei download paralleli comporta un caricamento più rapido del modello e una migliore reattività durante la pubblicazione.
Per attivare i download paralleli, attiva la cache dei file e imposta l'opzione di montaggio
file-cache:enable-parallel-downloads:
sutrue
.Aumenta i limiti dei sidecar GKE: per evitare che i vincoli delle risorse ostacolino le prestazioni, configura i limiti per le risorse del container sidecar, come il consumo di CPU e memoria. Se utilizzi una cache SSD locale, valuta la possibilità di impostare
ephemeral-storage-limit
su illimitato. Questa impostazione consente a Cloud Storage FUSE di utilizzare completamente lo spazio di archiviazione SSD locale disponibile per una memorizzazione nella cache avanzata.Montaggio di sola lettura: poiché i carichi di lavoro di addestramento in genere devono solo leggere i dati, configura il punto di montaggio come di sola lettura per ottenere prestazioni ottimali, soprattutto quando utilizzi la memorizzazione nella cache dei file. Questa configurazione contribuisce anche a massimizzare i vantaggi delle ottimizzazioni nei cluster di grandi dimensioni e a prevenire potenziali incoerenze dei dati.
Quando crei l'architettura per il tuo carico di lavoro, considera le best practice e i suggerimenti generali forniti nel Well-Architected Framework: pilastro dell'ottimizzazione del rendimento.
Passaggi successivi
- Scopri di più:
- Panoramica di Cloud Storage FUSE.
- Informazioni sul driver CSI di Cloud Storage FUSE per GKE.
- Ottimizza il driver CSI di Cloud Storage FUSE per le prestazioni di GKE.
- Best practice per l'implementazione del machine learning su Google Cloud.
- Progetta lo spazio di archiviazione per i workload AI e ML in Google Cloud.
- Implementa:
- Per ulteriori architetture di riferimento, diagrammi e best practice, esplora il Cloud Architecture Center.
Collaboratori
Autore: Samantha He | Technical Writer
Altri collaboratori:
- Dean Hildebrand | Technical Director, Office of the CTO
- Kumar Dhanagopal | Sviluppatore di soluzioni cross-product
- Marco Abela | Product Manager
- Sean Derrington | Group Outbound Product Manager, Storage