Questa panoramica introduce il driver CSI Cloud Storage FUSE per il montaggio dei bucket Cloud Storage come file system locali in Google Kubernetes Engine (GKE). Questa funzionalità è particolarmente utile per i carichi di lavoro di machine learning che devono memorizzare dati di addestramento, modelli e checkpoint in Cloud Storage.
Questa panoramica è rivolta a sviluppatori e data scientist che vogliono accedere o archiviare dati di addestramento, pesi del modello di inferenza e checkpoint archiviati in Cloud Storage dalle loro applicazioni Kubernetes.
Prima di leggere questa pagina, assicurati di conoscere Kubernetes, GKE e Cloud Storage.
Come funziona
Il driver utilizza lo standard Container Storage Interface (CSI) per consentire alle applicazioni in esecuzione nei pod di accedere senza problemi ai bucket Cloud Storage come se fossero file system montati. Ciò significa che puoi trattare i bucket Cloud Storage come un'origine dati persistente e scalabile per le tue applicazioni Kubernetes senza configurazioni complesse o modifiche al codice.
Il driver CSI di Cloud Storage FUSE offre un'esperienza completamente gestita basata sul plug-in CSI di Google Cloud Storage FUSE open source. Il driver CSI ti consente di utilizzare l'API Kubernetes per utilizzare i bucket Cloud Storage preesistenti come volumi. Le tue applicazioni possono caricare e scaricare oggetti utilizzando la semantica del file system Cloud Storage FUSE.
Filesystem in Userspace (FUSE) è un'interfaccia utilizzata per esportare un file system nel kernel di Linux. Cloud Storage FUSE consente di montare i bucket Cloud Storage come file system in modo che le applicazioni possano accedere agli oggetti in un bucket utilizzando operazioni di I/O file comuni (ad esempio apertura, lettura, scrittura e chiusura) anziché API specifiche del cloud.
Il driver supporta in modo nativo i seguenti modi per configurare i volumi basati su Cloud Storage:
- Volumi effimeri CSI: specifichi il bucket Cloud Storage in linea con la specifica del pod. Utilizza i volumi CSI effimeri se vuoi un'interfaccia basata su pod semplificata che non richiede esperienza precedente con i volumi persistenti di Kubernetes. Per utilizzare questa opzione, consulta Montare i bucket Cloud Storage come volumi effimeri CSI.
- PersistentVolumes: crei una risorsa PersistentVolume che fa riferimento al bucket Cloud Storage utilizzando il provisioning statico. Il pod può quindi fare riferimento a un oggetto PersistentVolumeClaim associato a questo PersistentVolume. Utilizza questa opzione se conosci già i PersistentVolume e vuoi mantenere la coerenza con i deployment esistenti che si basano su questo tipo di risorsa. Per utilizzare questa opzione, consulta Montare i bucket Cloud Storage come volumi permanenti.
Casi d'uso
Il driver CSI di Cloud Storage FUSE è adatto per scenari come i seguenti:
IA e machine learning
- Addestramento: puoi utilizzare il driver CSI di Cloud Storage FUSE per leggere i dati di addestramento e i checkpoint dei modelli salvati utilizzando Cloud Storage come origine attendibile. Ad esempio, quando addestri un modello su GKE utilizzando PyTorch, JAX o TensorFlow, il driver può fornire l'accesso ai set di dati di addestramento archiviati nei bucket Cloud Storage.
- Inferenza: puoi pubblicare modelli di inferenza ML che deducono i risultati dai file archiviati in Cloud Storage. Puoi utilizzare CSI di Cloud Storage FUSE per precaricare i pesi del modello archiviati in Cloud Storage. Inoltre, puoi utilizzare la funzionalità di download parallelo per accelerare la lettura di file di grandi dimensioni da Cloud Storage per i download multithread. Puoi utilizzare questa funzionalità per migliorare i tempi di caricamento del modello, in particolare per le letture di dimensioni superiori a 1 GB
Pipeline di analisi dei dati
Puoi utilizzare il driver CSI di Cloud Storage FUSE per semplificare le attività di elaborazione dei dati consentendo alle applicazioni di accedere direttamente e analizzare set di dati di grandi dimensioni archiviati in Cloud Storage. Ad esempio, un job Spark in esecuzione su GKE potrebbe utilizzare il driver CSI per elaborare i dati archiviati in Cloud Storage senza doverli prima scaricare.
Vantaggi
L'utilizzo del driver CSI offre i seguenti vantaggi:
- Facile da configurare: il driver CSI di Cloud Storage FUSE esegue automaticamente il deployment e la gestione del driver sia sui cluster standard che su quelli Autopilot. L'utilizzo dei volumi temporanei CSI semplifica la configurazione e la gestione dei volumi. Questo perché non sono necessari gli oggetti PersistentVolumeClaim e PersistentVolume.
- Sicurezza: il driver CSI di Cloud Storage FUSE non richiede l'accesso con privilegi. In questo modo si riducono al minimo i rischi associati agli accessi con privilegi e si ottiene una migliore situazione di sicurezza. Puoi utilizzare Workload Identity Federation for GKE per gestire l'autenticazione, ottenendo un controllo granulare su come i pod accedono agli oggetti Cloud Storage.
- Prestazioni: il driver CSI di Cloud Storage FUSE migliora le prestazioni tramite funzionalità come un sidecar per interazioni ottimizzate, download paralleli per un accesso più rapido ai dati e cache di metadati e file per migliorare le prestazioni di lettura e ridurre la latenza. Per scoprire di più su queste funzionalità, consulta Opzioni e funzionalità di ottimizzazione del rendimento.
- Portabilità e flessibilità:il driver CSI di Cloud Storage FUSE ti consente di utilizzare la semantica del file system standard per montare e accedere ai bucket Cloud Storage.
Fornisce un'interfaccia familiare che migliora la portabilità per i carichi di lavoro di ML e consente di evitare di apportare modifiche sostanziali al codice o all'applicazione.
Il driver è supportato su tutti gli acceleratori disponibili su GKE, incluse GPU e TPU. Il driver CSI di Cloud Storage FUSE supporta le modalità di accesso
ReadWriteMany
,ReadOnlyMany
eReadWriteOnce
. Puoi utilizzare i volumi Cloud Storage FUSE nei container di inizializzazione. - Gestibilità: il driver ti consente di eseguire Cloud Storage FUSE in background senza doverlo installare o gestire. Puoi anche visualizzare gli approfondimenti sulle metriche per Cloud Storage FUSE, tra cui l'utilizzo del file system, di Cloud Storage e della cache dei file.
Opzioni e funzionalità di ottimizzazione delle prestazioni
Il driver CSI di Cloud Storage FUSE offre diverse opzioni di ottimizzazione delle prestazioni e funzionalità per ottimizzare il modo in cui i pod accedono ai dati archiviati nei bucket Cloud Storage.
Ad esempio, attivando la memorizzazione nella cache dei file e modificando la concorrenza delle richieste, puoi ridurre notevolmente il tempo necessario per caricare i dati di addestramento, riducendo così i tempi di addestramento.
Sidecar nativo: il driver CSI di Cloud Storage FUSE collega un container sidecar ai tuoi pod per gestire le interazioni con Cloud Storage. Il sidecar gestisce il montaggio e l'interazione con Cloud Storage, consentendo alle applicazioni di accedere facilmente ai dati. Puoi ottimizzare le prestazioni configurando risorse come CPU e memoria per il contenitore sidecar o modificando le impostazioni relative alla memorizzazione nella cache e al buffering. Il container sidecar del driver CSI di Cloud Storage FUSE e Istio possono coesistere ed essere eseguiti contemporaneamente nel pod.
Download parallelo: a partire dalla versione GKE 1.30.3-gke.1571000 e da Cloud Storage FUSE 2.4.0 con la cache dei file abilitata, puoi utilizzare la funzionalità di download parallelo per accelerare la lettura di file di grandi dimensioni da Cloud Storage per i download multithread. Puoi utilizzare questa funzionalità per migliorare i tempi di caricamento del modello, in particolare per le letture di dimensioni superiori a 1 GB (ad esempio, fino al doppio della velocità durante il caricamento di Llama 2 70B).
Supporto della memorizzazione nella cache dei metadati: il driver CSI di Cloud Storage FUSE migliora le prestazioni memorizzando nella cache i metadati dei file, come dimensioni e ora di modifica. Il driver CSI attiva questa cache delle statistiche per impostazione predefinita e riduce la latenza archiviando le informazioni localmente anziché richiederle ripetutamente da Cloud Storage. Puoi configurarne le dimensioni massime e la durata per cui i dati rimangono nella cache. Ottimizzando la cache dei metadati, puoi ridurre le chiamate API a Google Cloud Storage, migliorando le prestazioni e l'efficienza dell'applicazione riducendo al minimo il traffico di rete e la latenza.
Supporto della memorizzazione nella cache dei file: puoi utilizzare il driver CSI di Cloud Storage FUSE con la memorizzazione nella cache dei file per migliorare le prestazioni di lettura delle applicazioni che gestiscono file di piccole dimensioni dai bucket Cloud Storage. La funzionalità della cache dei file di Cloud Storage FUSE è una cache di lettura basata su client che consente di eseguire più rapidamente letture ripetute dei file dallo spazio di archiviazione della cache che preferisci. Puoi scegliere tra una serie di opzioni di archiviazione per la cache di lettura, tra cui SSD locali, archiviazione basata su Persistent Disk e dischi RAM, in base alle tue esigenze di prezzo e prestazioni.
Per le best practice di ottimizzazione delle prestazioni, consulta Ottimizzare il driver CSI di Cloud Storage FUSE per le prestazioni di GKE.
Limitazioni
Il driver CSI presenta le seguenti limitazioni:
- Il file system Cloud Storage FUSE presenta differenze in termini di prestazioni, disponibilità, autorizzazione di accesso e semantica rispetto a un file system POSIX.
- Il driver CSI di Cloud Storage FUSE non è supportato in GKE Sandbox.
- Il driver CSI di Cloud Storage FUSE non supporta gli snapshot dei volumi, la clonazione dei volumi o le espansioni dei volumi.
- Il driver CSI di Cloud Storage FUSE non supporta i pod in esecuzione sulla
rete host (
hostNetwork: true
) a causa delle limitazioni di Workload Identity Federation for GKE. - L'accesso uniforme a livello di bucket è obbligatorio per i carichi di lavoro di lettura/scrittura quando utilizzi Workload Identity Federation per GKE.
- Consulta i problemi noti nel progetto GitHub del driver CSI di Cloud Storage FUSE.
- Consulta i problemi aperti nel progetto GitHub del driver CSI di Cloud Storage FUSE.
Requisiti
Per utilizzare il driver CSI di Cloud Storage FUSE, i cluster devono soddisfare i seguenti requisiti relativi alla versione GKE:
- Utilizza cluster Linux che eseguono GKE 1.24 o versioni successive.
- Avere Workload Identity Federation for GKE e il server di metadati GKE abilitati.
- Utilizza la versione più recente di Google Cloud CLI.
Per utilizzare funzionalità specifiche per il driver CSI di Cloud Storage FUSE, devi soddisfare anche i seguenti requisiti:
Funzionalità | Requisiti della versione GKE |
---|---|
Immagine privata per il container sidecar, volume del buffer di scrittura personalizzato e richieste di risorse del container sidecar | 1.27.10-gke.1055000, 1.28.6-gke.1369000, 1.29.1-gke.1575000 o successive. |
Cache dei file, attributi del volume | 1.27.12-gke.1190000, 1.28.8-gke.1175000, 1.29.3-gke.1093000 o versioni successive. |
Volumi Cloud Storage FUSE nei container di inizializzazione | 1.29.3-gke.1093000 o successive, con tutti i nodi su GKE 1.29 o versioni successive. |
Download parallelo | 1.29.6-gke.1254000, 1.30.2-gke.1394000 o versioni successive. |
Metriche di Cloud Storage FUSE | 1.31.1-gke.1621000 o versioni successive. |
Precaricamento dei metadati | 1.31.3-gke.1162000 o versioni successive. |