Проблема масштабируемости и решение NVIDIA
Согласно Stanford AI Index 2025, вычислительная мощность для обучения AI-моделей удваивается каждые 5 месяцев, а объемы датасетов — каждые 8 месяцев. Это создает критическую нагрузку на подсистему ввода-вывода. NVIDIA решает эту проблему через Magnum IO GPUDirect Storage (GDS), позволяя передавать данные напрямую от хранилища в память GPU, минуя CPU. Однако основным языком разработки AI (на него приходится почти 50% новых проектов на GitHub по состоянию на август 2025 года) является Python, где основным интерфейсом к GDS долгое время оставалась C-библиотека cuFile.
Архитектура KvikIO: два уровня принятия решений
NVIDIA KvikIO — это библиотека на Python и C++, которая sits above cuFile, предоставляя высокоуровневые интерфейсы. Важно понимать, что выбор пути передачи данных происходит на двух независимых этапах:
- Уровень KvikIO: решает, использовать ли cuFile или fallback-путь через POSIX (с буферизацией в CPU-памяти). На это влияют переменные окружения
KVIKIO_COMPAT_MODEиKVIKIO_GDS_THRESHOLD. - Уровень cuFile: определяет, использовать ли ускоренный модуль
nvidia-fsили совместимый путь через CPU. Это настраивается через файлcufile.json(параметрыexecution.parallel_ioиexecution.min_io_threshold_size_kb).
Тестовая конфигурация и установка
В официальном руководстве NVIDIA демонстрирует работу на следующей инфраструктуре, что задает стандарт для воспроизводимости результатов:
| Компонент | Значение / Версия |
|---|---|
| Процессорная архитектура | x86_64 |
| GPU | NVIDIA H100 |
| CUDA Toolkit | 13.3 |
| cuFile | 1.18 |
| Файловая система | ext4 (на локальном NVMe) |
| Топология PCIe | PIX (максимум один мост PCIe между GPU и NVMe) |
| Ключевые настройки BIOS/Kernel | IOMMU и ACS отключены для P2P-передач |
Установка осуществляется через pip с привязкой к версии CUDA:
python -m pip install kvikio-cu13
Верификация ускоренного пути (GDS vs POSIX)
Простой вызов API cuFile не гарантирует, что данные прошли через ускоренный путь GDS. Для проверки необходимо использовать инструменты диагностики. NVIDIA рекомендует использовать переменную окружения CUFILE_STATS_LEVEL=3 и утилиту gds_stats для анализа статистики на уровне процесса.
Ключевые метрики для анализа:
- nvfs counters: подтверждают использование ускоренного пути через модуль
nvidia-fs. - posix counters: указывают на использование совместимого пути с буферизацией в CPU-памяти.
Также для проверки конфигурации платформы используется утилита gdscheck.py, которая выводит список поддерживаемых файловых систем, обнаруженных GPU и активную конфигурацию cuFile.
Практическое применение
KvikIO уже интегрирован в экосистему NVIDIA CUDA-X и используется для ускорения I/O в таких библиотеках, как cuDF (DataFrames), cuCIM (цифровая патология), cuPhoton (анализ научных изображений) и GPU-ускоренных аналитических нагрузках Presto. Настройка параметров task_size и num_threads через defaults.set позволяет оптимизировать производительность под конкретные workload'и.
Источник: NVIDIA dev blog ↗
