MLOps и инструменты 16 просмотров

Файловые системы для ML

Storage / File Systems for ML

Выбор файловой системы критичен для производительности обучения: параллельные ФС (GPFS, Lustre, WekaIO) обеспечивают сохранение 2TB чекпоинта за 40 сек, тогда как NFS — за 20+ минут.

Файловые системы для ML

При обучении LLM на кластере файловая система влияет на:
1. Загрузку данных (DataLoader) — не должна быть bottleneck
2. Чекпоинты — быстрое сохранение/восстановление терабайтов
3. Логирование — множество мелких записей от сотен процессов

Типы файловых систем

Параллельные распределённые ФС (лучший выбор)

ФС Разработчик Особенности
GPFS (IBM Storage Scale) IBM Самая надёжная, переменный блок, коммерческая
Lustre Open Source Стандарт HPC, масштабируется до эксабайт
WekaIO Weka Высокая IOPS, хорош для мелких файлов

Эти ФС обеспечивают параллельный доступ от сотен-тысяч клиентов одновременно, что критично для DataLoader и чекпоинтов.

Облачные решения

Решение Тип Производительность
AWS FSx for Lustre Lustre в облаке Хорошая
GCS FUSE Object storage mount Средняя
Azure Blob NFS Object storage Средняя

Локальный NVMe

Лучший вариант для чекпоинтов: сохранить на локальный NVMe, затем фоновым процессом скопировать в облако.

Размер блока файловой системы

Критический параметр, часто упускаемый:

  • Блок 16 MB + средний файл 16 KB = 1000× перерасход дискового пространства
  • Python (conda) создаёт тысячи мелких файлов — могут закончиться inode

Решение: два раздела с разными блоками:
1. Данные/чекпоинты: блок 2-16 MB (большие файлы)
2. Код/конфиги/conda: блок 4-8 KB (мелкие файлы)

Практические советы

  1. Локальный NVMe для чекпоинтов — сохранение мгновенное, затем фоновая выгрузка
  2. Храните 3+ последних чекпоинта локально — быстрый рестарт
  3. Checksums — проверяйте целостность чекпоинтов после записи
  4. Не полагайтесь на облачное хранилище для DataLoader — при обучении IDEFICS-80B это заняло недели отладки (Stas Bekman)
  5. Buffered IO для чтения, Direct IO для записи чекпоинтов
# Проверка производительности ФС
# Последовательная запись (чекпоинты)
fio --name=seq_write --rw=write --bs=1m --size=10G --numjobs=8

# Случайное чтение (DataLoader)
fio --name=rand_read --rw=randread --bs=256k --size=10G --numjobs=64

Связанные термины

Используется в
Необходим для

Попробуйте на практике

Арендуйте GPU и запустите ML-модели в Intelion Cloud

Начать работу