The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Открыт код распределённой файловой системы 3FS, используемой в DeepSeek

01.03.2025 13:43

Опубликован исходный код распределённой файловой системы 3FS (Fire-Flyer File System), разработанной для использования в инфраструктурах тренировки и выполнения крупных моделей машинного обучения. ФС входит в состав AI-платформы Fire-Flyer и используется китайской компанией DeepSeek, развивающей языковые модели, охватывающие более 600 миллиардов параметров. Целью создания 3FS называется предоставление совместного хранилища для упрощения разработки распределённых приложений. Работа ФС оптимизирована для использования в сетях RDNA и хранения информации на SSD-накопителях. Код 3FS написан на языке С++ (ChunkEngine на Rust) и открыт под лицензией MIT.

ФС рассчитана на высокопроизводительную обработку большого числа операций случайного чтения данных, для которых не эффективны традиционные техники кэширования и упреждающего чтения. Подобная активность свойственна системам обучения AI-моделей, которые в пакетном режиме запрашивают небольшие порции несвязанных между собой и не повторяющихся данных. Для работы в обход файлового кэша и прямого обращения к носителям в 3FS применяется режим Direct I/O и интерфейсы ядра Linux io_uring и AIO. Проблема выравнивания размера, указателей и смещений при прямом обращении к накопителю решена через учёт выравнивания на уровне самой файловой системы.

Содержимое файлов разбивается на блоки одинакового размера, которые распределяются по нескольким цепочкам репликации. Размеры блока, цепочки репликации и таблицы репликации могут определяться в привязке к отдельным каталогам. Каждый блок имеет уникальный идентификатор и сохраняется независимо в разных сервисах хранения, а итоговый файл образуется путём логического объединения блоков. При создании файла блоки выбираются с расчётом на достижение равномерной нагрузки на узлы хранения и SSD-накопители.

Работу ФС обеспечивают менеджер кластера, сервис метаданных, сервис хранения и клиент, которые соединены через сеть RDMA (InfiniBand или RoCE). Менеджер кластера отвечает за изменение состава кластера и доставку конфигурации сервисам и клиентам. Одновременно работает несколько менеджеров кластера, один из которых имеет статус первичного (в случае сбоя, статус первичного занимает другой экземпляр).

Сервисы метаданных воссоздают семантику файловой системы и отвечают за предоставление метаданных и списков блоков, связанных с файлами и каталогами. Для распределённого хранения метаданных и конфигурации кластера используется FoundationDB. Клиент может подключаться к любому сервису метаданных, которые равноправны и работают без учёта состояния (stateless).

Сервисы хранения управляют доступом к локальным SSD-накопителям и предоставляют интерфейс для доступа к данным на уровне блоков. Для обеспечения согласованности реплицированных данных применяется механизм CRAQ (Chain Replication with Apportioned Queries), подразумевающий возможность чтения любого реплицированного блока, но обязательное подтверждение всех реплицированных операций записи.

Для работы с ФС предлагается два клиента: на базе FUSE и нативный. Для оптимизации выполнения готовых больших языковых моделей предлагается техника KVCache, позволяющая кэшировать ключи и значения векторов ранее вычисленных токенов при работе декодировщика модели.

Проведено тестирование производительности кластера, включающего 180 узлов хранения (на каждом узле по два адаптера 200Gbps InfiniBand и 16 накопителей 14TiB NVMe SSD) и более 500 узлов с клиентским ПО (на каждом узле по одному адаптеру 200Gbps InfiniBand). Средняя пропускная способность для подобного кластера в процессе выполнения задач машинного обучения составила 6.6 TiB/s. Также протестирован небольшой кластер из 25 узлов хранения и 50 вычислительных узлов, производительность прохождения теста GraySort на котором составила 3.66 TiB/min при выполнении сортировки 110.5 TiB данных.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Утечка конфиденциальной информации DeepSeek из-за неограниченного доступа к БД с логами
  3. OpenNews: Первый публичный выпуск распределённой файловой системы JuiceFS
  4. OpenNews: Обновление кластерной файловой системы LizardFS 3.13.0-rc2
  5. OpenNews: Компания Versity открыла исходные тексты файловой системы ScoutFS
  6. OpenNews: Опубликован выпуск SDS Vitastor 1.5.0 с поддержкой кластерной ФС
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62816-3fs
Ключевые слова: 3fs, deepseek, fs, cluster, ai
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (31) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 14:07, 01/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    >"Код 3FS написан на языке С++"
     
     
  • 2.3, laindono (ok), 14:18, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Неужели на C++ стали настолько редко писать, что вы теперь каждому проекту радуетесь?
     
     
  • 3.14, Аноним (1), 14:55, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Написал так, как будто вы C++ не освоили. C++ это стандарт индустрии разработки!
     
     
  • 4.35, Илья (??), 18:00, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >C++ это стандарт индустрии разработки

    C# же

     
  • 3.16, Аноним (16), 15:08, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Только раст имеет право на экс(ин)клюзивное упоминание?
     
  • 3.31, Нуину (?), 16:41, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > вы теперь каждому проекту радуетесь?

    Каждому проекту радуются растовщики. Тут же просто комментатор показал, кто хозяин.

     
     
  • 4.38, Аноним (38), 18:31, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    У комментатора есть хозяин? Вроде рабство давно отменили...
     
     
  • 5.45, Аноним (-), 19:35, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Наверное не везде.
    Ты же не знаешь откуда люди пишут.
    Тут у кучи анонов какие-то травмы, то хозяева мерещатся, то ноги/опы/еще что-то лижут...
    В общем печально это всё.
     
  • 2.15, Аноним (15), 14:57, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Видимо появилась более какая то конкурентноспособная file system, раз они открыли код.
     

  • 1.8, Аноним (-), 14:30, 01/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    > Код 3FS написан на языке С++ (ChunkEngine на Rust)

    Неужели у кого-то получилось совместить 2 языка в одном проекте и при этом у престарелых снежинок не сгорела пятая точка?
    Наверное надо быть азиатом, для таких подвигов.

     
     
  • 2.9, Брус Ю (?), 14:39, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вот с кого пример брать надо, а не устраивать мелодрамы по поводу раста в ядре.
     
     
  • 3.10, Аноним (-), 14:42, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Вот с кого пример брать надо, а не устраивать мелодрамы по поводу раста в ядре.

    Так ты не сравнивай дисциплинированных китайцев, с изнеженными амерами.
    Ведь скандал устроли и свалили что растовик, что сишник.
    Т.е дело не в языке, а в воспитании.


     
     
  • 4.12, Аноним (12), 14:50, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >а в воспитании

    «Культурная революция» в Китае даёт плоды ?

     
     
  • 5.30, Аноним (-), 16:28, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >>а в воспитании
    > «Культурная революция» в Китае даёт плоды ?

    Не уверен.
    Т.к япошки почти такие же (надеюсь мои знакомые меня не читают))) - могут быть супер сосредоточенными и трудолюбивыми.
    А в пятницу ужраться в хламину и валяться под забором))

     
     
  • 6.39, Аноним (38), 18:32, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И корейцы тоже.
     
  • 2.17, Аноним (17), 15:12, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Неужели у кого-то получилось совместить 2 языка в одном проекте

    в чём проблема если делать с нуля а не переписывать?

     
     
  • 3.18, Аноним (-), 15:18, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Неужели у кого-то получилось совместить 2 языка в одном проекте
    > в чём проблема если делать с нуля а не переписывать?

    И большая ли разница?
    Им точно так же нужны люди знающие 2 языка.
    Точно так же проблемы совмещать код.

    Да и в чем проблема даже переписывать?
    Есть проверенные схемы: создается биндинг, кусок кода заменяется, процесс повторяется.
    Если ты про ядро - то там даже код СИшки не трогали, просто у вахтера полыхнул зад.


     
     
  • 4.20, Аноним (17), 15:29, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Им точно так же нужны люди знающие 2 языка.

    проблема вообще не в этом, Тут написали движок на раст с нуля, дергают его из С++. Собственно в юзерспейс на раст писать под линукс тоже ноупроблем.

     
     
  • 5.27, Аноним (-), 16:02, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Тут написали движок на раст с нуля, дергают его из С++.

    Да, отличное применение в качестве "ядра" программы.

    > Собственно в юзерспейс на раст писать под линукс тоже ноупроблем.

    В линуксе хотели писать отдельные драйвера. Для этого нужны биндинги.
    Кода ДМА вообще не изменялись.

     
     
  • 6.29, Аноним (17), 16:06, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > В линуксе хотели писать отдельные драйвера. Для этого нужны биндинги

    для этого не нужны никакие биндинги - вызывай напрямую С шные функции, но тогда вопрос нахера раст нужен

     
  • 2.21, Аноним (21), 15:35, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Если каждому языку в проекте определено своё место, то получится.
    А когда ЯП продвигается по идеологическим соображения нагромождая обертки, а руководство не может сформулировать четкую позицию, то получится Линпус.
     
     
  • 3.23, Аноним (-), 15:48, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А когда ЯП продвигается по идеологическим соображения нагромождая обертки

    Так и в ядре определили: "пишите драйвера, а в базовые структуры не лезьте"
    Но нет, нашлись вахтеры, которые решили еще поуказывать как именно использовать их код.
    Их конечно на место поставили, но драма все равно случилась.

     
  • 2.32, Нуину (?), 16:42, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > совместить 2 языка в одном проекте

    В ff уже давно

     

  • 1.22, Tron is Whistling (?), 15:45, 01/03/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +2 +/
     

  • 1.34, Фрол (?), 17:30, 01/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Languages
    C++ 87.0%
    Rust 4.3%
    OpenEdge ABL 3.4%
    Python 2.1%
    C 1.7%
    CMake 0.8%
    Other 0.7%

    протестую.

    почему в новости про раст написали, а про питон  с сями и опенедж - нет?

    повесточку (тм) отрабатываем?

     
     
  • 2.37, Аноним (21), 18:27, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В сумме <5% и ты спрашиваешь почему не заметили эту маргинальщину?
     
     
  • 3.40, Фрол (?), 18:58, 01/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    доо четыре процента раста - не маргинальщина ни разу

    "это другое! это понимать надо!" (с)

     
  • 3.41, Фрол (?), 19:06, 01/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.42, Аноним (-), 19:24, 01/03/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру