O sistema de arquivos Fire-Flyer da DeepSeek
(github.com/deepseek-ai)Sistema de arquivos Fire-Flyer
O sistema de arquivos Fire-Flyer (3FS) é um sistema de arquivos distribuído de alto desempenho projetado para resolver problemas de workloads de treinamento e inferência em IA. Ele aproveita SSDs modernos e redes RDMA para fornecer uma camada de armazenamento compartilhado que simplifica o desenvolvimento de aplicações distribuídas.
Desempenho e usabilidade
- Arquitetura desagregada: combina a largura de banda de rede de milhares de SSDs e centenas de nós de armazenamento, permitindo que as aplicações acessem recursos de armazenamento sem depender de localidade.
- Consistência forte: implementa Chain Replication with Apportioned Queries (CRAQ) para fornecer consistência forte, tornando o código da aplicação mais simples e fácil de entender.
- Interface de arquivos: desenvolveu um serviço de metadados stateless baseado em um armazenamento transacional de chave-valor (por exemplo, FoundationDB). A interface de arquivos é amplamente conhecida e usada em todo lugar. Não é necessário aprender uma nova API de armazenamento.
Diferentes cargas de trabalho
- Preparação de dados: organiza a saída de pipelines de análise de dados em uma estrutura hierárquica de diretórios e gerencia com eficiência grandes volumes de saídas intermediárias.
- DataLoader: permite acesso aleatório às amostras de treinamento em todos os nós de computação, eliminando a necessidade de pré-carregar ou embaralhar o dataset.
- Checkpointing: oferece suporte a checkpointing paralelo de alta velocidade para treinamento em larga escala.
- KVCache for Inference: fornece uma alternativa econômica ao cache baseado em DRAM, com alta taxa de transferência e capacidade bastante grande.
Desempenho
1. Pico de throughput
- Em um teste de estresse de leitura em larga escala no cluster 3FS, alcançou um throughput agregado final de leitura de cerca de 6.6 TiB/s.
2. GraySort
- Foi avaliado usando o benchmark GraySort, que mede o desempenho de ordenação de grandes datasets. Foram necessários 30 minutos e 14 segundos para ordenar 110.5 TiB de dados em 8.192 partições, alcançando um throughput médio de 3.66 TiB/min.
3. KVCache
- Usa a tecnologia KVCache para otimizar o processo de inferência de LLM. Evita cálculos redundantes ao armazenar em cache os vetores de chave e valor de tokens anteriores das camadas decodificadoras. O throughput de pico chegou a até 40 GiB/s.
Documentação
- Notas de design
- Guia de configuração
- Referência da API USRBIO
- Especificação P
Ver código-fonte
- É possível verificar o código-fonte clonando o repositório 3FS no GitHub.
Relatar problemas
- Para relatar problemas, basta visitar a página de issues no GitHub.
1 comentários
Comentários do Hacker News
Este design foi apresentado originalmente aqui: link
O 3FS é usado em cenários de leitura em lote de dados de amostra em nós de computação durante o treinamento de IA
O 3FS usa interfaces AIO baseadas em Linux e
io_uringpara concluir a leitura de amostrasUma das diferenças entre a Deepseek e OpenAI/Anthropic é a diferença entre profissionais práticos e acadêmicos
Sistemas de arquivos distribuídos são considerados um dos softwares mais difíceis de construir
Artigo de pesquisa relacionado: link
Eu me perguntei como eles conseguem esse desempenho com um design baseado em FUSE
LD_PRELOADpoderia ser generalizadaOpenAI e outras também estão profundamente envolvidas em sistemas, mas é raro ver esse nível de capricho em outros lugares
Eles certamente são produtivos
Não está claro onde e como os sistemas populares atuais estão ficando aquém
Fico me perguntando se haveria vantagem em portar isso para um orquestrador como o K8s
Gostaria de saber se alguém consegue me convencer de que isso não é síndrome de NIH