En este documento, se proporcionan arquitecturas de referencia que muestran cómo puedes usar FUSE de Cloud Storage para optimizar el rendimiento de las cargas de trabajo de IA y de AA en Google Kubernetes Engine (GKE).
El público previsto para este documento incluye arquitectos y profesionales técnicos que diseñan, aprovisionan y administran el almacenamiento para sus cargas de trabajo de IA y AA en Google Cloud. En este documento, se supone que conoces el ciclo de vida, los procesos y las capacidades del AA.
Cloud Storage FUSE es un adaptador FUSE de código abierto que te permite activar los buckets de Cloud Storage como sistemas de archivos locales. Esta configuración permite que las aplicaciones interactúen sin problemas con los buckets de almacenamiento basados en la nube mediante la semántica del sistema estándar similar a un archivo. Cloud Storage FUSE te permite aprovechar la escalabilidad y la rentabilidad de costos de Cloud Storage.
Arquitectura
Según tus requisitos de rendimiento, disponibilidad y recuperación ante desastres (DR), puedes elegir uno de los siguientes Google Cloud arquetipos de implementación para ejecutar tus cargas de trabajo de IA y AA en Google Cloud:
- Regional: Tus aplicaciones se ejecutan de forma independiente dentro de una sola Google Cloud región. Recomendamos este arquetipo de implementación para aplicaciones que no son fundamentales, pero que deben ser sólidas contra las interrupciones zonales.
- Multirregional: Tus aplicaciones se ejecutan de forma independiente en dos o más regiones de Google Cloud , en modo activo-activo o activo-pasivo. Este arquetipo de implementación es ideal para admitir situaciones de DR. Recomendamos este arquetipo de implementación para aplicaciones esenciales que necesitan resiliencia contra interrupciones y desastres regionales. Las implementaciones dobles o multirregionales pueden reducir la latencia y mejorar la capacidad de procesamiento a través de una proximidad de recursos más cercana.
El arquetipo de implementación que elijas informa los productos y las funciones de Google Cloud que necesitas para tu arquitectura. La arquitectura multirregional usa la Caché en cualquier lugar. Para evaluar si Anywhere Cache es adecuada para tu carga de trabajo, usa el recomendador de Anywhere Cache para analizar el uso y el almacenamiento de datos.
En las siguientes pestañas, se proporcionan arquitecturas de referencia para los arquetipos de implementación regionales y multirregionales:
Regional
En el siguiente diagrama, se muestra una arquitectura regional de ejemplo que usa Cloud Storage FUSE para optimizar el rendimiento de los flujos de trabajo de entrenamiento y publicación de modelos:
Esta arquitectura incluye los siguientes componentes:
- Clúster de GKE: GKE administra los nodos de procesamiento en los que se ejecutan los procesos de entrenamiento y publicación de tus modelos de IA y AA. GKE administra la infraestructura subyacente de los clústeres de Kubernetes, incluido el plano de control, los nodos y todos los componentes del sistema.
- Programador de Kubernetes: El plano de control de GKE programa las cargas de trabajo y administra su ciclo de vida, escalamiento y actualizaciones. El agente de nodo de Kubernetes (
kubelet
), que no se muestra en el diagrama, se comunica con el plano de control. El agentekubelet
es responsable de iniciar y ejecutar los contenedores programados en los nodos de GKE. Para obtener más información sobre el programador, consulta Organización de IA/AA en GKE. - Red de nube privada virtual (VPC): Todos los recursos de Google Cloud la arquitectura usan una sola red de VPC. Según tus requisitos, puedes optar por compilar una arquitectura que use varias redes. Para obtener más información sobre cómo configurar una red de VPC para FUSE de Cloud Storage, consulta Decide si crear o no varias redes de VPC.
- Cloud Load Balancing: En esta arquitectura, Cloud Load Balancing distribuye de manera eficiente las solicitudes de inferencia entrantes de los usuarios de la aplicación a los contenedores de entrega en el clúster de GKE. Para obtener más información, consulta Información sobre el balanceo de cargas de GKE.
- Unidad de procesamiento gráfico (GPU) o unidades de procesamiento tensorial (TPU): Las GPUs y las TPU son aceleradores de máquinas especializados que mejoran el rendimiento de tus cargas de trabajo de IA y AA. Para obtener información sobre cómo elegir un tipo de procesador adecuado, consulta Opciones de acelerador más adelante en este documento.
- Cloud Storage: Cloud Storage proporciona almacenamiento persistente, escalable y rentable para tus cargas de trabajo de IA y AA. Cloud Storage funciona como el repositorio central de tus conjuntos de datos de entrenamiento sin procesar, los puntos de control del modelo y los modelos entrenados finales.
- Cloud Storage FUSE con la caché de archivos habilitada: Cloud Storage FUSE te permite activar un bucket de Cloud Storage como un sistema de archivos local. La caché de archivos en Cloud Storage FUSE es un directorio en la máquina local que almacena los archivos a los que se accede con frecuencia desde tus buckets de Cloud Storage. El controlador CSI de Cloud Storage FUSE administra la integración de Cloud Storage FUSE con la API de Kubernetes para consumir buckets de Cloud Storage como volúmenes.
En las siguientes secciones, se describe el flujo de trabajo en las cargas de trabajo de entrenamiento y entrega de la arquitectura.
Multirregional
En el siguiente diagrama, se muestra una arquitectura multirregional de ejemplo que usa Cloud Storage FUSE y Anywhere Cache para optimizar el rendimiento de los flujos de trabajo de entrenamiento y entrega de modelos:
Esta arquitectura incluye los siguientes componentes:
- Clúster de GKE: GKE administra los nodos de procesamiento en los que se ejecutan los procesos de entrenamiento y entrega de modelos de IA y AA. GKE administra la infraestructura subyacente de los clústeres de Kubernetes, incluido el plano de control, los nodos y todos los componentes del sistema.
- Programador de Kubernetes: El plano de control de GKE programa las cargas de trabajo y administra su ciclo de vida, escalamiento y actualizaciones. El agente de nodo de Kubernetes (
kubelet
), que no se muestra en el diagrama, se comunica con el plano de control. El agentekubelet
es responsable de iniciar y ejecutar los contenedores programados en los nodos de GKE. Para obtener más información sobre el programador, consulta Organización de IA/AA en GKE. - Red de nube privada virtual (VPC): Todos los recursos de Google Cloud la arquitectura usan una sola red de VPC. Según tus requisitos, puedes optar por compilar una arquitectura que use varias redes. Para obtener más información sobre cómo configurar una red de VPC para FUSE de Cloud Storage, consulta Decide si crear o no varias redes de VPC.
- Cloud DNS: En las arquitecturas multirregionales, Cloud DNS dirige el tráfico a los balanceadores de cargas para garantizar un rendimiento y una disponibilidad óptimos a través del enrutamiento anycast. Las solicitudes se enrutan automáticamente a la ubicación más cercana, lo que reduce la latencia y mejora el rendimiento de las búsquedas de nombres autorizadas para tus usuarios. Para obtener información sobre los principios generales y las prácticas recomendadas, consulta Prácticas recomendadas para Cloud DNS.
- Cloud Load Balancing: En esta arquitectura, Cloud Load Balancing distribuye de manera eficiente las solicitudes de inferencia entrantes de los usuarios de la aplicación a los contenedores de entrega en el clúster de GKE. Para obtener más información, consulta Información sobre el balanceo de cargas de GKE.
- Unidad de procesamiento gráfico (GPU) o unidades de procesamiento tensorial (TPU): Las GPUs y las TPU son aceleradores de máquinas especializados que mejoran el rendimiento de tus cargas de trabajo de IA y AA. Para obtener información sobre cómo elegir un tipo de procesador adecuado, consulta Opciones de acelerador más adelante en este documento.
- Cloud Storage: Cloud Storage proporciona almacenamiento persistente, escalable y rentable para tus cargas de trabajo de IA y AA. Cloud Storage funciona como el repositorio central de tus conjuntos de datos de entrenamiento sin procesar, los puntos de control del modelo y los modelos entrenados finales.
- Cloud Storage FUSE: Cloud Storage FUSE te permite activar un bucket de Cloud Storage como un sistema de archivos local. El controlador CSI de Cloud Storage FUSE, que no se muestra en el diagrama, administra la integración de Cloud Storage FUSE con la API de Kubernetes para consumir buckets de Cloud Storage como volúmenes.
- Anywhere Cache: Esta función de Cloud Storage proporciona hasta 1 PiB de caché de solo lectura zonal respaldada por SSD para los buckets de Cloud Storage. Durante el entrenamiento y la publicación, Anywhere Cache te ayuda a lograr una capacidad de procesamiento que supera los 1 TB/s a través de la escalamiento de la capacidad y el ancho de banda de la caché.
En las siguientes secciones, se describe el flujo de trabajo en las cargas de trabajo de entrenamiento y entrega de la arquitectura.
Carga de trabajo de entrenamiento
En las arquitecturas anteriores, los siguientes son los pasos del flujo de datos durante el entrenamiento del modelo:
- Carga datos de entrenamiento en Cloud Storage: Los datos de entrenamiento se suben a un bucket de Cloud Storage con espacios de nombres jerárquicos habilitados. Cloud Storage funciona como un repositorio central escalable.
- Carga datos de entrenamiento y ejecuta trabajos de entrenamiento en GKE: El bucket de Cloud Storage que se activa en tus pods de GKE permite que tus aplicaciones de entrenamiento carguen y accedan de manera eficiente a los datos de entrenamiento con la interfaz de FUSE. Los nodos de GKE ejecutan el proceso de entrenamiento del modelo con la caché de archivos activada como fuente de datos. Tus aplicaciones de entrenamiento alimentan datos de entrenamiento de forma continua a los aceleradores de máquinas para realizar los cálculos complejos que se requieren para el entrenamiento del modelo. Según los requisitos de tu carga de trabajo, puedes usar GPUs o TPU. Si necesitas información para elegir un tipo de procesador adecuado, consulta Opciones de acelerador más adelante en este documento.
Punto de control y guardado y restablecimiento de modelos:
- Guarda puntos de control o modelos: Durante el entrenamiento, guarda puntos de control de forma asíncrona en intervalos frecuentes en un bucket de Cloud Storage independiente. Los puntos de control capturan el estado del modelo según las métricas o los intervalos que definas.
- Restaura puntos de control o modelos: Cuando tu carga de trabajo de entrenamiento requiera que restaures un punto de control o datos de modelo, debes ubicar el activo que deseas restaurar en Cloud Storage. Puedes usar el punto de control o el modelo restaurado para reanudar la capacitación, ajustar los parámetros o evaluar el rendimiento en un conjunto de validación.
Publicación de cargas de trabajo
En las arquitecturas anteriores, los siguientes son los pasos del flujo de datos durante la publicación del modelo:
- Carga el modelo: Después de que se complete el entrenamiento, tus pods cargarán el modelo entrenado con Cloud Storage FUSE con descargas en paralelo habilitadas. Las descargas en paralelo aceleran la carga del modelo, ya que recuperan las partes del modelo en paralelo desde Cloud Storage. Para reducir significativamente los tiempos de carga del modelo, el proceso usa el directorio de caché como un búfer de precarga.
- Solicitud de inferencia: Los usuarios de la aplicación envían solicitudes de inferencia desde la aplicación de IA y AA a través del servicio de Cloud Load Balancing. Cloud Load Balancing distribuye las solicitudes entrantes entre los contenedores de entrega en el clúster de GKE. Esta distribución garantiza que ningún contenedor se sobrecargue y que las solicitudes se procesen de manera eficiente.
- Publicación de respuestas: Los nodos procesan la solicitud y generan una predicción. Los contenedores de publicación vuelven a enviar las respuestas a través de Cloud Load Balancing y, luego, a los usuarios de la aplicación.
Productos usados
Las arquitecturas de referencia usan los siguientes Google Cloud productos:
- Google Kubernetes Engine (GKE): Un servicio de Kubernetes que puedes usar para implementar y operar aplicaciones en contenedores a gran escala con la infraestructura de Google.
- Cloud Storage: Un depósito de objetos de bajo costo y sin límites para varios tipos de datos. Se puede acceder a los datos desde dentro y fuera de Google Cloud, y estos se replican en las ubicaciones para aumentar la redundancia.
- Nube privada virtual (VPC): Un sistema virtual que proporciona funcionalidad de red global y escalable para tus Google Cloud cargas de trabajo. La VPC incluye el intercambio de tráfico entre redes de VPC, Private Service Connect, el acceso a servicios privados y la VPC compartida.
- Cloud Load Balancing: Una cartera de balanceadores de cargas escalables, globales y regionales de alto rendimiento.
- Cloud DNS: Es un servicio que proporciona un DNS resistente y con baja latencia de la red mundial de Google.
Caso de uso
Para las cargas de trabajo de IA y AA que requieren una gran capacidad de almacenamiento y acceso a archivos de alto rendimiento, te recomendamos que uses una arquitectura basada en Cloud Storage FUSE. Con una planificación adecuada, puedes lograr más de 1 TB/s de rendimiento con estas arquitecturas. Además, Cloud Storage FUSE te permite aprovechar un repositorio de almacenamiento central que sirve como única fuente de información para todas las etapas del flujo de trabajo de IA y AA. Este enfoque se puede usar para cualquier carga de trabajo, independientemente de su escala o tamaño.
Para estas cargas de trabajo, Cloud Storage FUSE proporciona los siguientes beneficios:
- Acceso a datos simplificado: Accede a los datos de entrenamiento y a los puntos de control con frameworks de IA y AA, como Connector for PyTorch, JAX y TensorFlow. El acceso a los datos a través de frameworks de IA y AA elimina la necesidad de refactorizar el código.
- Inicio acelerado: Elimina la necesidad de descargar conjuntos de datos grandes para procesar recursos con Cloud Storage FUSE para acceder directamente a los datos en Cloud Storage. Este acceso directo a los datos genera tiempos de inicio de trabajos más rápidos.
- Rentabilidad: Optimiza los costos con la escalabilidad y la rentabilidad inherentes de Cloud Storage.
Cloud Storage FUSE no es adecuado para cargas de trabajo sensibles a la latencia que contienen archivos de menos de 50 MB o que requieren una latencia de menos de 1 milisegundo para el acceso a metadatos y E/S aleatoria.
Para el entrenamiento con uso intensivo de datos o el punto de control y el reinicio de las cargas de trabajo, considera una alternativa de almacenamiento durante la fase de entrenamiento intensivo de E/S.
Alternativas de diseño
En las siguientes secciones, se presentan enfoques de diseño alternativos que puedes considerar para tu aplicación de IA y AA en Google Cloud.
Alternativa de plataforma
En lugar de alojar el entrenamiento de tu modelo y el flujo de trabajo de publicación en GKE, puedes considerar Compute Engine con Slurm. Slurm es un administrador de recursos y cargas de trabajo de código abierto y altamente configurable. El uso de Compute Engine con Slurm es particularmente adecuado para el entrenamiento y las simulaciones de modelos a gran escala. Te recomendamos que uses Compute Engine con Slurm si necesitas integrar propiedad intelectual (PI) de IA y AA en un entorno escalable con la flexibilidad y el control para optimizar el rendimiento de las cargas de trabajo especializadas. Para obtener más información sobre cómo usar Compute Engine con Slurm, consulta Cómo implementar un clúster de HPC con Slurm.
En Compute Engine, aprovisionas y administras tus máquinas virtuales (VM), lo que te brinda un control detallado sobre los tipos de instancias, el almacenamiento y las redes. Puedes adaptar tu infraestructura a tus necesidades exactas, incluida la selección de tipos de máquinas específicas de VM. Para obtener información sobre cómo usar las opciones de línea de comandos de Cloud Storage FUSE en Compute Engine, consulta la CLI de gcsfuse y el archivo de configuración de Cloud Storage FUSE. También puedes usar la familia de máquinas con optimización de acelerador para mejorar el rendimiento de tus cargas de trabajo de IA y AA. Para obtener más información sobre las familias de tipos de máquinas disponibles en Compute Engine, consulta la guía de comparación y recursos de familias de máquinas.
Slurm ofrece una opción potente para administrar cargas de trabajo de IA y AA, y te permite controlar la configuración y la administración de los recursos de procesamiento. Para usar este enfoque, necesitas experiencia en la administración de Slurm y en la administración de sistemas Linux.
Opciones de acelerador
Los aceleradores de máquinas son procesadores especializados diseñados para acelerar los cálculos necesarios para las cargas de trabajo de IA y AA. Puedes elegir entre GPUs o TPUs.
- Los aceleradores de GPU proporcionan un rendimiento excelente para una amplia variedad de tareas, como la renderización gráfica, el entrenamiento de aprendizaje profundo y el procesamiento científico. Google Cloud tiene una amplia selección de GPUs para todo tipo de precios y necesidades de rendimiento. Las GPUs suelen incluir SSD locales en cada configuración de la máquina, que Cloud Storage FUSE puede usar como directorio de caché. Para obtener información sobre los modelos y los precios de las GPU, consulta Precios de GPU.
- Las TPU son aceleradores de IA con diseño personalizado que están optimizados para el entrenamiento y la inferencia de grandes modelos de IA. Son ideales para una variedad de casos de uso, como chatbots, generación de código, generación de contenido multimedia, voz sintética, servicios de visión, motores de recomendaciones y modelos de personalización. Para obtener más información sobre los modelos y los precios de las TPU, consulta Precios de las TPU.
Alternativas de almacenamiento
Cloud Storage FUSE proporciona un sistema de archivos conveniente que te permite aprovechar la escalabilidad y la rentabilidad de Cloud Storage. Sin embargo, Cloud Storage FUSE no es ideal para cargas de trabajo que exigen una latencia baja para la lectura de archivos pequeños o para cargas de trabajo que requieren una solución de almacenamiento compatible con POSIX. Para estos casos de uso, te recomendamos que consideres las siguientes alternativas de almacenamiento:
- Hyperdisk ML de Google Cloud: Una solución de almacenamiento en bloque de alto rendimiento que es ideal para cargas de trabajo que tienen clústeres a mayor escala de cientos de nodos con conjuntos de datos de solo lectura más pequeños que van desde cientos de GB hasta 64 TB. Hyperdisk ML tiene una capacidad de procesamiento más alta que el almacenamiento en la nube y se puede conectar a varias VMs en modo de solo lectura. El modo de acceso Kubernetes ReadOnlyMany permite que Hyperdisk ML acelere la carga de pesos del modelo en comparación con la carga directamente desde un registro de modelos. Para obtener más información sobre el uso de Hyperdisk ML en cargas de trabajo de IA y AA, consulta Acelera la carga de datos de IA/AA con Hyperdisk ML.
- Connector for PyTorch: Producto de código abierto en Cloud Storage ideal para cargas de trabajo que usan PyTorch. El conector para PyTorch optimiza tu carga de trabajo de entrenamiento, ya que transmite datos directamente desde tus buckets de Cloud Storage y elimina la necesidad de almacenamiento intermedio. Este acceso directo y optimización proporcionan un rendimiento significativamente mejor que las llamadas directas a la API a Cloud Storage para la carga, el entrenamiento y los puntos de control de datos.
Si bien las opciones de almacenamiento alternativas pueden ofrecer ventajas de rendimiento para ciertas cargas de trabajo de IA y AA, es fundamental evaluar tus necesidades de latencia, rendimiento y capacidad de almacenamiento.
Para obtener una comparación integral de las opciones de almacenamiento para cargas de trabajo de IA y AA, consulta Diseña el almacenamiento para cargas de trabajo de IA y AA en Google Cloud.
Consideraciones del diseño
En esta sección, se proporciona orientación sobre las prácticas recomendadas y las consideraciones de diseño para configurar Cloud Storage FUSE en función de la seguridad, la confiabilidad, el costo y el rendimiento. Si bien las recomendaciones que se incluyen aquí no son exhaustivas, abordan consideraciones clave para maximizar los beneficios de Cloud Storage FUSE en tu entorno. Según tus necesidades específicas y las características de tu carga de trabajo, es posible que debas considerar opciones de configuración y compensaciones adicionales.
En las siguientes recomendaciones de diseño, se destacan las configuraciones para definir mejor la forma en que se implementa Cloud Storage FUSE en GKE. La mayoría de las opciones de Cloud Storage FUSE se configuran con opciones de activación. Para obtener más información sobre las opciones de la línea de comandos de Cloud Storage FUSE y cómo usarlas, consulta gcsfuse CLI y Cómo optimizar el controlador de CSI de Cloud Storage FUSE para mejorar el rendimiento de GKE.
Security, privacy, and compliance
En esta sección, se describen las consideraciones para las cargas de trabajo de IA y AA en Google Cloud que cumplen con tus requisitos de seguridad, privacidad y cumplimiento.
Consideraciones de GKE
En el modo de operación Autopilot, GKE preconfigura tu clúster y administra los nodos según las prácticas recomendadas de seguridad, lo que te permite enfocarte en la seguridad específica de la carga de trabajo. Para obtener más información, consulta lo siguiente:
Si deseas garantizar un control de acceso mejorado para tus aplicaciones que se ejecutan en GKE, puedes usar Identity-Aware Proxy (IAP). El IAP se integra en el recurso de Ingress de GKE y ayuda a garantizar que solo los usuarios autenticados con el rol correcto de Identity and Access Management (IAM) puedan acceder a las aplicaciones. Para obtener más información, consulta Habilita IAP para GKE.
De forma predeterminada, tus datos en GKE se encriptan en reposo y en tránsito con Google-owned and Google-managed encryption keys. Como una capa adicional de seguridad para datos sensibles, puedes encriptar datos en la capa de aplicación mediante una clave que poseas y administres con Cloud Key Management Service (Cloud KMS). Para obtener más información, consulta Encripta Secrets en la capa de la aplicación.
Si usas un clúster de GKE estándar, puedes usar las siguientes funciones adicionales de encriptación de datos:
- Encripta los datos en uso (es decir, en la memoria) con Confidential GKE Nodes. Para obtener más información sobre las funciones, la disponibilidad y las limitaciones de Confidential GKE Nodes, consulta Encripta los datos de cargas de trabajo en uso con Confidential GKE Nodes.
- Si necesitas más control sobre las claves de encriptación que se usan para encriptar el tráfico de pods entre los nodos de GKE, puedes encriptar los datos en tránsito con las claves que administras. Para obtener más información, consulta Encripta tus datos en tránsito en GKE con claves de encriptación administradas por el usuario.
Consideraciones sobre Cloud Storage
De forma predeterminada, los datos que se almacenan en Cloud Storage se encriptan con Google-owned and Google-managed encryption keys. Si es necesario, puedes usar claves de encriptación administradas por el cliente (CMEK) o tus propias claves que administres mediante un método de administración externo, como las claves de encriptación proporcionadas por el cliente (CSEK). Para obtener más información, consulta Opciones de encriptación de datos.
Cloud Storage admite dos métodos para otorgar permiso a los usuarios a fin de acceder a tus buckets y objetos: IAM y las listas de control de acceso (LCA). En la mayoría de los casos, te recomendamos que uses IAM, que te permite otorgar permisos a nivel de proyecto y de bucket. Para obtener más información, consulta Descripción general del control de acceso.
Los datos de entrenamiento que cargas a través de Cloud Storage pueden incluir datos sensibles. Para proteger estos datos, puedes usar la Protección de datos sensibles para descubrir, clasificar y desidentificar los datos. Para separar las cargas de trabajo de entrenamiento y de entrega, guarda el modelo y los puntos de control en buckets de Cloud Storage separados. Este aislamiento ayuda a evitar la exposición accidental de información sensible de tu conjunto de datos de entrenamiento durante la publicación. Para obtener más información, consulta Usa la protección de datos sensibles con Cloud Storage.
Si tienes requisitos de residencia de datos, Cloud Storage puede ayudarte a satisfacerlos. Los datos se almacenan o replican dentro de las regiones que especifiques.
Consideraciones sobre Cloud Storage FUSE
Cuando habilitas el almacenamiento en caché, Cloud Storage FUSE almacena los archivos persistentes de tu bucket de Cloud Storage en un formato sin encriptar dentro del directorio que especifiques. Cloud Storage expone todos los archivos a cualquier usuario o proceso que tenga acceso al directorio. Para mitigar estos riesgos y mejorar la seguridad, la capa del kernel de FUSE restringe el acceso al sistema de archivos al usuario que activó el sistema. Esta restricción niega el acceso a otros usuarios, incluido el usuario raíz, incluso si los permisos de inodo son más permisivos.
Sin embargo, hay casos de uso en los que podría ser necesario anular las restricciones de acceso predeterminadas. Por ejemplo, en una carga de trabajo de entrenamiento de IA y de AA distribuida en la que varios nodos deben acceder a puntos de control almacenados en Cloud Storage y compartirlos, es posible que debas permitir un acceso más amplio. En esos casos, puedes anular la restricción predeterminada con la opción -o allow_other
.
Sin embargo, si amplías el acceso a tus archivos, es posible que expongas tus datos a usuarios no autorizados.
Por lo tanto, debes tener cuidado cuando uses esta opción.
De forma predeterminada, el usuario que activó el sistema de archivos es el propietario de todos los inodos en un sistema de archivos FUSE de Cloud Storage. Aunque estos valores predeterminados pueden ser adecuados para muchos casos, puedes personalizar un contexto de seguridad para tu pod. Para obtener información sobre cómo personalizar un contexto de seguridad, consulta Seguridad y permisos.
Confiabilidad
Para garantizar un funcionamiento confiable, Cloud Storage FUSE incorpora reintentos automáticos para controlar posibles interrupciones y mantener la coherencia de los datos. Las solicitudes que fallan se reintentan automáticamente con una retirada exponencial en Cloud Storage. La retirada exponencial aumenta gradualmente el tiempo entre los reintentos. Este mecanismo integrado ayuda a tu aplicación a superar los problemas transitorios de red o la falta de disponibilidad temporal de Cloud Storage.
Aunque Cloud Storage FUSE ofrece muchas ventajas, ten en cuenta lo siguiente:
- Operaciones de escritura simultáneas: Cuando varios usuarios intentan modificar un archivo, la operación de última escritura gana tiene prioridad y se pierden todas las operaciones de escritura anteriores. Para mantener la integridad de los datos, te recomendamos que una sola fuente modifique un solo objeto en un momento determinado.
- Persistencia de la caché: Cuando desmontas o reinicias el bucket, las cachés no persisten. Para evitar posibles problemas de seguridad, después de desmontar o reiniciar el bucket, es fundamental que borres manualmente el directorio de la caché de archivos.
- Procesos con cachés dedicadas: Aunque Cloud Storage FUSE admite el acceso simultáneo para un procesamiento en paralelo eficiente, es importante recordar que las cachés son específicas de cada proceso de Cloud Storage FUSE. Por lo tanto, diferentes procesos de Cloud Storage FUSE que se ejecutan en las mismas máquinas o en máquinas diferentes no deben usar el mismo directorio de caché.
Cuando compiles la arquitectura de tu carga de trabajo, también considera las prácticas recomendadas y las recomendaciones generales que se proporcionan en el Framework de arquitectura bien definida: Pilar de confiabilidad.
Optimización de costos
En esta sección, se proporciona orientación para ayudarte a optimizar el costo de configurar y operar tu flujo de trabajo de IA y AA en Google Cloud.
Consideraciones de GKE
En el modo Autopilot, GKE optimiza la eficiencia de la infraestructura de tu clúster en función de los requisitos de la carga de trabajo. Para controlar los costos, no es necesario que supervises constantemente el uso de recursos ni que administres la capacidad.
Si puedes predecir el uso de CPU, memoria y almacenamiento efímero de tu clúster de Autopilot, puedes obtener descuentos por compromiso de uso. Para reducir el costo de ejecución de tu aplicación, puedes usar las VMs Spot para tus nodos de GKE. Las VMs Spot tienen un precio menor que las VMs estándar, pero no proporcionan garantía de disponibilidad.
Para optimizar el costo y el rendimiento a través de una administración eficiente, usa el programador de cargas de trabajo dinámico. El programador dinámico de cargas de trabajo es un programador de trabajos y administración de recursos que te ayuda a mejorar el acceso a los recursos de IA y AA. El programador dinámico de cargas de trabajo programa todos tus aceleradores de forma simultánea y puede ejecutarse durante las horas de menor demanda con la administración de capacidad de acelerador definida. Cuando se programan trabajos de forma estratégica, el programador dinámico de cargas de trabajo ayuda a maximizar el uso del acelerador, reducir el tiempo de inactividad y, en última instancia, optimizar tu inversión en la nube.
Si quieres obtener más orientación sobre la optimización de costos, consulta Prácticas recomendadas para ejecutar aplicaciones de Kubernetes con optimización de costos en GKE.
Consideraciones sobre Cloud Storage
Tus necesidades de almacenamiento de IA y AA pueden ser dinámicas. Por ejemplo, es posible que necesites una capacidad de almacenamiento significativa para tus datos de entrenamiento, pero tu requisito de capacidad disminuye para la publicación, en la que almacenas principalmente datos de modelos y puntos de control. Para controlar los costos, te recomendamos que habilites la administración del ciclo de vida de los objetos y Autoclass.
La administración del ciclo de vida de los objetos te permite mover automáticamente los datos más antiguos o sin usar a clases de almacenamiento más económicas o incluso borrarlos, según las reglas que establezcas.
La función Autoclass mueve datos automáticamente entre clases de almacenamiento según tus patrones de acceso. Esta función garantiza que obtengas el mejor equilibrio entre rendimiento y costo.
Consideraciones sobre Cloud Storage FUSE
Los cargos estándar de Cloud Storage se aplican al almacenamiento, las operaciones de metadatos y el tráfico de red que generan tus actividades de FUSE. No se aplica ningún costo adicional por usar Cloud Storage FUSE. Para obtener más información sobre las operaciones comunes de Cloud Storage FUSE y cómo se asignan a las operaciones de Cloud Storage, consulta la asignación de operaciones.
Para optimizar los costos de tu directorio de caché, puedes usar la capacidad de la máquina aprovisionada existente, incluidos los SSD locales, los discos persistentes o los datos en la memoria para los sistemas de archivos temporales. Cuando usas la capacidad de la máquina existente, puedes evitar que se generen cargos por recursos de almacenamiento adicionales. Además, maximizar los aciertos de caché puede reducir significativamente los costos de Cloud Storage, ya que los datos que se entregan de forma local no generan cargos de operación ni de salida de red.
Para obtener más información sobre los cargos, consulta Precios de Cloud Storage.
Cuando compiles la arquitectura de tu carga de trabajo, también considera las prácticas recomendadas y las recomendaciones generales que se proporcionan en el Framework de arquitectura bien definida: Pilar de optimización de costos.
Optimización del rendimiento
Cloud Storage FUSE está diseñado para proporcionar acceso eficiente a los datos en Cloud Storage para tus cargas de trabajo de IA y AA. Sin embargo, las solicitudes de metadatos frecuentes pueden reducir el rendimiento, especialmente en clústeres de gran escala. Para obtener más información sobre cómo mejorar el rendimiento, consulta Cómo optimizar el controlador de CSI de Cloud Storage FUSE para mejorar el rendimiento de GKE.
Para optimizar el rendimiento, considera las siguientes configuraciones:
- Habilita los espacios de nombres jerárquicos: Para mejorar el acceso y la organización de los datos, crea buckets de Cloud Storage con espacios de nombres jerárquicos habilitados. Los espacios de nombres jerárquicos te permiten organizar los datos en una estructura de sistema de archivos, lo que mejora el rendimiento, garantiza la coherencia y simplifica la administración de cargas de trabajo de IA y AA. Los espacios de nombres jerárquicos permiten QPS iniciales más altos y cambios de nombre de directorios atómicos rápidos.
Habilita el almacenamiento en caché de archivos: El almacenamiento en caché de archivos acelera el acceso repetido a los datos de entrenamiento mediante el uso de un directorio de nodos local para almacenar en caché los archivos que se leen con frecuencia. La entrega de lecturas repetidas desde un medio de caché reduce la latencia y minimiza las operaciones devueltas a Cloud Storage. En los tipos de máquinas de GPU con una SSD local, el directorio de SSD local se usa automáticamente. En el caso de los tipos de máquinas que no incluyen SSD locales, como las TPU, puedes usar un directorio de disco de RAM, como
/tmpfs
.Para habilitar la caché de archivos, usa las siguientes opciones de activación:
- Para establecer el valor de la caché de archivos utilizable en el límite de capacidad de la caché, establece
file-cache:max-size-mb:
en-1
. - Para establecer el tiempo de actividad (TTL) de la caché de metadatos en una duración ilimitada y la expulsión en función del algoritmo de menos usado recientemente (LRU) después de que se alcance la capacidad máxima, establece
metadata-cache:ttl-secs:
en-1
.
- Para establecer el valor de la caché de archivos utilizable en el límite de capacidad de la caché, establece
Aumenta los valores de la caché de metadatos: Cloud Storage FUSE tiene dos formas de caché de metadatos que mejoran el rendimiento de las operaciones relacionadas con las búsquedas de metadatos: caché de estadísticas y caché de tipo.
Para aumentar los valores de la caché de metadatos, establece las siguientes opciones de activación:
- Para establecer el valor de la caché de estadísticas utilizable en el límite de capacidad de la caché, establece
metadata-cache:stat-cache-max-size-mb:
en-1
. - Para establecer el valor de la caché de tipos utilizables en el límite de capacidad, establece
metadata-cache:type-cache-max-size-mb:
en-1
. - Para evitar que venza el contenido de metadatos almacenado en caché, con un valor predeterminado de 60 segundos, establece
metadata-cache:ttl-secs:
en-1
. Los valores infinitos solo deben usarse para volúmenes de solo lectura y nodos con configuraciones de memoria grandes.
- Para establecer el valor de la caché de estadísticas utilizable en el límite de capacidad de la caché, establece
Propaga previamente la caché de metadatos: La función de precarga de metadatos permite que el controlador CSI de Cloud Storage FUSE cargue de forma proactiva metadatos relevantes sobre los objetos de tu bucket de Cloud Storage en las cachés de Cloud Storage FUSE. Este enfoque reduce las llamadas a Cloud Storage y es especialmente beneficioso para las aplicaciones que acceden a conjuntos de datos grandes que tienen muchos archivos, como las cargas de trabajo de capacitación de IA y AA.
Para prepropagar la caché de metadatos, habilita la recuperación previa de metadatos para el volumen determinado. Establece el atributo de volumen
gcsfuseMetadataPrefetchOnMount
entrue
.Habilita el almacenamiento en caché de la lista: Esta función optimiza los directorios y archivos de las fichas. Es especialmente beneficioso para las cargas de trabajo de entrenamiento de IA y AA, que a menudo implican acceder y enumerar directorios completos de forma reiterada. La caché de listas proporciona procesos de entrenamiento altamente eficientes, ya que reduce la necesidad de acceder de forma reiterada a las fichas de directorio en la memoria de la computadora.
Para habilitar el almacenamiento en caché de listas y evitar que venza la caché de la lista del kernel, configura la opción de activación
file-system:kernel-list-cache-ttl-secs:
en-1
.Habilita las descargas en paralelo: Las descargas en paralelo aceleran la carga inicial del modelo, ya que recuperan varios fragmentos de forma simultánea. Habilitar las descargas en paralelo permite una carga de modelos más rápida y una mayor capacidad de respuesta durante la publicación.
Para habilitar las descargas paralelas, habilita la caché de archivos y configura la opción de activación
file-cache:enable-parallel-downloads:
comotrue
.Aumenta los límites del contenedor secundario de GKE: Para evitar que las restricciones de recursos impidan el rendimiento, configura límites en los recursos del contenedor secundario, como el consumo de CPU y memoria. Si usas una caché de SSD local, considera establecer
ephemeral-storage-limit
como ilimitado. Este parámetro de configuración habilita a Cloud Storage FUSE para que use por completo el almacenamiento SSD local disponible para mejorar el almacenamiento en caché.Conexión de solo lectura: Debido a que las cargas de trabajo de entrenamiento suelen solo necesitar leer datos, configura el punto de activación como de solo lectura para obtener un rendimiento óptimo, en especial cuando usas el almacenamiento en caché de archivos. Esta configuración también ayuda a maximizar los beneficios de las optimizaciones en clústeres de alta escala y a evitar posibles inconsistencias de datos.
Cuando compiles la arquitectura para tu carga de trabajo, considera las prácticas recomendadas y las recomendaciones generales que se proporcionan en el Framework de arquitectura bien definida: Pilar de optimización del rendimiento.
¿Qué sigue?
- Más información:
- Descripción general de Cloud Storage FUSE.
- Acerca del controlador de CSI de Cloud Storage FUSE para GKE.
- Optimiza el controlador de CSI de Cloud Storage FUSE para mejorar el rendimiento de GKE.
- Prácticas recomendadas para implementar el aprendizaje automático en Google Cloud.
- Diseña almacenamiento para cargas de trabajo de IA y AA en Google Cloud.
- Implementación:
- Para obtener más información sobre las arquitecturas de referencia, los diagramas y las prácticas recomendadas, explora Cloud Architecture Center.
Colaboradores
Autor: Samantha He | Escritor técnico
Otros colaboradores:
- Dean HildeBrand | Director técnico, oficina del director de Tecnología
- Autor: Kumar Dhanagopal | Desarrollador de soluciones entre productos
- Marco Abela | Gerente de producto
- Sean Derrington | Gerente de productos salientes del grupo