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, ya que entrega lecturas de archivos repetidas desde un almacenamiento en caché más rápido que elijas. 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 en paralelo habilitadas automáticamente: Las descargas en paralelo se habilitan automáticamente en las versiones 2.12 y posteriores de Cloud Storage FUSE 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 un 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
ya3-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 el uso de las GPUs de Cloud y las Cloud TPU, ya que carga los 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, ya que usan varios trabajadores para descargar varias partes de un archivo en paralelo con el directorio de caché de archivos como un búfer de carga previa. Recomendamos usar descargas en paralelo para situaciones de lectura que carguen archivos grandes, como la entrega de modelos, las restauraciones de puntos de control y el entrenamiento 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, esta debe permanecer inhabilitada. En su lugar, usa uno de los siguientes métodos: |
Entrega de pesos del modelo 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 usan el almacenamiento en caché de archivos ni 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
GET
a 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, es decir, no cambió la generación de objetos, el contenido se entrega desde la caché solo después de que la llamada de atributos 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 accedan al mismo archivo seguirán leyendo sus versiones almacenadas en caché hasta que sus parámetros de configuración de TTL individuales provoquen 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 se puede controlar con la opción
--file-cache-max-size-mb
o el campofile-cache:max-size-mb
.Expulsión de caché: La expulsión de metadatos y datos almacenados en caché se basa en un algoritmo de menos usado recientemente (LRU) que comienza una vez que se alcanza el límite de espacio configurado por límite de
--file-cache-max-size-mb
. Si la entrada vence según su TTL, primero se realiza una llamada de metadatosGET
a 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 comienza desde el principio del archivo, en el desplazamiento
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 otro desplazamiento 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-read
o el campofile-cache:cache-file-for-range-read
comotrue
.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-dir
o el campocache-dir
como 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.
Ejecutar 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 con el que deseas habilitar y configurar el almacenamiento en caché de archivos con uno de los siguientes métodos:
Proporciona el valor para una opción de
gcsfuse
.Especifí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:
- Opción
gcsfuse
:--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 en
true
si 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
Para limitar la capacidad total que la caché de Cloud Storage FUSE puede usar dentro de su directorio activado, ajusta una de las siguientes opciones, que se establece automáticamente en un valor de
-1
cuando especificas un directorio de caché:- Opción
gcsfuse
:--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é.
- Opción
Opcional: Omite el vencimiento del TTL de las entradas almacenadas en caché y entrega los metadatos del archivo desde la caché si están disponibles con uno de los siguientes métodos y configura un valor de
-1
:- Opción
gcsfuse
:--metadata-cache-ttl-secs
- Campo del archivo de configuración:
metadata-cache:ttl-secs
El valor predeterminado es 60 segundos, y un valor de
-1
lo establece como ilimitado. También puedes especificar un valor alto según tus requisitos. Te recomendamos que establezcas el valorttl-secs
en 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.- Opción
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 0
, de modo 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 establece la opción entrue
:- 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 y de tipo. Para obtener más información sobre el almacenamiento en caché de estadísticas y tipos, consulta Descripción general del almacenamiento en caché de tipo o Descripción general del almacenamiento en caché de estadísticas.
Ejecuta de forma manual el comando
ls -R
en el bucket activado antes de ejecutar la carga de trabajo para propagar los metadatos con anterioridad para garantizar que la caché del tipo se propague antes de la primera lectura en un método por lotes más rápido. Para obtener más información para 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 las versiones 2.12 y posteriores de Cloud Storage FUSE. Si usas una versión anterior de Cloud Storage FUSE, configura la opción enable-parallel-downloads
en true
para habilitar las descargas paralelas.
Configura propiedades de compatibilidad para 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 |
---|---|---|
Es la cantidad máxima de trabajadores que se pueden generar por archivo para descargar el objeto de Cloud Storage a la caché de archivos. | --file-cache-parallel-downloads-per-file |
file-cache:parallel-downloads-per-file |
Es 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 el valor `-1`. | --file-cache-max-parallel-downloads |
file-cache:max-parallel-downloads |
Es 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, establece uno de los siguientes parámetros en false
:
- Opción de
gcsfuse
:--file-cache-enable-parallel-downloads
- Campo del archivo de configuración:
file-cache:enable-parallel-downloads
¿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.