Informazioni sul driver CSI di Cloud Storage FUSE per GKE


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 archiviare dati di addestramento, modelli e checkpoint in Cloud Storage.

Questa panoramica è destinata 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 tue applicazioni in esecuzione nei pod di accedere facilmente 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 Linux. Cloud Storage FUSE ti 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 di file comuni (ad esempio, apertura, lettura, scrittura e chiusura) anziché utilizzare API specifiche per il cloud.

Il driver supporta in modo nativo i seguenti modi per configurare i volumi supportati da Cloud Storage:

  • Volumi effimeri CSI: specifichi il bucket Cloud Storage in linea con la specifica del pod. Utilizza volumi CSI temporanei se vuoi un'interfaccia basata sui pod semplificata che non richiede esperienza precedente con i volumi permanenti di Kubernetes. Per utilizzare questa opzione, consulta la sezione 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 vincolato a questo PersistentVolume. Utilizza questa opzione se hai già familiarità con PersistentVolume e vuoi 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 a 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 modelli salvati del checkpoint 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 da file archiviati in Cloud Storage. Puoi utilizzare Cloud Storage FUSE CSI per precaricare i pesi del modello archiviati in Cloud Storage. Inoltre, puoi utilizzare il download parallelo con la cache dei file 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 dei modelli, soprattutto 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 trattamento dei dati consentendo alle applicazioni di accedere direttamente e analizzare grandi set di dati 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 scaricare prima.

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 gestisce il driver sia nei cluster Standard che Autopilot. L'utilizzo di volumi effimeri CSI semplifica la configurazione e la gestione dei volumi. Questo perché non sono necessari oggetti PersistentVolumeClaim e PersistentVolume.
  • Sicurezza: il driver CSI di Cloud Storage FUSE non richiede l'accesso privilegiato. In questo modo si riducono al minimo i rischi associati all'accesso con privilegi e si ottiene una migliore postura di sicurezza. Puoi utilizzare Workload Identity Federation for GKE per gestire l'autenticazione, offrendoti un controllo granulare su come i tuoi pod accedono agli oggetti Cloud Storage.
  • Prestazioni: il driver CSI di Cloud Storage FUSE migliora le prestazioni grazie a funzionalità come un sidecar per interazioni ottimizzate, download paralleli per un accesso più rapido ai dati e memorizzazione nella cache di metadati e file per migliorare le prestazioni di lettura e ridurre la latenza. Per scoprire di più su queste funzionalità, vedi Opzioni e funzionalità di ottimizzazione del rendimento.
  • Portabilità e flessibilità: il driver CSI di Cloud Storage FUSE ti consente di utilizzare la semantica standard del file system per montare e accedere ai bucket Cloud Storage. In questo modo si ottiene un'interfaccia familiare che migliora la portabilità dei carichi di lavoro ML ed evita la necessità di apportare modifiche estese 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 e ReadWriteOnce. Puoi utilizzare i volumi Cloud Storage FUSE nei container di inizializzazione.
  • Gestibilità: il driver consente di eseguire Cloud Storage FUSE in background senza doverlo installare o gestire. Puoi anche visualizzare metriche approfondite 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 include 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, potresti ridurre significativamente il tempo necessario per caricare i dati di addestramento, con conseguente riduzione dei tempi di addestramento.

  • Sidecar nativo: il driver CSI di Cloud Storage FUSE collega un container sidecar nei tuoi pod per gestire le interazioni con Cloud Storage. Il sidecar gestisce il montaggio e l'interazione con Cloud Storage, consentendo alle tue applicazioni di accedere ai dati senza problemi. Puoi ottimizzare le prestazioni configurando risorse come CPU e memoria per il container 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 v.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 dei modelli, in particolare per le letture di dimensioni superiori a 1 GB (ad esempio, fino a due volte più velocemente 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 le dimensioni e l'ora di modifica. Il driver CSI attiva questa cache stat per impostazione predefinita e riduce la latenza memorizzando le informazioni localmente anziché richiederle ripetutamente da Cloud Storage. Puoi configurare 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 delle applicazioni 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à di cache dei file Cloud Storage FUSE è una cache di lettura basata sul client che consente di servire più rapidamente le letture ripetute dei file dallo spazio di archiviazione della cache di tua scelta. Puoi scegliere tra una gamma di opzioni di archiviazione per la cache di lettura, tra cui SSD locali, archiviazione basata suPersistent Diski e disco RAM, in base alle tue esigenze di rapporto prezzo/prestazioni.

  • Supporto per il riavvio dei nodi: a partire dalla versione 1.33.1-gke.1959000 di GKE, i pod che utilizzano volumi CSI GCSFuse sono in grado di eseguire il ripristino automatico dopo il riavvio di un nodo GKE. Per i cluster che eseguono versioni precedenti, i pod non sono in grado di eseguire il ripristino e devi eseguire nuovamente il deployment.

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.
  • L'accesso uniforme a livello di bucket è obbligatorio per i workload di lettura/scrittura quando si utilizza la federazione delle identità per i carichi di lavoro 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.
  • Il driver CSI di Cloud Storage FUSE non supporta i pod in esecuzione sulla rete host (hostNetwork: true) a causa delle limitazioni della federazione delle identità per i carichi di lavoro per GKE.
  • Le versioni del cluster GKE precedenti alla 1.32.3-gke.1099000 hanno un limite restrittivo per le dimensioni delle stringhe mountOption criptate in formato JSON. La combinazione di nome del bucket, opzioni di montaggio fornite dall'utente e mountOptions fornito dal driver deve contenere meno di 500 caratteri. Abbiamo aumentato la soglia del messaggio JSON a 5000 byte nelle versioni del cluster GKE 1.32.3-gke.1099000 o successive.

Requisiti

Per utilizzare il driver CSI di Cloud Storage FUSE, i cluster devono soddisfare i seguenti requisiti di versione di GKE:

Per utilizzare funzionalità specifiche per il driver CSI di Cloud Storage FUSE, devi anche soddisfare questi requisiti:

Funzionalità Requisiti della versione di 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 versioni 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 init 1.29.3-gke.1093000 o versioni 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, abilitato per impostazione predefinita su 1.33.0-gke.2248000 o versioni successive.
Prefetch dei metadati 1.32.1-gke.1357001 o versioni successive.
Scritture in streaming 1.32.1-gke.1753001 o versioni successive, abilitato per impostazione predefinita su 1.33.2-gke.4655000 o versioni successive.
Configura la lettura anticipata del kernel 1.32.2-gke.1297001 o versioni successive.
Supporto del riavvio del nodo 1.33.1-gke.1959000 o versioni successive.

Passaggi successivi