Управление графическими картами CUDA для Ollama
Настройка CUDA_VISIBLE_DEVICES для графических процессоров NVIDIA
Для эффективного управления ресурсами графического процессора при использовании Ollama с графическими процессорами NVIDIA вы можете использовать переменную среды CUDA_VISIBLE_DEVICES. Эта переменная позволяет указать, какие графические процессоры должны быть доступны для вашего приложения, что позволяет оптимизировать производительность и распределение ресурсов.
Установка переменной окружения
Чтобы установить CUDA_VISIBLE_DEVICES, вы можете включить его в свой файл конфигурации оболочки, такой как ~/.bashrc, или установить непосредственно в своей терминальной сессии. Синтаксис прост: вы предоставляете разделенный запятыми список идентификаторов графических процессоров, которые хотите сделать видимыми. Например, если у вас четыре графических процессора и вы хотите использовать только первый и третий, вы должны выполнить:
CUDA_VISIBLE_DEVICES=0,2 torchrun trainer-program.py ...
В этом случае графические процессоры 0 и 2 будут доступны вашей программе, в то время как графические процессоры 1 и 3 будут скрыты. Указанные графические процессоры будут переназначены на cuda:0 и cuda:1 соответственно, что позволит вам ссылаться на них в вашем коде, как если бы они были единственными доступными графическими процессорами.
CUDA_VISIBLE_DEVICES=2,0 torchrun trainer-program.py ...
Изменение порядка отображения графических процессоров
Вы также можете управлять порядком представления графических процессоров в вашем приложении. Например, если вы хотите установить приоритет GPU 2 над GPU 0, вы можете установить:
CUDA_VISIBLE_DEVICES=2,0 torchrun trainer-program.py ...
Это сделает GPU 2 доступным как cuda:0, а GPU 0 - как cuda:1, фактически изменив порядок их использования.
Игнорирование графических процессоров
Если вам нужно запустить приложение без поддержки графического процессора, вы можете присвоить CUDA_VISIBLE_DEVICES пустое значение. Это заставит приложение использовать центральный процессор:
CUDA_VISIBLE_DEVICES= python trainer-program.py ...
Обнаружение UUID графических процессоров
Для более надежной идентификации графического процессора, особенно в системах с несколькими графическими процессорами, рекомендуется использовать UUID вместо числовых идентификаторов. Вы можете найти UUID своих графических процессоров, выполнив:
nvidia-smi -L
Использование UUID помогает избежать проблем, связанных с изменением порядка расположения графических процессоров, гарантируя, что ваше приложение постоянно ориентируется на правильное оборудование.
Решение проблем с драйверами
В системах Linux после цикла приостановки/возобновления работы могут возникнуть проблемы, из-за которых Ollama не может распознать ваш графический процессор NVIDIA. Чтобы устранить эту проблему, вы можете перезагрузить драйвер NVIDIA UVM с помощью следующих команд:
sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm
Это решение может помочь восстановить видимость и функциональность графического процессора без необходимости перезагрузки системы.
Эффективно управляя переменной CUDA_VISIBLE_DEVICES, вы можете оптимизировать настройки Ollama для повышения производительности и управления ресурсами, особенно при работе с несколькими графическими процессорами NVIDIA.
Устранение неполадок с инициализацией графических процессоров NVIDIA
При запуске Ollama пытается определить доступные в системе графические процессоры для обеспечения совместимости и оценки состояния видеопамяти. Однако в некоторых случаях этот процесс обнаружения может завершиться ошибкой, что приводит к появлению различных кодов ошибок в журналах сервера. К наиболее распространенным кодам ошибок относятся:
- 3: Не инициализирован
- 46: Устройство недоступно
- 100: Устройства нет
- 999: Неизвестная ошибка
Для эффективного устранения этих неполадок выполните следующие действия:
Проверьте среду выполнения контейнера
Если вы запускаете Ollama в контейнере, убедитесь, что среда выполнения контейнера настроена должным образом. Вы можете убедиться в этом, выполнив следующую команду:
docker run --gpus all ubuntu nvidia-smi
Если эта команда не выполняется, это означает, что Ollama не может получить доступ к вашему графическому процессору NVIDIA.
Проверьте драйвер и модули
- Проверьте, загружен ли драйвер uvm:
sudo nvidia-modprobe -u
- Перезагрузите драйвер nvidia_uvm:
sudo rmmod nvidia_uvm sudo modprobe nvidia_uvm
- Перезагрузите систему, чтобы убедиться, что все изменения вступили в силу.
- Обновите драйверы NVIDIA до последней версии, так как это часто устраняет проблемы с совместимостью.
Соберите диагностическую информацию
Если проблема не устраняется, соберите дополнительную информацию, которая поможет в устранении неполадок:
- Установите переменную среды для подробного журналирования:
export CUDA_ERROR_LEVEL=50
- Проверьте системные журналы на наличие ошибок, связанных с NVIDIA:
sudo dmesg | grep -i nvrm sudo dmesg | grep -i nvidia
Обеспечение совместимости вычислений
Ollama поддерживает графические процессоры NVIDIA с вычислительными возможностями версии 5.0 и выше. Чтобы проверить, поддерживается ли ваш графический процессор, обратитесь к официальной документации NVIDIA по графическим процессорам CUDA.
Установите NVIDIA Container Toolkit
Для обеспечения надлежащей функциональности установите NVIDIA Container Toolkit. Вот как это сделать:
Установите с помощью Apt
- Настройте репозиторий:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \ | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \ | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \ | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update
- Установите пакеты NVIDIA Container Toolkit:
sudo apt-get install -y nvidia-container-toolkit
Установите с помощью Yum или Dnf
- Настройте репозиторий:
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \ | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
- Установите пакеты NVIDIA Container Toolkit:
sudo yum install -y nvidia-container-toolkit
Настройте Docker для использования драйвера NVIDIA
Выполните следующие команды для настройки Docker:
sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker
Запустите контейнер
Наконец, запустите контейнер Ollama с помощью следующей команды:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Использование Ollama с графических процессоров AMD
Для эффективного использования графических процессоров AMD с Ollama важно правильно настроить среду. Для начала ограничьте количество графических процессоров, к которым Ollama может получить доступ. Этого можно достичь, установив для переменной среды HIP_VISIBLE_DEVICES значение списка нужных идентификаторов графических процессоров, разделенных запятыми. Вы можете определить доступные графические процессоры в вашей системе, выполнив команду rocminfo. Если вы хотите полностью отказаться от использования графического процессора и принудительно запустить приложение на центральном процессоре, вы можете задать недопустимый идентификатор графического процессора, например -1.
Разрешения для контейнера
В некоторых дистрибутивах Linux SELinux может ограничивать доступ к контейнерам для устройств с графическим процессором AMD. Чтобы устранить эту проблему, выполните следующую команду в своей хост-системе:
sudo setsebool container_use_devices=1
Эта команда позволяет контейнерам использовать графические процессоры, гарантируя, что Ollama сможет эффективно использовать доступные аппаратные ресурсы.
Переопределения в Linux
Ollama использует библиотеку AMD ROCm, которая поддерживает не все модели графических процессоров AMD. В тех случаях, когда ваш графический процессор не поддерживается, вы можете попытаться использовать аналогичный целевой модуль LLVM. Например, Radeon RX 5400 соответствует gfx1034, но поскольку ROCm не поддерживает этот целевой процессор, вы можете использовать ближайший поддерживаемый целевой процессор - gfx1030. Чтобы задать это переопределение, используйте переменную среды HSA_OVERRIDE_GFX_VERSION в формате x.y.z. Например, чтобы принудительно запустить систему на RX 5400, вы должны установить:
HSA_OVERRIDE_GFX_VERSION="10.3.0"
Поддерживаемые типы графических процессоров
В следующей таблице перечислены известные поддерживаемые типы графических процессоров в Linux, а также соответствующие им целевые модули LLVM:
Цель LLVM | Пример графического процессора |
---|---|
gfx900 | Radeon RX Vega 56 |
gfx906 | Radeon Instinct MI50 |
gfx908 | Radeon Instinct MI100 |
gfx90a | Radeon Instinct MI210 |
gfx940 | Radeon Instinct MI300 |
gfx942 | |
gfx1030 | Radeon PRO V620 |
gfx1100 | Radeon PRO W7900 |
gfx1101 | Radeon PRO W7700 |
gfx1102 | Radeon RX 7600 |
AMD активно работает над усовершенствованием ROCm v6, чтобы расширить поддержку дополнительных семейств графических процессоров в будущих версиях, что еще больше улучшит совместимость и производительность.
Для получения дополнительной помощи вы можете обратиться в Discord или сообщить о проблеме.