En este documento, se proporciona una descripción general del almacenamiento en caché de archivos de Cloud Storage FUSE y se incluyen instrucciones para configurar y usar el almacenamiento en caché de archivos.
El almacenamiento en caché de archivos de Cloud Storage FUSE es una caché de lectura del cliente que mejora el rendimiento de las operaciones de lectura mediante la entrega de lecturas de archivos repetidas desde un almacenamiento en caché más rápido, el cual puedes elegir. Cuando se habilita el almacenamiento en caché de archivos, Cloud Storage FUSE almacena copias de los archivos a los que se accede con frecuencia de forma local, lo que permite que las lecturas posteriores se entreguen directamente desde la caché, lo que reduce la latencia y mejora la capacidad de procesamiento.
Beneficios del almacenamiento en caché de archivos
El almacenamiento en caché de archivos proporciona los siguientes beneficios:
Rendimiento mejorado para E/S pequeñas y aleatorias: el almacenamiento en caché de archivos mejora la latencia y la capacidad de procesamiento a través de la entrega de lecturas directamente desde los medios de caché. Las operaciones de E/S pequeñas y aleatorias pueden ser mucho más rápidas cuando se entregan desde la caché.
Descargas paralelas habilitadas automáticamente: las descargas paralelas se habilitan automáticamente en Cloud Storage FUSE versión 2.12 y versiones posteriores cuando se habilita la caché de archivos. Las descargas paralelas utilizan varios trabajadores para descargar un archivo en paralelo con el directorio de caché de archivos como búfer de carga previa, lo que puede generar un tiempo de carga del modelo hasta nueve veces más rápido. Te recomendamos que uses descargas en paralelo para situaciones de lectura de subproceso único que carguen archivos grandes, como la entrega de modelos y las restauraciones de puntos de control.
Uso de la capacidad existente: el almacenamiento en caché de archivos puede usar la capacidad de la máquina aprovisionada existente para el directorio de caché sin incurrir en cargos por almacenamiento adicional. Esto incluye las SSD locales que vienen con los tipos de máquina de GPU de Cloud, como
a2-ultragpu,a3-highgpu, Persistent Disk, que es el disco de arranque que usa cada máquina virtual (VM) o en la memoria/tmpfs.Cargos reducidos: los aciertos de caché se entregan de forma local y no generan cargos de red ni de operaciones de Cloud Storage.
Mejora en el costo total de propiedad para la capacitación de IA y AA: el almacenamiento en caché de archivos aumenta las GPU de Cloud y el uso de Cloud TPU mediante la carga de datos más rápido, lo que reduce el tiempo de capacitación y proporciona una mayor relación entre precio y rendimiento para las cargas de trabajo de capacitación de inteligencia artificial y aprendizaje automático (IA/AA).
Descargas paralelas
Las descargas paralelas pueden mejorar el rendimiento de lectura mediante el uso de varios trabajadores para descargar varias partes de un archivo en paralelo con el directorio de caché de archivos como búfer de carga previa. Te recomendamos que uses descargas en paralelo para situaciones de lectura que carguen archivos grandes, como la entrega de modelos, las restauraciones de puntos de control y la capacitación en objetos grandes.
Estos son algunos casos de uso para habilitar el almacenamiento en caché de archivos con descargas paralelas:
| Tipo de caso de uso | Descripción |
|---|---|
| Capacitación | Habilita el almacenamiento en caché de archivos si los datos a los que deseas acceder se leen varias veces, ya sea el mismo archivo varias veces o diferentes compensaciones del mismo archivo. Si el conjunto de datos es más grande que la caché de archivos, la caché de archivos debe permanecer inhabilitada y, en su lugar, usar uno de los siguientes métodos: |
| Entrega de ponderaciones de modelos y lecturas de puntos de control | Habilita el almacenamiento en caché de archivos con descargas paralelas para poder utilizar descargas paralelas, que cargan archivos grandes mucho más rápido que si no se usan el almacenamiento en caché de archivos y las descargas paralelas. |
Consideraciones
Tiempo de actividad (TTL) de la caché de archivos: si una entrada de caché de archivos aún no venció en función de su TTL y el archivo está en la caché, las operaciones de lectura de ese archivo se entregan desde la caché del cliente local sin que se emita ninguna solicitud a Cloud Storage.
Vencimiento de la entrada de caché de archivos: si venció una entrada de caché de archivos, primero se realiza una llamada de atributos de archivo
GETa Cloud Storage. Si falta el archivo o cambiaron sus atributos o contenido, se recupera el contenido nuevo. Si solo se invalidaron los atributos, pero el contenido sigue siendo válido, lo que significa que la generación de objetos no cambió, el contenido se entrega desde la caché solo después de que la llamada de atributo confirma su validez. Ambas operaciones generan latencias de red.Invalidación de la caché de archivos: cuando un cliente de Cloud Storage FUSE modifica un archivo almacenado en caché o sus atributos, la entrada de caché de ese cliente se invalida de inmediato para garantizar la coherencia. Sin embargo, otros clientes que acceden al mismo archivo continúan leyendo sus versiones almacenadas en caché hasta que su configuración de TTL individual provoque una invalidación.
Tamaño del archivo y capacidad disponible: el archivo que se lee debe ajustarse a la capacidad disponible en el directorio de caché de archivos, que puedes controlar con la opción
--file-cache-max-size-mbo elfile-cache:max-size-mbcampo. Ten en cuenta que no puedes establecer un tamaño máximo por archivo.Expulsión de la caché: la expulsión de metadatos y datos almacenados en caché se basa en el algoritmo menos usado recientemente (LRU) que empieza una vez que se alcanza el límite de espacio configurado por
--file-cache-max-size-mblímite. Si la entrada vence según su TTL, primero se realiza una llamadaGETde metadatos en Cloud Storage y está sujeta a latencias de red. Debido a que los datos y los metadatos se administran por separado, es posible que experimentes una entidad expulsada o invalidada y no otra.Persistencia de la caché: Las cachés de Cloud Storage FUSE no se conservan en las desactivaciones y los reinicios. En el caso del almacenamiento en caché de archivos, si bien las entradas de metadatos necesarias para entregar archivos desde la caché se desalojan en los desmontajes y reinicios, es posible que los datos de la caché de archivos aún estén presentes en el directorio de archivos. Te recomendamos que borres los datos del directorio de la caché de archivos después de las activaciones o los reinicios.
Administración de lecturas aleatorias y parciales: cuando la primera operación de lectura de archivos empieza desde el principio del archivo o compensa
0, la caché del archivo de Cloud Storage FUSE transfiere y carga todo el archivo en la caché, incluso si solo estás leyendo de un subconjunto pequeño. Esto permite que las lecturas aleatorias o parciales posteriores del mismo objeto se entreguen directamente desde la caché.De forma predeterminada, la lectura desde cualquier otra compensación no activa una recuperación de archivo completa asíncrona. Para cambiar este comportamiento para que Cloud Storage FUSE transfiera un archivo a la caché en una lectura aleatoria inicial, configura la opción
--file-cache-cache-file-for-range-reado el campofile-cache:cache-file-for-range-readcomotrue.Te recomendamos que habilites esta propiedad si se realizan muchas operaciones de lectura parciales o aleatorias diferentes en el mismo objeto.
Seguridad de los datos: cuando habilitas el almacenamiento en caché, Cloud Storage FUSE usa el directorio de caché que especificaste con la opción
--cache-diro el campocache-dircomo directorio subyacente para que la caché conserve los archivos de tu bucket de Cloud Storage en un formato encriptado. Cualquier usuario o proceso que tenga acceso a este directorio de caché puede acceder a estos archivos. Te recomendamos restringir el acceso a este directorio.Acceso directo o múltiple a la caché de archivos: El uso de un proceso que no sea Cloud Storage FUSE para acceder a un archivo en el directorio de la caché o modificarlo puede provocar daños en los datos. Las cachés de Cloud Storage FUSE son específicas de cada proceso en ejecución de Cloud Storage FUSE sin conocimiento en diferentes procesos de Cloud Storage FUSE que se ejecutan en las mismas máquinas o en máquinas diferentes. Por lo tanto, no recomendamos usar el mismo directorio de caché para diferentes procesos de Cloud Storage FUSE.
Ejecución de varios procesos de Cloud Storage FUSE en la misma máquina: Si varios procesos de Cloud Storage FUSE necesitan ejecutarse en la misma máquina, cada proceso de Cloud Storage FUSE debe obtener su propio directorio de caché específico o usar uno de los siguientes métodos para garantizar que tus datos no se dañen:
Activa todos los buckets con una caché compartida: usa la activación dinámica para activar todos los buckets a los que tienes acceso en un solo proceso con una caché compartida. Para obtener más información, consulta Activación dinámica de Cloud Storage FUSE.
Habilita el almacenamiento en caché en un bucket específico: Habilita el almacenamiento en caché solo en un bucket específico mediante la activación estática. Para obtener más información, consulta Activación estática de Cloud Storage FUSE.
Almacena en caché solo una carpeta o directorio específico: activa y almacena en caché solo una carpeta de nivel de bucket específica en lugar de activar un bucket completo. Para obtener más información, consulta Activa un directorio dentro de un bucket.
Antes de comenzar
La caché de archivos requiere una ruta de acceso de directorio que se usará para almacenar los archivos en caché. Puedes crear un directorio nuevo en un sistema de archivos existente o crear un sistema de archivos nuevo en el almacenamiento aprovisionado. Si aprovisionas un almacenamiento nuevo para usar, sigue estas instrucciones para crear un sistema de archivos nuevo:
Para Hyperdisk de Google Cloud, consulta Crea un nuevo volumen de Hyperdisk de Google Cloud.
Para Persistent Disk, consulta Crea un nuevo volumen de Persistent Disk.
Para SSD locales, consulta Agrega una SSD local a tu VM.
Para los discos RAM en la memoria, consulta Crea discos RAM en la memoria.
Habilita y configura el comportamiento del almacenamiento en caché de archivos
Selecciona el método a través del cual deseas habilitar y configurar el almacenamiento en caché de archivos con uno de los siguientes métodos:
Proporciónalo como el valor de una
gcsfuseopciónEspecifícalo en un archivo de configuración de Cloud Storage FUSE.
Especifica el directorio de caché que deseas usar con uno de los siguientes métodos. Esto te permite habilitar la caché de archivos para implementaciones que no son de Google Kubernetes Engine:
- Opción
gcsfuse:--cache-dir - Campo del archivo de configuración:
cache-dir
Si usas una implementación de Google Kubernetes Engine con el controlador CSI de Cloud Storage FUSE para Google Kubernetes Engine, especifica uno de los siguientes métodos:
gcsfuseopción:--file-cache-max-size-mb- Campo del archivo de configuración:
file-cache:max-size-mb
- Opción
Opcional: Habilita las descargas paralelas configurando uno de los siguientes métodos como
truesi las descargas paralelas no se habilitaron automáticamente:- Opción
gcsfuse:--file-cache-enable-parallel-downloads - Campo del archivo de configuración:
file-cache:enable-parallel-downloads
- Opción
Limita la capacidad total que la caché de Cloud Storage FUSE puede usar dentro de su directorio activado ajustando una de las siguientes opciones, que se establece automáticamente en un valor de
-1cuando especificas un directorio de caché:gcsfuseopción:--file-cache-max-size-mb- Campo del archivo de configuración:
file-cache:max-size-mb
También puedes especificar un valor en MiB o GiB para limitar el tamaño de la caché.
Opcional: Omite el vencimiento de TTL de las entradas almacenadas en caché y entrega metadatos de archivos desde la caché si está disponible con uno de los siguientes métodos y establece un valor de
-1:gcsfuseopción:--metadata-cache-ttl-secs- Campo del archivo de configuración:
metadata-cache:ttl-secs
El valor predeterminado es de 60 segundos, y un valor de
-1lo establece en ilimitado. También puedes especificar un valor alto según tus requisitos. Te recomendamos que establezcas el valorttl-secsen el mismo valor que tu carga de trabajo. Para obtener más información sobre el TTL de las entradas almacenadas en caché, consulta Consideraciones.Opcional: Habilita la capacidad de la caché de archivos para cargar de forma asíncrona todo el archivo en la caché si la primera operación de lectura del archivo comienza desde cualquier lugar que no sea
offset 0para que las lecturas posteriores de diferentes compensaciones del mismo archivo también se puedan entregar desde la caché. Usa uno de los siguientes métodos y configura la opción comotrue:- Opción
gcsfuse:--file-cache-cache-file-for-range-read - Campo del archivo de configuración:
file-cache:cache-file-for-range-read
- Opción
Opcional: Configura el almacenamiento en caché de estadísticas. Para obtener más información sobre la caché de estadísticas, consulta Descripción general del almacenamiento en caché de estadísticas.
Ejecuta de forma manual el comando
ls -Ren el bucket activado antes de ejecutar la carga de trabajo para propagar los metadatos con anterioridad para garantizar que la caché de estadísticas se propague antes de la primera lectura en un método por lotes más rápido. Para obtener más información sobre cómo mejorar el rendimiento de las lecturas por primera vez, consulta Mejora las lecturas por primera vez.
Una vez que habilites el almacenamiento en caché de archivos, las descargas paralelas se habilitarán automáticamente en Cloud Storage FUSE versión 2.12 y versiones posteriores. Si usas una versión anterior de Cloud Storage FUSE, configura la opción enable-parallel-downloads como true para habilitar las descargas paralelas.
Configura las propiedades de compatibilidad para las descargas paralelas
De manera opcional, puedes configurar las siguientes propiedades de compatibilidad para las descargas paralelas con la CLI de Cloud Storage FUSE o un archivo de configuración de Cloud Storage FUSE:
| Descripción de la propiedad | Opción gcsfuse |
Campo del archivo de configuración |
|---|---|---|
| La cantidad máxima de trabajadores que se pueden generar por archivo para descargar el objeto de Cloud Storage en la caché de archivos. | --file-cache-parallel-downloads-per-file |
file-cache:parallel-downloads-per-file |
| La cantidad máxima de trabajadores que se pueden generar en cualquier momento en todos los trabajos de descarga de archivos. De forma predeterminada, se establece el doble de los núcleos de CPU en tu máquina. Para especificar que no haya límite, ingresa un valor de `-1`. | --file-cache-max-parallel-downloads |
file-cache:max-parallel-downloads |
| El tamaño de cada solicitud de lectura en MiB que cada trabajador realiza en Cloud Storage cuando descarga el objeto en la caché de archivos. Ten en cuenta que una descarga en paralelo solo se activa si el archivo que se lee es del tamaño especificado. | --file-cache-download-chunk-size-mb |
file-cache:download-chunk-size-mb |
Inhabilita las descargas paralelas
Para inhabilitar las descargas paralelas, configura una de las siguientes opciones como false:
- Opción
gcsfuse:--file-cache-enable-parallel-downloads - Campo del archivo de configuración:
file-cache:enable-parallel-downloads
Controla la capacidad de almacenamiento en caché con un nivel de detalle de archivo mediante expresiones regulares
De forma predeterminada, se almacenan en caché todos los archivos que se leen. Puedes controlar qué archivos se almacenan en caché con un nivel de detalle de archivo mediante los campos opcionales include-regex y exclude-regex en la configuración file-cache. Estos campos te permiten especificar expresiones regulares para que coincidan con las rutas de acceso de archivos en el formato bucket_name/object_key.
Incluye archivos específicos para el almacenamiento en caché
Para almacenar en caché solo los archivos que coinciden con un patrón específico, usa la opción include-regex. No se almacena en caché ningún archivo que no coincida con esta expresión regular.
Por ejemplo, para almacenar en caché solo los archivos .tfrecord de tu conjunto de datos de entrenamiento, especifica lo siguiente en tu archivo de configuración:
file-cache:
include-regex: ".*\\.tfrecord$"
O bien, usa la marca --file-cache-include-regex:
gcsfuse --file-cache-include-regex ".*\\.(tfrecord)$" ..
Excluye archivos específicos del almacenamiento en caché
Para evitar que se almacenen en caché archivos específicos, usa la opción exclude-regex.
No se almacena en caché ningún archivo que coincida con esta expresión regular. Por ejemplo, para excluir todos los archivos de un directorio llamado logs/, especifica lo siguiente en tu archivo de configuración:
file-cache:
exclude-regex: ".*/logs/.*"
O bien, usa la marca --file-cache-exclude-regex:
gcsfuse --file-cache-exclude-regex ".*/logs/.*" ..
Usa reglas de inclusión y exclusión juntas
Puedes usar include-regex y exclude-regex al mismo tiempo. La regla exclude-regex siempre se evalúa primero. Si un archivo coincide con exclude-regex, no se almacenará en caché, incluso si también coincide con include-regex.
Por ejemplo, para almacenar en caché todos los archivos .tfrecord, excepto los del directorio output/, especifica lo siguiente en tu archivo de configuración:
file-cache:
include-regex: ".*\\.tfrecord$"
exclude-regex: ".*/output/.*"
O bien, usa ambas marcas:
gcsfuse --file-cache-include-regex ".*\\.tfrecord$" --file-cache-exclude-regex ".*/output/.*" ..
¿Qué sigue?
Revisa las consideraciones para el almacenamiento en caché en Cloud Storage FUSE.
Obtén información para mejorar el rendimiento de Cloud Storage FUSE.