En este documento, se proporcionan arquitecturas de referencia que muestran cómo puedes usar Cloud Storage FUSE para optimizar el rendimiento de las cargas de trabajo de IA y 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 comprendes 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 a través de la semántica estándar del sistema similar a un archivo. Cloud Storage FUSE te permite aprovechar la escalabilidad y la rentabilidad 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 AA y AA en Google Cloud:
- Regional: Tus aplicaciones se ejecutan de forma independiente dentro de una sola región deGoogle Cloud. 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 Google Cloud regiones, ya sea 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 ante interrupciones y desastres regionales. Las implementaciones regionales dobles o múltiples pueden reducir la latencia y mejorar la capacidad de procesamiento gracias a una mayor proximidad de los recursos.
El arquetipo de implementación que elijas determinará los Google Cloud productos y las funciones que necesitas para tu arquitectura. La arquitectura multirregional usa la Caché en cualquier lugar. Para evaluar si Anywhere Cache es adecuado para tu carga de trabajo, usa el recomendador de Anywhere Cache para analizar tu uso y almacenamiento de datos.
En las siguientes pestañas, se proporcionan arquitecturas de referencia para los arquetipos de implementación regional y multirregional:
Regional
En el siguiente diagrama, se muestra una arquitectura regional de muestra que usa Cloud Storage FUSE para optimizar el rendimiento de los flujos de trabajo de entrenamiento de modelos 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 tu modelo 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 y AA en GKE. - Red de nube privada virtual (VPC): Todos los recursos de Google Cloudla 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 Cloud Storage FUSE, 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 Acerca del balanceo de cargas de GKE.
- Unidad de procesamiento gráfico (GPU) o Unidades de procesamiento tensorial (TPU): Las GPU 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 aceleradores 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 sirve como repositorio central para 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 de procesamiento 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 tu modelo de IA y AA. GKE administra la infraestructura subyacente de los clústeres de Kubernetes, incluidos 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 y AA en GKE. - Red de nube privada virtual (VPC): Todos los recursos de Google Cloudla 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 Cloud Storage FUSE, 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 de difusión a cualquier destino. 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 servicio en el clúster de GKE. Para obtener más información, consulta Acerca del balanceo de cargas de GKE.
- Unidad de procesamiento gráfico (GPU) o Unidades de procesamiento tensorial (TPU): Las GPU 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 aceleradores 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 sirve como repositorio central para 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: Anywhere Cache es una función de Cloud Storage que proporciona hasta 1 PiB de caché zonal de solo lectura respaldada por SSD para los buckets de Cloud Storage. Durante el entrenamiento y la entrega, Anywhere Cache te ayuda a alcanzar una capacidad de procesamiento que supera 1 TB/s, ya que aumenta la capacidad de la caché y el ancho de banda.
En las siguientes secciones, se describe el flujo de trabajo en las cargas de trabajo de entrenamiento y de procesamiento 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 los 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 a través de la interfaz de FUSE. Los nodos de GKE ejecutan el proceso de entrenamiento de modelos con la caché de archivos montada como fuente de datos. Tus aplicaciones de entrenamiento envían datos de entrenamiento de forma continua a los aceleradores de la máquina para realizar los cálculos complejos que se requieren para el entrenamiento de modelos. Según los requisitos de tu carga de trabajo, puedes usar GPU o TPU. Para obtener información sobre cómo elegir un tipo de procesador adecuado, consulta Opciones de aceleradores más adelante en este documento.
Punto de control y guardado y restablecimiento del modelo:
- Guardar puntos de control o el modelo: 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.
- Restaurar puntos de control o modelos: Cuando tu carga de trabajo de entrenamiento requiere que restaures un punto de control o datos del modelo, debes ubicar el activo que deseas restaurar en Cloud Storage. Puedes usar el modelo o el punto de control restablecido para reanudar el entrenamiento, ajustar los parámetros o evaluar el rendimiento en un conjunto de validación.
Carga de trabajo de entrega
En las arquitecturas anteriores, los siguientes son los pasos del flujo de datos durante la publicación del modelo:
- Carga del modelo: Una vez que se completa el entrenamiento, tus Pods cargan el modelo entrenado con Cloud Storage FUSE con descargas paralelas habilitadas. Las descargas paralelas 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 recuperación previa.
- 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 procesamiento del clúster de GKE. Esta distribución garantiza que ningún contenedor se sobrecargue y que las solicitudes se procesen de manera eficiente.
- Entrega de la respuesta: Los nodos procesan la solicitud y generan una predicción. Los contenedores de entrega envían 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 productos de Google Cloud :
- 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 y hacia Google Cloud, y estos se replican en las ubicaciones para aumentar la redundancia.
- Nube privada virtual (VPC): Es un sistema virtual que proporciona funcionalidad de red global y escalable para tus cargas de trabajo de Google Cloud . La VPC incluye el intercambio de tráfico entre redes de VPC, Private Service Connect, el acceso privado a servicios 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 servicio de DNS resistente y con baja latencia de la red mundial de Google.
Caso de uso
Para las cargas de trabajo de AA y de AA/ML que requieren una gran capacidad de almacenamiento y un acceso de alto rendimiento a los archivos, te recomendamos que uses una arquitectura basada en Cloud Storage FUSE. Con una planificación adecuada, puedes lograr un rendimiento superior a 1 TB/s 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 simplificado a los datos: 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 los frameworks de IA y AA elimina la necesidad de refactorizar el código.
- Inicio acelerado: Elimina la necesidad de descargar grandes conjuntos de datos en los recursos de procesamiento usando Cloud Storage FUSE para acceder directamente a los datos en Cloud Storage. Este acceso directo a los datos permite que los trabajos se inicien más rápido.
- Rentabilidad: Optimiza los costos aprovechando 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 intensiva 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 tu flujo de trabajo de entrenamiento y entrega de modelos 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 especialmente 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 AA y AA patentada en un entorno escalable con la flexibilidad y el control necesarios 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 Implementa 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 de VM específicos. Para obtener información sobre cómo usar las opciones de la 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 optimizadas para aceleradores y mejorar el rendimiento de tus cargas de trabajo de IA y AA. Para obtener más información sobre las familias de tipo de máquina 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 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 excelente rendimiento para una amplia variedad de tareas, como la renderización de gráficos, el entrenamiento de aprendizaje profundo y la computación científica. Google Cloud tiene una amplia selección de GPU para todo tipo de precios y necesidades de rendimiento. Las GPUs suelen incluir SSD locales en cada configuración de máquina, que Cloud Storage FUSE puede usar como directorio de caché. Para obtener información sobre los modelos de GPU y los precios, 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 precios de TPU, consulta Precios de 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 las cargas de trabajo que exigen una latencia baja para las lecturas de archivos pequeños ni para las 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:
- Google Cloud Hyperdisk ML: Es una solución de almacenamiento en bloque de alto rendimiento ideal para cargas de trabajo que tienen clústeres a mayor escala de cientos de nodos con conjuntos de datos más pequeños de solo lectura que varían de cientos de GB a 64 TB. Hyperdisk ML tiene un mayor rendimiento que Cloud Storage y se puede conectar a varias VMs en modo de solo lectura. El modo de acceso ReadOnlyMany de Kubernetes 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: Es un 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 transmitiendo datos directamente desde tus buckets de Cloud Storage y eliminando la necesidad de almacenamiento intermedio. Este acceso directo y esta optimización proporcionan un rendimiento significativamente mejor que las llamadas directas a la API de Cloud Storage para la carga, el entrenamiento y la creación de 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, capacidad de procesamiento 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 relación con 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 la carga de trabajo, es posible que debas considerar opciones de configuración y compensaciones adicionales.
Las siguientes recomendaciones de diseño destacan los parámetros de configuración para definir mejor cómo implementas 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 la CLI de gcsfuse y Cómo optimizar el controlador de CSI de Cloud Storage FUSE para el rendimiento de GKE.
Security, privacy, and compliance
En esta sección, se describen las consideraciones para tus cargas de trabajo de IA y AA en Google Cloud que cumplen con tus requisitos de seguridad, privacidad y cumplimiento.
Consideraciones sobre GKE
En el modo de operación de 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). IAP se integra con el recurso de entrada 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 con 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 capacidades 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 con 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 sistemas para otorgar permiso a los usuarios para acceder a tus buckets y objetos: IAM y las listas de control de acceso (LCA). En la mayoría de los casos, recomendamos usar 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 tus cargas de trabajo de entrenamiento y de servicio, guarda tu 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 cumplirlos. 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 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 deniega el acceso a otros usuarios, incluido el usuario raíz, incluso si los permisos de inode 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 AA distribuida en la que varios nodos necesitan acceder a los 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, todos los nodos I de un sistema de archivos de Cloud Storage FUSE son propiedad del usuario que activó el sistema de archivos. Si bien 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 fallaron 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 problemas de red transitorios o la falta de disponibilidad temporal de Cloud Storage.
Si bien Cloud Storage FUSE ofrece muchas ventajas, ten en cuenta lo siguiente:
- Escrituras 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 solo una fuente modifique un objeto en un momento determinado.
- Persistencia de la caché: Cuando desmontas o reinicias tu 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: Si bien Cloud Storage FUSE admite el acceso simultáneo para un procesamiento 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 la misma máquina o en máquinas diferentes no deben usar el mismo directorio de caché.
Cuando compiles la arquitectura para tu carga de trabajo, también considera las prácticas recomendadas y las recomendaciones generales que se proporcionan en el Framework de Well-Architected: 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 sobre GKE
En el modo Autopilot, GKE optimiza la eficiencia de la infraestructura de tu clúster según 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 ejecutar tu aplicación, puedes usar VMs Spot para tus nodos de GKE. Las VMs Spot tienen un precio más bajo 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 Dynamic Workload Scheduler. El programador dinámico de cargas de trabajo es un programador de trabajos y administrador 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 se puede ejecutar durante las horas de menor demanda con la administración de capacidad del acelerador definida. Al programar trabajos de forma estratégica, el programador dinámico de cargas de trabajo ayuda a maximizar el uso de los aceleradores, reducir el tiempo de inactividad y, en última instancia, optimizar tu inversión en la nube.
Si quieres obtener más información sobre la orientación para 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 entrega, en la que principalmente almacenas datos del modelo 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 no utilizados a clases de almacenamiento más económicas o incluso borrar los datos, según las reglas que establezcas.
La función Autoclass mueve automáticamente los datos entre las 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
Se aplican los cargos estándar de Cloud Storage por el almacenamiento, las operaciones de metadatos y el tráfico de red que generan tus actividades de FUSE. No se aplican costos adicionales 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 existente de la máquina, puedes evitar incurrir en 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 para tu carga de trabajo, también considera las prácticas recomendadas y las recomendaciones generales que se proporcionan en el Framework de Well-Architected: 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 AA y AA/ML. Sin embargo, las solicitudes frecuentes de metadatos pueden reducir el rendimiento, en especial en clústeres a gran escala. Si deseas obtener más información para mejorar el rendimiento, consulta Cómo optimizar el controlador de CSI de Cloud Storage FUSE para 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 las cargas de trabajo de IA y AA. Los espacios de nombres jerárquicos permiten una mayor cantidad de QPS iniciales 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 de vuelta a Cloud Storage. En los tipos de máquinas con GPU y SSD local, se usa automáticamente el directorio de la SSD local. Para los tipos de máquinas que no incluyen SSD local, como las TPU, puedes usar un directorio de disco 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 según el algoritmo menos usado recientemente (LRU) después de alcanzar 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é, configura
metadata-cache:stat-cache-max-size-mb:
en-1
. - Para establecer el valor de caché de tipo utilizable en el límite de capacidad, establece
metadata-cache:type-cache-max-size-mb:
en-1
. - Para evitar que venzan los elementos de metadatos almacenados en caché, con un valor predeterminado de 60 segundos, establece
metadata-cache:ttl-secs:
en-1
. Los valores infinitos solo se deben usar 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é, configura
Precarga de la caché de metadatos: La función de recuperación previa 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 grandes conjuntos de datos que tienen muchos archivos, como las cargas de trabajo de entrenamiento de IA y AA.
Para completar previamente la caché de metadatos, habilita la recuperación previa de metadatos para el volumen determinado. Establece el atributo de volumen
gcsfuseMetadataPrefetchOnMount
entrue
.Habilitar el almacenamiento en caché de listas: Esta función optimiza los directorios y archivos de fichas. Es especialmente beneficioso para las cargas de trabajo de entrenamiento de AA y de IA, que a menudo implican el acceso y el listado repetidos de directorios completos. El almacenamiento en caché de listas proporciona procesos de entrenamiento muy eficientes, ya que reduce la necesidad de acceder repetidamente a las listas de directorios en la memoria de tu computadora.
Para habilitar el almacenamiento en caché de listas y evitar que venzan los elementos de la caché de listas del kernel, establece la opción de activación
file-system:kernel-list-cache-ttl-secs:
en-1
.Habilita las descargas paralelas: Las descargas paralelas aceleran la carga inicial del modelo, ya que recuperan varios fragmentos de forma simultánea. Habilitar las descargas paralelas permite cargar los modelos más rápido y mejorar la capacidad de respuesta durante la entrega.
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 sidecar de GKE: Para evitar que las restricciones de recursos obstaculicen el rendimiento, configura límites en los recursos del contenedor sidecar, 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 permite que Cloud Storage FUSE use por completo el almacenamiento SSD local disponible para mejorar el almacenamiento en caché.Montaje de solo lectura: Dado que las cargas de trabajo de entrenamiento suelen necesitar solo 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 a gran escala y a evitar posibles incoherencias en los datos.
Cuando compiles la arquitectura para tu carga de trabajo, considera las prácticas recomendadas y las recomendaciones generales que se proporcionan en el pilar de optimización del rendimiento del Framework de Well-Architected.
¿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 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.
- Implementa:
- Para obtener más información sobre las arquitecturas de referencia, los diagramas y las prácticas recomendadas, explora Cloud Architecture Center.
Colaboradores
Autora: Samantha He | Escritora técnica
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