Настройка среды GPU для Machine Learning с TensorFlow в VSC
Введение
Настройка рабочей среды для машинного обучения (ML) – это фундаментальный шаг, который определяет эффективность и удобство всей последующей работы специалиста. В последние годы, с увеличением доступности мощных вычислительных ресурсов и развитием технологий, машинное обучение стало ключевым элементом в широком спектре индустрий, от здравоохранения до автомобильной индустрии. Эффективная и оптимизированная среда разработки позволяет ускорить процесс обучения моделей, экспериментировать с различными алгоритмами и подходами, а также сократить время от идеи до реализации.
TensorFlow – это один из ведущих фреймворков для машинного обучения, разработанный Google. Его гибкость, мощные инструменты и широкое сообщество делают его выбором номер один для многих специалистов в области ML. TensorFlow поддерживает как обучение с использованием графических процессоров (GPU), так и без них, что делает его доступным для широкого круга разработчиков.
Основное преимущество TensorFlow – его способность обрабатывать большие наборы данных с высокой производительностью. Это особенно важно в задачах, связанных с глубоким обучением, где требуется обработка огромных объемов данных и сложных нейронных сетей. TensorFlow также предлагает удобный и интуитивно понятный API, что делает его доступным не только для опытных разработчиков, но и для тех, кто только начинает свой путь в машинном обучении.
Далее мы рассмотрим, как настроить рабочую среду для работы с TensorFlow на Ubuntu, используя Python 3.11 и Visual Studio Code.
Проверка графического процессора
Для эффективной работы с TensorFlow, особенно при обучении глубоких нейронных сетей, наличие графического процессора (GPU) с поддержкой CUDA (Compute Unified Device Architecture) от NVIDIA значительно ускоряет процесс. CUDA – это параллельная платформа и программная модель, разработанная NVIDIA, которая позволяет значительно повышать вычислительную производительность за счет использования мощности GPU.
Чтобы проверить, есть ли в вашей системе GPU с поддержкой CUDA, можно воспользоваться командой lspci, которая выводит информацию о всех PCI-устройствах в системе, включая графические карты. Фильтруя вывод команды через grep -i nvidia, мы можем быстро определить, установлена ли карта NVIDIA и, соответственно, поддерживается ли CUDA. Вот как это делается:
- Откройте терминал в Ubuntu
- Введите следующую команду:
lspci | grep -i nvidia
- После выполнения команды, в выводе будут отображены строки, содержащие информацию о графическом процессоре NVIDIA, если таковой установлен в системе. Пример вывода может выглядеть так:
01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1080] (rev a1)
Это означает, что в системе установлена видеокарта NVIDIA GeForce GTX 1080, которая поддерживает CUDA.
Если команда не вернула никакого вывода, это может означать, что в вашем компьютере отсутствует графический процессор NVIDIA или он не был корректно определен системой. В таком случае, вам может потребоваться установка или обновление драйверов NVIDIA для корректного определения и использования GPU.
Удаление предыдущих CUDA Toolkit
Прежде чем приступить к установке новой версии CUDA Toolkit, важно удалить все предыдущие установки CUDA, чтобы избежать конфликтов версий и проблем совместимости. Удаление старых версий CUDA и драйверов Nvidia - это важный шаг, который обеспечивает гладкую установку и работу новой среды.
Шаги по удалению старых версий CUDA и драйверов Nvidia:
- Сначала необходимо открыть терминал в Ubuntu.
- Выполните следующую команду для удаления всех пакетов CUDA, установленных в вашей системе:
sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
"*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
Эта команда удалит все пакеты, связанные с CUDA, включая библиотеки и инструменты.
- Если у вас были установлены нестандартные драйверы Nvidia из graphics-drivers, их также следует удалить. Если нет, то этот шаг следует пропустить!
# удаляем драйвера
sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"
# удаляем ссылки на них
sudo add-apt-repository --remove ppa:graphics-drivers/ppa
Это поможет избежать конфликтов между разными версиями драйверов.
- Удалите старые ссылки на репозитории Nvidia, чтобы обеспечить, что система будет использовать только актуальные и поддерживаемые версии:
sudo rm /etc/apt/sources.list.d/cuda*
- После удаления старых версий CUDA и драйверов Nvidia, выполните команды для очистки системы от ненужных пакетов:
sudo apt-get autoremove && sudo apt-get autoclean
- Если были установлены версии CUDA, не управляемые системным пакетным менеджером, их необходимо удалить вручную:
sudo rm -rf /usr/local/cuda*
Это удаляет все папки, связанные с CUDA, в /usr/local/.
После удаления старых версий CUDA и драйверов Nvidia, очень важно также очистить систему от устаревших или ненужных репозиториев и пакетов. Это обеспечивает, что ваша система останется актуальной и стабильной, исключая возможные конфликты при установке нового программного обеспечения.
- Удаление старых репозиториев:
sudo rm /etc/apt/sources.list.d/cuda*
sudo rm /etc/apt/sources.list.d/nvidia*
Это удалит файлы конфигурации репозиториев, которые больше не нужны.
- Очистка ненужных пакетов и очистки кэша пакетного менеджера:
sudo apt-get autoremove
sudo apt-get autoclean
Команда autoremove удаляет пакеты, которые были автоматически установлены для удовлетворения зависимостей других пакетов и теперь больше не нужны. autoclean очищает локальный репозиторий загруженных пакетов, удаляя файлы пакетов (.deb), которые больше не могут быть загружены (устарели).
- Проверка и удаление ручных установок:
Если вы ранее устанавливали программное обеспечение вручную (не через пакетный менеджер), убедитесь, что эти установки также удалены, если они больше не нужны.
Это может потребовать индивидуальных команд удаления или удаления соответствующих директорий в файловой системе. - Опционально: Со временем на вашей системе могут накапливаться старые ядра Linux, которые занимают место. Очистите их, если уверены, что текущее ядро стабильно работает. Для этого можно использовать инструменты вроде ukuu или выполнить команду:
sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d')
Эта команда удалит все старые ядра, кроме текущего.
После выполнения этих шагов ваша система будет более чистой и организованной, что облегчит установку и работу с новыми программными пакетами, такими как последние версии CUDA Toolkit и TensorFlow.
Обновление системы
После удаления старых версий CUDA, драйверов Nvidia и очистки системы от ненужных пакетов и репозиториев, следующим шагом является обновление Ubuntu до последней версии. Регулярное обновление системы гарантирует, что вы используете последние функции безопасности и стабильности, а также обеспечивает лучшую совместимость с новым программным обеспечением, таким как TensorFlow.
- Обновление списка пакетов:
Откройте терминал. Выполните следующую команду, чтобы обновить список доступных пакетов и их версий:
sudo apt-get update
- Обновление установленных пакетов:
Затем, чтобы обновить все установленные пакеты до последних доступных версий, используйте команду:
sudo apt-get upgrade
- Полное обновление системы:
Для более глубокого обновления, которое может включать обновление ядра и других важных компонентов системы, выполните команду:
sudo apt-get full-upgrade
- Удаление ненужных пакетов:
После обновления выполните команды для удаления ненужных пакетов и очистки системы:
sudo apt-get autoremove
sudo apt-get autoclean
- Перезагрузка системы (при необходимости):
Если во время обновления было установлено новое ядро или другие важные компоненты, рекомендуется перезагрузить систему:
sudo reboot
После выполнения этих шагов ваша система Ubuntu будет полностью обновлена и готова к дальнейшей настройке рабочей среды для машинного обучения с TensorFlow.
- Если были удалены видеодрайверы, то система загрузится без них. Чтоб установить рекомендуемые воспользуйтесь командой:
sudo ubuntu-drivers autoinstall && sleep 5 && sudo reboot
Установка базовых компонентов
Для работы с машинным обучением и TensorFlow на Ubuntu необходимо установить ряд базовых компонентов. Эти компоненты включают в себя библиотеки и инструменты, которые необходимы для поддержки работы TensorFlow, а также для общих задач программирования и разработки в области ML.
- Установка компиляторов и разработческих инструментов:
Откройте терминал. Установите компиляторы и основные инструменты для сборки программного обеспечения:
sudo apt-get install build-essential
- Установка дополнительных библиотек для разработки:
Установите дополнительные библиотеки и инструменты, которые могут потребоваться при работе с TensorFlow и другими пакетами ML:
sudo apt-get install g++ freeglut3-dev libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev
- Установка Python и связанных инструментов:
TensorFlow обычно используется с Python, поэтому убедитесь, что у вас установлена подходящая версия Python. На момент написания статьи TensorFlow совместим с Python 3.11. Выполните следующие команды для установки Python и необходимых инструментов:
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt-get update
sudo apt-get install python3.11 python3.11-dev python3.11-venv
- Установка менеджера пакетов Python (pip):
TensorFlow и многие другие пакеты Python устанавливаются через pip. Установите pip для Python 3.11 следующим образом:
sudo apt-get install python3.11-pip
После установки этих компонентов ваша система будет готова к дальнейшей установке и настройке TensorFlow, а также к выполнению задач машинного обучения.
CUDA Toolkit 12.2 и cuDNN 8.9.0
Для оптимальной работы с TensorFlow, особенно при использовании GPU, важно установить CUDA Toolkit и cuDNN. CUDA Toolkit предоставляет среду разработки, которая позволяет использовать GPU для вычислений, а cuDNN (CUDA Deep Neural Network library) – это библиотека от NVIDIA, оптимизированная для глубокого обучения.
Шаг 1: Установка CUDA Toolkit 12.2
- Перейдите на официальный сайт NVIDIA для загрузки CUDA Toolkit 12.2 и выберите подходящий вариант установки. На момент написания с tensorflow-2.15.0 работает с Python3.9-3.11 cuDNN-8.9 CUDA-12.2. Отсюда и соответствующие ссылки.
- Скачайте установочный файл
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run
- Откройте терминал и перейдите в каталог, куда был скачан файл.
- Добавьте локальный репозиторий CUDA и установите Toolkit:
sudo sh cuda_12.2.0_535.54.03_linux.run
- Настройте переменные окружения:
echo 'export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc
sudo ldconfig
Шаг 2: Установка cuDNN 8.9.0
- Зарегистрируйтесь или войдите на NVIDIA Developer для доступа к файлам cuDNN.
- Перейдите в раздел скачивания cuDNN, выберите и скачайте версию cuDNN 8.9.0, предназначенную для CUDA 12.2.
- Скачайте необходимые файлы cuDNN (Обычно это архивный файл с расширением .tar.xz).
- Распакуйте скачанный архив:
tar -xJvf cudnn-linux-x86_64-8.9.0.131_cuda12-archive.tar.xz
- Скопируйте файлы cuDNN в директорию CUDA:
После распаковки архива скопируйте файлы cuDNN в соответствующие директории вашей установки CUDA Toolkit:
sudo cp -P cuda/include/cudnn*.h /usr/local/cuda-12.2/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-12.2/lib64
- Затем измените права доступа к этим файлам, чтобы они были доступны для чтения:
sudo chmod a+r /usr/local/cuda-12.2/include/cudnn*.h /usr/local/cuda-12.2/lib64/libcudnn*
После выполнения этих шагов cuDNN будет установлен и готов к использованию с TensorFlow и другими библиотеками глубокого обучения, требующими поддержки CUDA.
Установка TensorRT 8.6 GA
Скачиваем пакет с официального сайта :
https://developer.nvidia.com/downloads/
Переходим в папку с загруженным файлом, распаковываем и создаем локальный репозиторий:
cd ~/Downloads || cd ~/Загрузки
os="ubuntuXX04" # где XX версия Ubuntu
tag="8.6.1-cuda-11.8"
sudo dpkg -i nv-tensorrt-local-repo-${os}-${tag}_1.0-1_amd64.deb
sudo cp /var/nv-tensorrt-local-repo-${os}-${tag}/*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
Устанавливаем tensorrt
sudo apt-get install tensorrt
Дополнительные пакеты для работы с Python
sudo apt-get install python3-libnvinfer
sudo apt-get install python3-libnvinfer-dev
Если вы хотите использовать TensorRT с конвертером UFF для преобразования моделей из TensorFlow
python3 -m pip install protobuf
sudo apt-get install uff-converter-tf
Если вы хотите запустить примеры, требующие onnx-graphsurgeon, или использовать модуль Python для своего собственного проекта
python3 -m pip install numpy onnx
sudo apt-get install onnx-graphsurgeon
Проверка установки
dpkg-query -W tensorrt
Установка Visual Studio Code
Visual Studio Code (VSC) - это мощный и гибкий редактор кода, который идеально подходит для разработки проектов машинного обучения, благодаря своей поддержке разнообразных языков программирования и множества расширений.
Шаг 1: Установка Visual Studio Code
- Перейдите на официальный сайт Visual Studio Code: Ссылка на скачивание VSC.
- Выберите версию для Ubuntu (обычно это .deb файл).
- Скачайте файл установки.
- Откройте терминал и перейдите в каталог, куда был скачан файл.
- Установите VSC, используя команду:
sudo dpkg -i code_<version>.deb
- Замените <version> на название скачанного файла.
- Запустите Visual Studio Code после установки, чтобы убедиться, что он корректно установлен.
Шаг 2: Настройка Visual Studio Code для ML
- Установите расширения Python:
В VSC откройте раздел "Extensions" (расширения).
Найдите и установите расширение "Python" от Microsoft.
Это расширение добавляет поддержку языка Python в VSC, включая IntelliSense, отладку и другие возможности. - Установите расширения для работы с Jupyter Notebooks:
Аналогично найдите и установите расширение "Jupyter" от Microsoft.
Это расширение позволяет напрямую работать с Jupyter Notebooks в VSC. - Настройте виртуальную среду (рекомендуется):
В терминале VSC создайте новую виртуальную среду:
python3.11 -m venv venv
Активируйте виртуальную среду и обновите pip:
source venv/bin/activate
python -m pip install --upgrade pip
После выполнения команды активации виртуальной среды (source venv/bin/activate), в командной строке терминала должно отобразиться имя виртуальной среды. Обычно это выглядит так: (venv) user@hostname:~/path/to/project$.
Если вы видите (venv) перед остальной частью командной строки, это означает, что виртуальная среда активирована.
- Создайте файл requirements.txt и добавьте в него пакеты для ML:
#Рекомендованные пакеты:
# Это расширение TensorFlow для поддержки CUDA, которое позволяет использовать графические процессоры (GPU) для ускорения обучения нейронных сетей.
tensorflow[and-cuda]
# Библиотека для работы с TensorRT на Python.
tensorrt
# Библиотека для работы с CUDA на Python. Она предоставляет доступ к функциональности GPU для вычислений общего назначения.
pycuda
# Библиотека для загрузки переменных окружения из файла .env. Она полезна для хранения конфиденциальной информации и настроек вне вашего кода.
python-dotenv
# Библиотека для машинного обучения, предоставляющая инструменты для классификации, регрессии, кластеризации и многих других задач машинного обучения и анализа данных.
scikit-learn
# Среда разработки и интерактивного анализа данных, предоставляющая Jupyter Notebook и другие инструменты для работы с кодом, данными и визуализацией.
jupyterlab
# Расширение для Jupyter, которое позволяет использовать Jupyter Notebook через протокол WebSocket.
jupyter_http_over_ws
# Библиотека для управления подпроцессами, полезна при выполнении команд внутри Jupyter Notebook.
ptyprocess
# Ядро Jupyter для интерактивных сред разработки, таких как Jupyter Notebook и JupyterLab.
ipykernel
# Библиотека для работы с сокетами в Python, используется Jupyter для обмена данными между ядром и интерфейсом.
pyzmq
# Библиотека для компьютерного зрения в Keras, предлагающая готовые к использованию архитектуры и функции для обработки изображений и видео, такие как предварительно обученные модели и утилиты для обнаружения объектов, сегментации и классификации.
keras-cv
# Библиотека для обработки естественного языка в Keras, предоставляющая предварительно обученные модели для задач NLP, включая классификацию текста, генерацию текста и анализ эмоциональной окраски.
keras-nlp
#По необходимости:
# Библиотека для работы с многомерными массивами и вычислениями, часто используется в научных и инженерных вычислениях.
numpy
# Библиотека для работы с данными, предоставляющая структуры данных и функции для анализа.
pandas
# Научная библиотека для решения различных задач, таких как оптимизация, статистика, анализ сигналов и многое другое.
scipy
# Библиотека для создания графиков и визуализации данных.
matplotlib
# Библиотека для создания графов в формате DOT, часто используется для визуализации структуры нейронных сетей.
pydot
# Библиотека для визуализации данных, предоставляющая высокоуровневый интерфейс для создания красочных графиков.
seaborn
# Библиотека для создания графиков финансовых данных и анализа временных рядов.
mplfinance
# Утилита для создания красочных таблиц из данных Python, полезна при отображении результатов и анализе.
tabulate
# Библиотека для обработки естественного языка, специализирующаяся на тематическом моделировании и поиске документов по схожести, с использованием методов, основанных на моделях "мешка слов" и Word2Vec.
gensim
# Библиотека, предоставляющая большое количество предварительно обученных моделей для задач обработки естественного языка, таких как BERT, GPT, T5, используемых для перевода, суммаризации, классификации текста и других.
transformers
# Библиотека для обработки естественного языка, содержащая инструменты для морфологического разбора, синтаксического анализа, обработки текста и проведения лингвистического анализа.
nltk
# Платформа для обмена и использования предварительно обученных моделей глубокого обучения, включая модели для классификации изображений, обработки текста и других задач машинного обучения.
tensorflow-hub
# Библиотека для сбора финансовых данных с Yahoo Finance. Позволяет получать исторические рыночные данные, данные о финансовых показателях компаний, а также информацию о котировках акций в реальном времени.
yfinance
- Установите пакеты в venv командой:
python -m pip install -r requirements.txt
- Создайте файл нотбука:
test_GPU.ipynb
После выполнения этих шагов Visual Studio Code будет готов к использованию для разработки и выполнения проектов машинного обучения, предоставляя удобный интерфейс и множество полезных инструментов для разработки.
Тестирование и работа с TensorFlow
После установки TensorFlow важно проверить, что все было настроено корректно. Для этого можно выполнить несколько простых тестов, используя Python и TensorFlow. Эти тесты помогут убедиться, что TensorFlow работает как ожидается, и готов к более сложным задачам машинного обучения.
1. В созданном файле test_GPU.ipynb импортируйте TensorFlow и проверьте его версию:
import tensorflow as tf
print(tf.__version__)
Это должно вывести установленную версию TensorFlow.
2. Проверьте доступные устройства:
print("Available GPUs:", tf.config.list_physical_devices('GPU'))
Если у вас установлен и корректно настроен GPU, вы должны увидеть его в списке доступных устройств.
3. Простой тест на использование GPU:
with tf.device('/GPU:0'):
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
c = a + b
print(c)
TensorFlow автоматически использует GPU для вычислений, если он доступен.
4. Создание и обучение простой модели
- Импортируйте необходимые модули:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
- Создайте простую модель:
model = Sequential([
Dense(64, activation='relu', input_shape=(32,)),
Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
- Обучите модель на случайных данных (для примера):
import numpy as np
# Генерация случайных данных
data = np.random.random((1000, 32))
labels = np.random.random((1000, 10))
# Обучение модели
model.fit(data, labels, epochs=10, batch_size=32)
После выполнения этих шагов вы должны увидеть, как модель обучается, что является подтверждением корректной работы TensorFlow. Эти тесты помогут вам убедиться, что ваша среда готова к разработке и выполнению более сложных проектов машинного обучения.
Заключение
Настройка среды для работы с TensorFlow на Ubuntu представляет собой комплексный процесс, который включает в себя установку и настройку различных компонентов. Мы рассмотрели шаги по подготовке системы, удалению старых версий CUDA и драйверов Nvidia, обновлению системы, установке необходимых пакетов и компонентов, настройке CUDA Toolkit и cuDNN, а также установке и настройке Visual Studio Code для работы с проектами машинного обучения. Кроме того, мы проверили корректность установки TensorFlow и его работу с GPU, а также создали и обучили простую модель для тестирования системы.
Рекомендации по эффективной работе
- Регулярные обновления Ubuntu и используемых библиотек помогают обеспечить безопасность, стабильность и доступ к новым функциям.
- Виртуальные среды позволяют изолировать проекты друг от друга, что упрощает управление зависимостями и версиями пакетов.
- TensorFlow постоянно развивается, предлагая новые возможности и улучшения. Следите за обновлениями и экспериментируйте с новыми функциями и техниками.
- Машинное обучение - это быстро развивающаяся область. Постоянное обучение, эксперименты и практика помогут вам оставаться в курсе последних тенденций и лучших практик.
Дополнительные ресурсы
Чтобы углубить знания и получить поддержку в области машинного обучения и работы с TensorFlow, важно использовать разнообразные ресурсы. Ниже представлен список полезных веб-ресурсов, курсов, документации и сообществ, которые будут полезны как начинающим, так и опытным разработчикам ML.
Официальные ресурсы и документация
TensorFlow Website:
- Официальный сайт TensorFlow
- Здесь вы найдете официальную документацию, руководства и учебные материалы.
CUDA Toolkit Documentation:
- Документация по CUDA Toolkit
- Полезно для понимания и использования возможностей GPU.
Python Documentation:
- Официальная документация Python
- Основной ресурс для языка Python.
GitHub TensorFlow Repository:
- TensorFlow GitHub
- Здесь можно следить за последними обновлениями, участвовать в сообществе и вносить свой вклад.
Reddit Community:
- Subreddit Machine Learning
- Полезный ресурс для обмена знаниями и последними новостями в области ML.
Эти ресурсы помогут вам оставаться в курсе последних достижений в области машинного обучения, глубокого обучения и работы с TensorFlow, а также поддерживать связь с сообществом разработчиков.