Usar el almacenamiento en caché de archivos de Cloud Storage FUSE

El almacenamiento en caché de archivos de Cloud Storage FUSE es una caché de lectura del lado del cliente que mejora el rendimiento de las operaciones de lectura al servir lecturas de archivos repetidas desde un almacenamiento en caché más rápido de tu elección. Cuando el almacenamiento en caché de archivos está habilitado, 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 sirvan directamente desde la caché, lo que reduce la latencia y mejora el rendimiento.

Ventajas del almacenamiento en caché de archivos

El almacenamiento en caché de archivos ofrece las siguientes ventajas:

  • Mejora el rendimiento de las E/S pequeñas y aleatorias: el almacenamiento en caché de archivos mejora la latencia y el rendimiento al servir las lecturas directamente desde el medio de la caché. Las operaciones de E/S pequeñas y aleatorias pueden ser significativamente más rápidas cuando se sirven desde la caché.

  • Aprovecha las descargas paralelas: las descargas paralelas se habilitan automáticamente en las versiones 2.12 y posteriores de Cloud Storage FUSE cuando la caché de archivos está habilitada. Las descargas paralelas utilizan varios trabajadores para descargar un archivo en paralelo usando el directorio de caché de archivos como búfer de prefetched, lo que puede dar como resultado un tiempo de carga del modelo hasta nueve veces más rápido. Te recomendamos que uses descargas paralelas en escenarios de lectura de un solo subproceso que carguen archivos grandes, como el servicio de modelos y la restauración de puntos de control.

  • Usar la capacidad disponible: el almacenamiento en caché de archivos puede usar la capacidad de la máquina aprovisionada para tu directorio de caché sin incurrir en cargos por almacenamiento adicional. Esto incluye los SSD locales que se incluyen con los tipos de máquina de GPUs de Cloud, como a2-ultragpu y a3-highgpu, el disco persistente (que es el disco de arranque que usa cada VM) o la memoria /tmpfs.

  • Reducción de los cargos: los aciertos de caché se sirven de forma local y no generan cargos de operación ni de red de Cloud Storage.

  • Mejora del coste total de propiedad para el entrenamiento de IA y aprendizaje automático: el almacenamiento en caché de archivos aumenta la utilización de las GPUs y las TPUs de Cloud al cargar los datos más rápido, lo que reduce el tiempo de entrenamiento y proporciona una mejor relación precio-rendimiento para las cargas de trabajo de entrenamiento de IA y aprendizaje automático.

Descargas paralelas

Las descargas paralelas pueden mejorar el rendimiento de lectura mediante el uso de varios procesos de trabajo para descargar varias partes de un archivo en paralelo usando el directorio de caché de archivos como búfer de prefetched. Recomendamos usar descargas paralelas para los casos de lectura que cargan archivos de gran tamaño, como el servicio de modelos, la restauración de puntos de control y el entrenamiento con objetos de gran tamaño.

Estos son algunos de los casos prácticos en los que se puede habilitar el almacenamiento en caché de archivos con descargas paralelas:

Tipo de caso práctico Descripción
Formación Habilita el almacenamiento en caché de archivos si los datos a los que quieres acceder se leen varias veces, ya sea el mismo archivo varias veces o diferentes desplazamientos del mismo archivo. Si el conjunto de datos es más grande que la caché de archivos, esta debe permanecer inhabilitada. En su lugar, utilice uno de los siguientes métodos:
Servicio de ponderaciones de modelos y lecturas de puntos de control Habilita el almacenamiento en caché de archivos con descargas paralelas para poder utilizar las descargas paralelas, que cargan archivos grandes mucho más rápido que si no se utilizan el almacenamiento en caché de archivos y las descargas paralelas.

Cuestiones importantes

En las siguientes secciones se indican aspectos importantes que debes tener en cuenta al usar el almacenamiento en caché de archivos.

Tamaño de archivo y capacidad disponible

El archivo que se va a leer debe caber en la capacidad disponible del directorio de caché de archivos, que se puede controlar mediante la opción de CLI --file-cache-max-size-mb o el campo file-cache:max-size-mb.

Gestión de lecturas aleatorias y parciales

Si la primera operación de lectura de archivos empieza al principio del archivo, en el desplazamiento 0, la caché de archivos de Cloud Storage FUSE ingiere y carga todo el archivo en la caché, aunque solo leas un subconjunto pequeño del intervalo. De esta forma, las lecturas aleatorias o parciales posteriores del mismo objeto se sirven directamente desde la caché.

Si la primera operación de lectura de un archivo empieza en cualquier lugar que no sea el desplazamiento 0, Cloud Storage FUSE no activará de forma predeterminada una obtención asíncrona del archivo completo. Para cambiar este comportamiento de forma que Cloud Storage FUSE ingiera un archivo en la caché tras una lectura aleatoria inicial, usa uno de los siguientes métodos para definir el comportamiento en true:

Te recomendamos que habilites esta propiedad si se realizan muchas operaciones de lectura aleatorias o parciales diferentes en el mismo objeto.

Evicción de caché

La expulsión de los metadatos y los datos almacenados en caché se basa en un algoritmo de uso menos reciente (LRU) que se inicia cuando se alcanza el umbral de espacio configurado por límite de --file-cache-max-size-mb. Si la entrada caduca según su TTL, primero se hace una llamada de metadatos GET a Cloud Storage y está sujeta a latencias de red. Como los datos y los metadatos se gestionan por separado, es posible que una entidad se expulse o se invalide y la otra no.

Persistencia de la caché

Las cachés de Cloud Storage FUSE no se conservan al desmontar y reiniciar. En el caso del almacenamiento en caché de archivos, aunque las entradas de metadatos necesarias para servir archivos desde la caché se eliminan al desmontar y reiniciar, los datos de la caché de archivos pueden seguir presentes en el directorio de archivos. Te recomendamos que elimines los datos del directorio de la caché de archivos después de desmontar o reiniciar.

Seguridad de los datos

Cuando habilitas el almacenamiento en caché, Cloud Storage FUSE usa el directorio de caché que has especificado con uno de los siguientes métodos como directorio subyacente de la caché para conservar los archivos de tu segmento de Cloud Storage en un formato cifrado:

Cualquier usuario o proceso que tenga acceso a este directorio de caché puede acceder a estos archivos. Te recomendamos que restrinjas el acceso a este directorio.

Acceso directo o múltiple a la caché de archivos

Si se usa un proceso distinto de Cloud Storage FUSE para acceder a un archivo del directorio de caché o modificarlo, los datos pueden dañarse. Las cachés de Cloud Storage FUSE son específicas de cada proceso de Cloud Storage FUSE en ejecución y no tienen conocimiento de los diferentes procesos de Cloud Storage FUSE que se ejecutan en la misma máquina o en máquinas diferentes. Por lo tanto, no recomendamos usar el mismo directorio de caché para diferentes procesos de Cloud Storage FUSE.

Si se deben ejecutar varios procesos de Cloud Storage FUSE en la misma máquina, cada proceso de Cloud Storage FUSE debe tener su propio directorio de caché específico o usar uno de los siguientes métodos para asegurarse de que los datos no se dañen:

  • Montar todos los contenedores con una caché compartida: usa el montaje dinámico para montar todos los contenedores a los que tengas acceso en un solo proceso con una caché compartida. Para obtener más información, consulta Montaje dinámico de FUSE de Cloud Storage.

  • Habilitar el almacenamiento en caché en un segmento específico: habilita el almacenamiento en caché solo en un segmento específico mediante el montaje estático. Para obtener más información, consulta Montaje estático de FUSE de Cloud Storage.

  • Almacenar en caché solo una carpeta o un directorio específicos: monta y almacena en caché solo una carpeta específica a nivel de segmento en lugar de montar un segmento completo. Para obtener más información, consulta Montar un directorio en un segmento.

Antes de empezar

La caché de archivos requiere una ruta de directorio para almacenar archivos en caché. Puedes crear un directorio en un sistema de archivos que ya tengas o crear un sistema de archivos en el almacenamiento aprovisionado. Si vas a aprovisionar nuevo almacenamiento para usarlo, sigue estas instrucciones para crear un sistema de archivos:

  1. En el caso de Hyperdisk de Google Cloud, consulta Crear un volumen de Hyperdisk de Google Cloud.

  2. En el caso de Persistent Disk, consulta Crear un volumen de Persistent Disk.

  3. Para obtener información sobre las SSD locales, consulta Añadir una SSD local a una VM.

  4. Para obtener información sobre los discos de RAM en memoria, consulta Crear discos de RAM en memoria.

Habilitar y configurar el comportamiento del almacenamiento en caché de archivos

Habilita y configura el almacenamiento en caché de archivos mediante una de las siguientes opciones:

  1. Especifica el directorio de caché que quieras usar con uno de los siguientes métodos. De esta forma, puedes habilitar la caché de archivos para las implementaciones que no sean de Google Kubernetes Engine:

    Si usas una implementación de Google Kubernetes Engine con el controlador CSI de FUSE de Cloud Storage para Google Kubernetes Engine, especifica una de las siguientes opciones:

  2. Opcional: habilita las descargas paralelas seleccionando una de las siguientes opciones en true si las descargas paralelas no se han habilitado automáticamente:

  3. Limita la capacidad total que puede usar la caché de FUSE de Cloud Storage en su directorio montado. Para ello, ajusta una de las siguientes opciones, que se establece automáticamente en el valor -1 cuando especificas un directorio de caché:

    También puede especificar un valor en MiB o GiB para limitar el tamaño de la caché.

  4. Opcional: omite el vencimiento del TTL de las entradas almacenadas en caché y sirve los metadatos del archivo desde la caché si están disponibles. Para ello, utiliza uno de los siguientes métodos y asigna el valor -1:

    El valor predeterminado es de 60 segundos y el valor -1 lo establece en ilimitado. También puede especificar un valor alto en función de sus requisitos. Te recomendamos que asignes al valor ttl-secs el valor más alto que te permita tu carga de trabajo. Para obtener más información sobre cómo definir un TTL para las entradas almacenadas en caché, consulta Tiempo de vida.

  5. 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 empieza en cualquier lugar que no sea offset 0, de modo que las lecturas posteriores de diferentes desplazamientos del mismo archivo también se puedan servir desde la caché. Usa uno de los siguientes métodos y activa la opción true:

  6. Opcional: configura el almacenamiento en caché de estadísticas y el almacenamiento en caché de tipos. Para obtener más información sobre las cachés de estadísticas y de tipos, consulta Introducción al almacenamiento en caché de tipos o Introducción al almacenamiento en caché de estadísticas.

  7. Ejecuta manualmente el comando ls -R en tu contenedor montado antes de ejecutar tu carga de trabajo para rellenar previamente los metadatos y asegurarte de que la caché de tipos se rellena antes de la primera lectura con un método más rápido y por lotes. Para obtener más información sobre cómo mejorar el rendimiento de la primera lectura, consulta el artículo Mejorar las primeras lecturas.

Una vez que habilites el almacenamiento en caché de archivos, las descargas paralelas se habilitarán automáticamente en Cloud Storage FUSE 2.12 y versiones posteriores. Si usas una versión anterior de Cloud Storage FUSE, define la opción enable-parallel-downloads como true para habilitar las descargas paralelas.

Configurar propiedades de asistencia para descargas paralelas

También puede configurar las siguientes propiedades de asistencia para las descargas paralelas mediante la CLI de Cloud Storage FUSE o un archivo de configuración de Cloud Storage FUSE:

Descripción de la propiedad Opción de CLI Campo de archivo de configuración
Número máximo 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
Número máximo de trabajadores que se pueden generar en cualquier momento en todos los trabajos de descarga de archivos. El valor predeterminado es el doble del número de núcleos de CPU de tu máquina. Para no especificar ningún límite, introduce el valor `-1`. --file-cache-max-parallel-downloads file-cache:max-parallel-downloads
Tamaño de cada solicitud de lectura en MiB que realiza cada trabajador a Cloud Storage al descargar el objeto en la caché de archivos. Ten en cuenta que una descarga paralela solo se activa si el archivo que se está leyendo tiene el tamaño especificado. --file-cache-download-chunk-size-mb file-cache:download-chunk-size-mb

Inhabilitar descargas paralelas

Para inhabilitar las descargas paralelas, asigna el valor false a una de las siguientes opciones:

  • Opción de la CLI --file-cache-enable-parallel-downloads
  • Campo file-cache:enable-parallel-downloads

Siguientes pasos