El sistema de archivos Fire-Flyer de DeepSeek
(github.com/deepseek-ai)Sistema de archivos Fire-Flyer
El sistema de archivos Fire-Flyer (3FS) es un sistema de archivos distribuido de alto rendimiento diseñado para resolver los problemas de las tareas de entrenamiento e inferencia de IA. Aprovecha SSD modernos y redes RDMA para ofrecer una capa de almacenamiento compartido que simplifica el desarrollo de aplicaciones distribuidas.
Rendimiento y usabilidad
- Arquitectura desacoplada: combina el ancho de banda de red de miles de SSD y cientos de nodos de almacenamiento para que las aplicaciones puedan acceder a los recursos de almacenamiento sin depender de la localidad.
- Consistencia fuerte: implementa Chain Replication with Apportioned Queries (CRAQ) para ofrecer consistencia fuerte, haciendo que el código de las aplicaciones sea más simple y fácil de entender.
- Interfaz de archivos: se desarrolló un servicio de metadatos sin estado basado en un almacén transaccional de clave-valor (por ejemplo, FoundationDB). La interfaz de archivos es ampliamente conocida y se usa en todas partes. No hace falta aprender una nueva API de almacenamiento.
Diversas cargas de trabajo
- Preparación de datos: organiza la salida de los pipelines de análisis de datos en una estructura jerárquica de directorios y gestiona eficientemente grandes volúmenes de salidas intermedias.
- Cargador de datos: permite acceso aleatorio a las muestras de entrenamiento a través de los nodos de cómputo, por lo que no es necesario precargar ni barajar el conjunto de datos.
- Checkpointing: admite checkpointing paralelo de alta velocidad para entrenamiento a gran escala.
- KVCache para inferencia: ofrece una alternativa rentable al caché basado en DRAM, con alto rendimiento y una capacidad considerablemente grande.
Rendimiento
1. Rendimiento pico
- En una prueba de estrés de lectura a gran escala del clúster 3FS, se logró un rendimiento agregado final de lectura de aproximadamente 6.6 TiB/s.
2. GraySort
- Se evaluó usando el benchmark GraySort, que mide el rendimiento de ordenamiento de conjuntos de datos a gran escala. Ordenar 110.5 TiB de datos en 8,192 particiones tomó 30 minutos y 14 segundos, logrando un rendimiento promedio de 3.66 TiB/min.
3. KVCache
- Se usó la tecnología KVCache para optimizar el proceso de inferencia de LLM. Al almacenar en caché los vectores de clave y valor de los tokens previos de las capas del decodificador, se evita el cómputo redundante. El rendimiento pico alcanzó hasta 40 GiB/s.
Documentación
- Notas de diseño
- Guía de configuración
- Referencia de la API USRBIO
- Especificación P
Revisar el código fuente
- Puedes clonar el repositorio de 3FS en GitHub para revisar el código fuente.
Reporte de problemas
- Para reportar problemas, visita la página de issues de GitHub.
1 comentarios
Comentarios en Hacker News
Este diseño se presentó originalmente aquí: enlace
3FS se usa durante el entrenamiento de IA en escenarios donde los nodos de cómputo leen datos de muestras por lotes
3FS usa AIO basado en Linux y la interfaz io_uring para completar la lectura de muestras
Una de las diferencias entre DeepSeek y OpenAI/Anthropic es la diferencia entre gente práctica y académicos
Los sistemas de archivos distribuidos se consideran uno de los tipos de software más difíciles de desarrollar
Artículo de investigación relacionado: enlace
Me preguntaba cómo logran ese rendimiento con un diseño basado en FUSE
OpenAI y otros también están profundamente involucrados en sus sistemas, pero es difícil ver este nivel de cuidado en otros lugares
Definitivamente son productivos
No está claro dónde y cómo se quedan cortos los sistemas populares actuales
Me pregunto si habría ventajas en portarlo a un orquestador como K8s
Me pregunto si hay alguien que pueda convencerme de que esto no es síndrome NIH