СХД для ИИ: как выбрать систему хранения данных
GPU обрабатывают большие объемы данных, но сначала эти данные нужно быстро прочитать из хранилища и передать вычислительным узлам. Если СХД не обеспечивает нужную скорость, часть вычислительных ресурсов простаивает в ожидании данных.
В статье разберем, что требуется от системы хранения для ИИ и на какие параметры стоит смотреть при выборе.
В этой статье:
- Как СХД используют в ИИ-задачах
- Какие характеристики СХД важны для ИИ
- HDD, SSD или NVMe: какие накопители выбрать для ИИ
- Файловое, блочное или объектное хранение для ИИ
- Как рассчитать СХД для ИИ
- Ошибки при выборе СХД для ИИ
- Вопросы и ответы
Как СХД используют в ИИ-задачах
СХД может выполнять разные функции на разных этапах работы с ИИ. Характер обращений к информации тоже меняется: одни процессы требуют длительной работы с большими массивами, другие связаны с уже готовыми моделями или корпоративными материалами. Разберем основные сценарии и посмотрим, какую роль в каждом из них играет система хранения.
Обучение моделей
Для обучения нужны подготовленные наборы примеров, на которых модель ищет закономерности и корректирует свои параметры. GPU обрабатывают эти наборы многократно, а при параллельных вычислениях несколько ускорителей могут обращаться к ним одновременно.
Во время длительного обучения программа периодически создает контрольные точки. В них сохраняется текущее состояние модели, чтобы после остановки продолжить работу с определенного этапа. Поэтому в этом сценарии СХД обеспечивает чтение обучающего набора и запись промежуточных результатов.
Запуск больших языковых моделей
Перед запуском готовую большую языковую модель загружают с дисков в память вычислительного узла. Крупные модели могут занимать десятки и сотни гигабайт, поэтому для их размещения требуется соответствующий объем дискового пространства.
На СХД также могут находиться разные версии одной модели и результаты ее работы. Здесь уже нет постоянного чтения обучающего набора и регулярного сохранения контрольных точек, характерных для этапа обучения.
Работа ИИ с корпоративными данными
Компания может использовать ИИ для поиска информации во внутренних документах: инструкциях, регламентах, технических материалах и базах знаний. Например, сотрудник задает вопрос внутреннему помощнику, тот находит подходящие фрагменты и использует их при подготовке ответа.
Чтобы такой поиск работал, исходные материалы предварительно обрабатывают и подготавливают для дальнейшего поиска. Когда документы меняются, соответствующую информацию тоже обновляют. В этом сценарии СХД обеспечивает доступ к корпоративным материалам, которые использует ИИ-сервис.
Какие характеристики СХД важны для ИИ
Нагрузка на СХД складывается из разных операций с информацией. Одни требуют быстро передать большой объем, другие создают множество коротких обращений или одновременно используют общий ресурс. Разобраться в этих различиях помогают характеристики производительности.
Пропускная способность
Пропускная способность определяет объем информации, который СХД передает за секунду. Обычно ее измеряют в МБ/с или ГБ/с.
Для обучения этот параметр важен при чтении крупных наборов. GPU получают новые порции информации по мере выполнения вычислений, а при параллельной работе несколько процессов могут обращаться к общему ресурсу одновременно. Если СХД не обеспечивает необходимый поток, ускорители могут простаивать в ожидании.
Запись тоже имеет значение. Во время обучения программа периодически сохраняет контрольные точки. Такая операция может создавать кратковременную высокую нагрузку, особенно для крупных моделей.
Задержка
Задержка — время между обращением к СХД и началом ответа. Она становится особенно заметной при большом количестве небольших запросов.
Например, поиск по корпоративным материалам может сопровождаться частыми случайными обращениями к небольшим фрагментам. В таком сценарии важен быстрый отклик на отдельную операцию, поэтому одной высокой пропускной способности недостаточно.
IOPS
IOPS — количество операций ввода-вывода, которые СХД выполняет за секунду. Характеристика помогает оценить работу с множеством небольших файлов и случайных обращений.
Заявленное значение зависит от размера блока, соотношения чтения и записи и характера доступа. Поэтому корректно сравнивать результаты, полученные при одинаковых условиях.
Полезная емкость
Полезная емкость — пространство, доступное для размещения информации после учета резервирования и служебных расходов. Она может быть меньше суммарного объема установленных накопителей.
Место требуется для обучающих наборов, моделей, контрольных точек и результатов вычислений. Объем может увеличиваться по мере появления новых версий и накопления материалов. Сам расчет необходимой емкости разберем дальше в статье.
Масштабируемость
СХД может потребовать расширения, если увеличивается объем хранимой информации или растет число вычислительных узлов. Возможности такого расширения ограничены характеристиками конкретного оборудования.
Для одной модели можно добавить накопители или модули расширения, для другой потребуется переход на более крупную конфигурацию. Поэтому стоит заранее проверить предельную емкость системы и допустимые варианты ее наращивания.
Отказоустойчивость
Отказ накопителя или другого компонента может сделать часть информации недоступной и прервать выполняемую задачу. Для длительного обучения это особенно чувствительно: система периодически сохраняет контрольные точки именно для восстановления и продолжения работы после остановки.
За сохранность и доступность отвечают механизмы резервирования, предусмотренные конкретной СХД. Оценивать здесь нужно допустимые сценарии отказа и возможность продолжить работу при выходе из строя отдельного компонента.
HDD, SSD или NVMe: какие накопители выбрать для ИИ
В ИИ-проектах одни материалы постоянно участвуют в вычислениях, другие нужны время от времени или остаются в архиве. Это позволяет распределять их между накопителями с разными характеристиками и не размещать весь объем на самом быстром оборудовании.
HDD — для емкого хранения
HDD подходят для больших массивов, к которым не требуется постоянный быстрый доступ. Это могут быть архивные наборы, резервные копии, результаты завершенных проектов и исходные материалы, которые пока не участвуют в вычислениях.
Использовать жесткие диски для активно обрабатываемого набора стоит с учетом характера обращений. HDD значительно уступают SSD при случайном доступе, поэтому большое количество небольших файлов может стать для них сложной нагрузкой.
Основная роль HDD в ИИ-инфраструктуре — хранить большие объемы, для которых скорость обращения не является главным требованием.
SSD — для активных наборов
SSD подходят для информации, с которой вычислительные узлы работают регулярно. На них можно размещать текущие обучающие наборы, модели и контрольные точки.
Особенно заметно преимущество SSD при случайных обращениях и работе с большим количеством небольших файлов. Отсутствие механических элементов позволяет быстрее получать нужные фрагменты, чем с HDD.
При этом SSD различаются по интерфейсу, типу памяти, контроллеру и другим характеристикам. Поэтому для рабочей нагрузки имеет значение конкретная модель накопителя, а не само обозначение SSD.
NVMe SSD — для интенсивных операций
NVMe — протокол обмена с SSD через PCI Express. Он поддерживает большое количество очередей и команд, что позволяет эффективнее обслуживать параллельные операции ввода-вывода.
В ИИ-инфраструктуре NVMe SSD используют для участков с интенсивными обращениями. Они могут работать в составе общей СХД или устанавливаться непосредственно в GPU-серверы.
Один из вариантов применения локальных NVMe — кеширование обучающих наборов. Например, в системах NVIDIA DGX сервер после первого чтения может сохранить информацию локально и повторно обращаться уже к локальной копии.
При выборе между HDD, SSD и NVMe стоит исходить из характера информации и частоты обращений к ней. В одной инфраструктуре могут одновременно использоваться несколько типов накопителей.
Файловое, блочное или объектное хранение для ИИ
Кроме типа накопителей, при проектировании нужно определить способ доступа к информации. Файловое, блочное и объектное хранение по-разному представляют данные приложениям и подходят для разных сценариев.
Файловое хранение
При файловом доступе приложения работают с папками и файлами. Такой вариант удобен, когда программам требуется привычная файловая структура и несколько вычислительных узлов должны обращаться к общим материалам.
На файловой СХД можно размещать обучающие наборы, модели, контрольные точки и корпоративные документы. Для ИИ важна производительность самой системы и сети, через которую серверы получают доступ к файлам.
Блочное хранение
При блочном доступе сервер получает пространство хранения как блочное устройство и сам создает на нем файловую систему. Такой подход используется там, где приложению или серверу нужен отдельный том.
При выборе блочной СХД для ИИ также оценивают пропускную способность, задержку, IOPS и возможности подключения нескольких вычислительных узлов.
Объектное хранение
В объектном хранилище информация представлена как объекты с метаданными и идентификаторами. Доступ к ним обычно выполняется через программный интерфейс.
Объектное хранение удобно для крупных наборов и архивов, особенно если приложения уже умеют работать с таким способом доступа. Возможность использовать его непосредственно в обучении зависит от программного стека и требований к производительности.
Выбор протокола доступа сам по себе не определяет производительность СХД. Нужно учитывать конкретную реализацию, накопители, контроллеры, сеть и характер нагрузки.
Как рассчитать СХД для ИИ
Расчет стоит начинать с нагрузки, которую создаст конкретный проект. Количество GPU само по себе не показывает, какой должна быть СХД: два проекта с одинаковым числом ускорителей могут работать с разным объемом информации и по-разному обращаться к ней.
Определите объем данных
Сначала нужно посчитать, сколько пространства требуется для рабочих наборов, моделей, контрольных точек, результатов вычислений и других материалов.
При этом учитывать нужно полезную емкость СХД, а также запас на рост. Если наборы регулярно обновляются, сохраняются несколько версий моделей или долго хранятся результаты экспериментов, объем со временем увеличивается.
Определите характер нагрузки
Следующий вопрос — как именно приложения будут обращаться к информации. Для обучения характерно последовательное или параллельное чтение наборов и периодическая запись контрольных точек. Другие задачи могут создавать множество небольших случайных обращений.
Для оценки нужны размер файлов, число одновременных процессов, соотношение чтения и записи и ожидаемый объем передаваемой информации.
Учтите количество вычислительных узлов
Если к одной СХД одновременно обращаются несколько GPU-серверов, их нагрузка складывается. Хранилище и сеть должны обеспечивать общий поток для всех активных узлов.
При расширении вычислительного кластера требования к СХД также могут увеличиваться. Поэтому стоит учитывать планируемое число серверов, а не только текущую конфигурацию.
Оцените сеть между серверами и СХД
Даже производительная СХД не сможет передать данные быстрее, чем позволяет подключение между ней и вычислительными узлами. Поэтому пропускную способность сети нужно сопоставлять с ожидаемой нагрузкой.
Ограничение может находиться на уровне сетевого интерфейса сервера, коммутатора, портов СХД или совокупной пропускной способности нескольких соединений.
Учтите запись контрольных точек
Для обучения отдельно оценивают объем и частоту сохранения контрольных точек. При синхронном сохранении обучение останавливается до завершения записи, поэтому недостаточная производительность СХД увеличивает продолжительность этой операции.
Проверьте расчет на реальной нагрузке
Тест должен воспроизводить характер обращений конкретного проекта: размер файлов, соотношение чтения и записи и число одновременных процессов. Так можно проверить, обеспечивает ли выбранная СХД требуемую производительность именно в тех условиях, в которых она будет работать.
Ошибки при выборе СХД для ИИ
Даже правильно рассчитанных емкости и производительности недостаточно, если отдельные компоненты используются не по назначению. Например, быстрыми SSD заполняют весь массив или рассчитывают на локальные диски сервера как на постоянное хранилище. Разберем ошибки, которые стоит проверить перед выбором конфигурации.
1. Размещать весь объем на самых быстрых накопителях
Высокая скорость нужна прежде всего материалам, которые активно участвуют в текущих вычислениях. Архивы, резервные копии и результаты завершенных проектов обычно не требуют такого же уровня производительности.
Если разместить весь объем на высокопроизводительных SSD, стоимость СХД вырастет, хотя возможности части накопителей будут использоваться редко. Поэтому рабочие и редко востребованные материалы имеет смысл разделять и предъявлять к ним разные требования.
2. Использовать локальные накопители GPU-сервера как основное хранилище
Локальные NVMe позволяют держать часто используемые материалы рядом с вычислительным узлом. Например, NVIDIA применяет их в DGX для кеширования: сервер сохраняет локальную копию и при повторном обращении может читать ее без загрузки из общей СХД.
Но назначение таких накопителей зависит от конфигурации сервера. В некоторых системах DGX локальное пространство работает в RAID 0: такая схема объединяет производительность дисков, но не защищает информацию при отказе одного из них. NVIDIA рекомендует использовать это пространство для кеша и других материалов, которые можно восстановить из другого источника.
Поэтому перед использованием локальных дисков нужно проверить их конфигурацию и понять, можно ли хранить на них единственную копию важной информации.
3. Учитывать чтение, но забывать о записи контрольных точек
Во время обучения СХД читает рабочий набор и периодически принимает контрольные точки — сохраненное состояние модели, с которого можно продолжить вычисления после остановки.
При синхронном сохранении обучение ждет завершения записи. Если СХД выполняет ее слишком долго, увеличивается и пауза в вычислениях. Поэтому при оценке нагрузки нужно отдельно проверить, как система справляется с сохранением контрольных точек.
4. Переносить готовую конфигурацию из другого ИИ-проекта
Одинаковое количество GPU еще не означает одинаковую нагрузку на хранилище. Один проект может работать с крупными файлами, другой — с множеством небольших. Отличаются объем рабочих наборов, частота записи и количество одновременных обращений.
Поэтому конфигурацию из другого проекта нельзя переносить без проверки исходных требований. Даже если число серверов и GPU совпадает, характер работы с СХД может быть другим.
5. Не проверять ограничения выбранной СХД при расширении
На старте система может соответствовать требованиям проекта, но дальнейшее увеличение объема или числа вычислительных узлов ограничивают возможности конкретной модели СХД.
У оборудования есть предел по числу накопителей, подключаемых модулей и общей емкости. Производительность тоже не обязательно растет пропорционально добавлению дисков. Поэтому до закупки стоит проверить, до какой конфигурации можно расширить выбранную систему и что потребуется для этого технически.
Вопросы и ответы
Не обязательно. Существующую СХД можно использовать, если она обеспечивает необходимую емкость и производительность и способна обслуживать дополнительную нагрузку от ИИ-систем.
Отдельное хранилище требуется не из-за самого факта использования ИИ, а когда действующая инфраструктура не справляется с новой нагрузкой или ее ресурсы уже заняты другими задачами.
Да. NAS предоставляет файловый доступ, поэтому на нем можно размещать обучающие наборы, модели, контрольные точки и другие материалы, если приложения работают с обычной файловой системой.
Но возможности NAS сильно различаются. Небольшая система для резервных копий и высокопроизводительное файловое хранилище для нескольких GPU-серверов относятся к одному классу оборудования, но рассчитаны на совершенно разную нагрузку. Поэтому важно оценивать характеристики конкретной модели, а не само обозначение NAS.
Не всегда. Один сервер может использовать локальные накопители, если их емкости достаточно, а информация не должна одновременно быть доступна другим вычислительным узлам.
Общая СХД становится нужна, когда требуется централизованно хранить большие наборы и модели, предоставлять доступ нескольким серверам или отделить постоянное хранение от локального пространства вычислительного узла. В архитектурах NVIDIA, например, локальные NVMe используются для кеширования, а основным источником обучающих наборов выступает общее хранилище.
Главное отличие связано с характером нагрузки. Обучение может создавать несколько параллельных потоков чтения и периодически записывать крупные контрольные точки. Другие ИИ-задачи формируют небольшие случайные обращения или часто загружают веса моделей. NVIDIA рассматривает эти сценарии как разные профили ввода-вывода.
Поэтому корпоративная СХД может подходить для ИИ, если ее характеристики соответствуют такой нагрузке. Отдельной категории оборудования, которая становится «СХД для ИИ» только из-за названия, нет.
Да. Если вычислительным узлам приходится ждать следующую порцию информации, GPU не могут постоянно выполнять полезные вычисления. NVIDIA прямо указывает, что недостаточная производительность хранилища способна привести к простою GPU во время обучения.
Особенно важно учитывать этот фактор при параллельной работе нескольких узлов, когда они одновременно обращаются к общему ресурсу.
Можно, если она справляется с обоими типами нагрузки. Требования при этом могут различаться: для обучения характерны параллельное чтение наборов и запись контрольных точек, а при запуске готовых моделей важен быстрый доступ к их весам и связанным материалам.
Поэтому возможность использовать одну систему определяют по совокупной нагрузке, которую создадут эти процессы при одновременной работе.