Оптимизация оборудования для ИИ настройка графического процессора Cuda NVIDIA
Узнайте, как эффективно выбирать графические процессоры с использованием CUDA для обеспечения оптимальной производительности в проектах машинного обучения.
Настройка CUDA_VISIBLE_DEVICES
Для эффективного управления ресурсами графического процессора в ваших проектах машинного обучения необходима переменная среды CUDA_VISIBLE_DEVICES. Эта переменная позволяет вам указать, какие графические процессоры видны вашему приложению, что позволяет оптимизировать использование ресурсов и контролировать порядок доступа к графическим процессорам.
Установка переменной окружения
Вы можете задать переменную CUDA_VISIBLE_DEVICES в файле конфигурации вашей оболочки, таком как ~/.bashrc, или непосредственно в командной строке. Например, если у вас четыре графических процессора и вы хотите использовать только графические процессоры 0 и 2, вы должны выполнить:
CUDA_VISIBLE_DEVICES=0,2 torchrun trainer-program.py ...
В этом случае графические процессоры 0 и 2 сопоставляются с cuda:0 и cuda:1 соответственно. Если вы хотите изменить порядок, вы можете сделать это, указав:
CUDA_VISIBLE_DEVICES=2,0 torchrun trainer-program.py ...
Эта команда преобразует GPU 2 в cuda:0, а GPU 0 - в cuda:1.
Создание среды без использования GPU
Если вам нужно запустить вашу программу без доступа к GPU, вы можете присвоить переменной CUDA_VISIBLE_DEVICES пустое значение:
CUDA_VISIBLE_DEVICES= python trainer-program.py ...
Это эффективно создает среду, в которой графические процессоры не видны вашему приложению.
Обнаружение UUID графических процессоров
Для более надежной идентификации графического процессора, особенно в системах с несколькими графическими процессорами, рекомендуется использовать UUID вместо числовых идентификаторов. Вы можете найти UUID своих графических процессоров, выполнив:
nvidia-smi -L
Использование UUID помогает избежать проблем, связанных с изменением порядка расположения графических процессоров, гарантируя, что ваше приложение постоянно ориентируется на правильное оборудование.
Использование CUDA_DEVICE_ORDER
В дополнение к CUDA_VISIBLE_DEVICES, вы можете управлять порядком расположения графических процессоров с помощью переменной окружения CUDA_DEVICE_ORDER. Этой переменной может быть присвоено значение:
- PCI_BUS_ID: Этот параметр упорядочивает графические процессоры на основе их идентификаторов шины PCIe, что соответствует порядку, указанному nvidia-smi.
export CUDA_DEVICE_ORDER=PCI_BUS_ID
- FASTEST_FIRST: Этот параметр упорядочивает графические процессоры по их вычислительным возможностям, гарантируя, что приоритет будет отдан самым мощным графическим процессорам.
export CUDA_DEVICE_ORDER=FASTEST_FIRST
Настройка CUDA_DEVICE_ORDER может быть особенно полезна в разнородных средах, где старые и новые графические процессоры устанавливаются одновременно. Если вы не можете физически переставить графические процессоры, использование FASTEST_FIRST гарантирует, что в первую очередь будут использованы более производительные графические процессоры.
Рекомендации по использованию
- Обычно рекомендуется устанавливать переменную CUDA_VISIBLE_DEVICES непосредственно в командной строке для каждого тренировочного запуска, чтобы избежать путаницы в отношении того, какие графические процессоры используются.
- Если вы решите экспортировать переменную в своей конфигурации оболочки, убедитесь, что вы хорошо ее задокументировали, чтобы избежать случайных ошибок в настройках.
- Всегда проверяйте настройки графического процессора с помощью nvidia-smi, чтобы убедиться, что используются правильные устройства.
Следуя этим рекомендациям, вы сможете эффективно управлять ресурсами графического процессора и повысить производительность приложений машинного обучения.