Как установить и использовать PyTorch

PyTorch – это фреймворк, разработанный Facebook AI Research для глубокого обучения, соединяющий в себе и удобные для новичков инструменты отладки, и конфигурации высокого уровня для продвинутых пользователей. PyTorch используют в таких компаниях, как Facebook и Tesla. Приложение включает компьютерное зрение, обработку естественного языка, криптографию и многое другое. В этом руководстве основное внимание будет уделено установке PyTorch.

Статья по теме: Стилизация изображения с помощью нейросети, Python3 и PyTorch

Мы установим версию PyTorch «CPU support only» в три шага. Такая установка идеально подходит для людей, которые хотят использовать PyTorch, но не имеют видеокарты Nvidia. Кроме того, мы установим PyTorch в виртуальной среде Python с помощью virtualenv. Такой подход изолирует установку PyTorch, а также позволит нам в дальнейшем устанавливать разные версии PyTorch для каждого проекта. После завершения установки мы протестируем свой экземпляр PyTorch, запустив небольшую программу, а затем воспользуемся PyTorch для классификации изображений.

Практический опыт глубокого обучения или работы с PyTorch не нужен, чтобы следовать этому руководству, однако мы предполагаем, что вы знакомы с основными терминами и понятиями из теории машинного обучения, такими как тензоры. Вы можете узнать больше об этих концепциях во введении в машинное обучение.

Рекомендуем прочесть: Введение в машинное обучение

Требования

Для выполнения этого мануала вам потребуется локальная среда разработки Python 3 и как минимум 1 ГБ ОЗУ. Чтобы настроить Python и все необходимое для вашей среды разработки, вы можете следовать этим инструкциям:

1: Установка PyTorch

Для начала давайте создадим рабочее пространство для этого проекта и установим необходимые зависимости. Наше рабочее пространство будет называться pytorch:

mkdir ~/pytorch

Создайте каталог для хранения ваших ресурсов:

mkdir ~/pytorch/assets

Перейдите в каталог pytorch:

cd ~/pytorch

Затем создайте новую виртуальную среду для вашего проекта:

python3 -m venv pytorch

Активируйте ее:

source pytorch/bin/activate

Затем установите PyTorch. В macOS установить его можно с помощью следующей команды:

pip install torch torchvision

В Linux и Windows для CPU-only сборки используйте следующие команды:

pip install torch==1.7.1+cpu torchvision==0.8.2+cpu -f https://download.pytorch.org/whl/torch_stable.html

Обратите внимание: мы по умолчанию включили torchvision. Это подбиблиотека, которая содержит несколько утилит, специально предназначенных для компьютерного зрения, – их вы будете использовать позже в этом руководстве. На экране появится вывод, подтверждающий установку PyTorch:

Collecting torch
Downloading torch-1.7.1-cp38-none-macosx_10_9_x86_64.whl (108.9 MB)
|████████████████████████████████| 108.9 MB 8.3 MB/s
. . .
Successfully installed pillow-8.1.0 torch-1.7.1 torchvision-0.8.2

Примечание: Если вы хотите деактивировать виртуальную среду, используйте команду:

deactivate

Чтобы позже активировать среду снова, перейдите в каталог проекта и запустите команду:

source pytorch/bin/activate

Итак, вы установили PyTorch. Давайте теперь убедимся, что ваш экземпляр PyTorch работает.

2: Проверка установки

Чтобы проверить установку PyTorch, мы запустим в нем небольшую программу как пользователь без полномочий root. Мы не будем создавать файл Python, мы создадим эту программу с помощью интерактивной консоли Python.

Читайте также: Использование интерактивной консоли Python

Чтобы написать программу, запустите интерпретатор Python с помощью следующей команды:

python3

В терминале вы увидите:

˃˃˃

Это командная строка интерпретатора Python, и она указывает, что Python готов работе.

Сначала введите эту строку, чтобы импортировать пакет PyTorch. После ввода нажмите Enter.

import torch

Определите вектор нулей. Представьте себе вектор как набор чисел (или как список чисел). Если точнее: вектор – это «стрелка» в пространстве, определяющая как направление (куда она указывает?), так и величину (какова ее длина?). Затем мы создадим вектор, используя список из трех чисел с помощью Tensor(). Это трехмерный вектор, представляющий собой стрелку в трехмерном пространстве.

Запустите следующий оператор Python:

torch.Tensor([0, 0, 0])

Вы получите такой вывод:

tensor([0., 0., 0.])

Это значит, что установка PyTorch прошла успешно. Выйдите из интерактивной консоли Python, нажав CTRL+D. Далее мы создадим классификатор изображений с помощью PyTorch.

3: Классификация изображений с помощью PyTorch

Классификатор изображений принимает изображения в качестве входных данных и выводит предсказанный класс (например, Cat или Dog). Классификаторы изображений в средах глубокого обучения по своей сути эквивалентны традиционным программам «Hello World». Есть несколько веских причин начать с классификации изображений. Во-первых, многие классификаторы могут строить прогнозы на обычных процессорах, не требуя значительных ресурсов. Во-вторых, на основе предсказанного класса можно очень легко понять, работает ли ваш классификатор. В меньшей степени это относится к другим нейронным сетям, которые, например, генерируют текст.

В этом мануале мы будем использовать предварительно обученные классификаторы изображений, чтобы предсказать класс изображения. Прогноз также называют логическим выводом.

Сначала загрузите файл JSON, чтобы преобразовать вывод нейронной сети в удобочитаемое имя класса:

wget -O ~/pytorch/assets/imagenet_idx_to_label.json https://raw.githubusercontent.com/do-community/tricking-neural-networks/master/utils/imagenet_idx_to_label.json

Загрузите следующий скрипт Python, который загрузит изображение и нейронную сеть, с помощью которой потом классифицирует изображение:

wget https://raw.githubusercontent.com/do-community/tricking-neural-networks/master/step_2_pretrained.py

Загрузите следующее изображение собаки, чтобы запустить классификатор. Используйте эту команду:

wget -O assets/dog.jpg https://assets.digitalocean.com/articles/trick_neural_network/step2a.png

Теперь запустите предварительно обученный классификатор изображений (он не требует обучения и сможет точно и сразу предсказывать классы):

python step_2_pretrained.py assets/dog.jpg

Вы получите следующий результат, показывающий, что классификатор работает правильно:

Prediction: Pembroke, Pembroke Welsh corgi

Эта строка находится в конце вывода запущенной нами предварительно обученной модели. Если вы хотите использовать другое изображение, вы можете изменить первый аргумент команды python3 step_2_pretrained.py. В качестве аргумента нужно передать относительный путь к другому файлу изображения.

На следующем этапе мы рассмотрим несколько рекомендуемых инструментов для PyTorch.

Экосистема PyTorch

В этом разделе мы ознакомимся с рядом полезных фреймворков и библиотек для начала работы с PyTorch. Эти дополнительные библиотеки пригодятся только продвинутым пользователям PyTorch, но все же полезно знать, что эти инструменты существуют: когда вы будете готовы, вы сможете использовать их.

Для каждой библиотеки глубокого обучения существует каноническая структура более высокого уровня. Первые несколько лет своего существования PyTorch был исключением из этого правила. Однако в 2019 году Facebook AI Research выпустила две платформы, которые быстро стали популярными. Обратите внимание, по состоянию на февраль 2021 года ни одна из этих библиотек не является зрелой (поэтому для начала гораздо полезнее изучить родные руководства PyTorch).

  • Classy Vision предоставляет утилиты для запуска новых проектов и широкого обучения. Библиотеку можно адаптировать к любому приложению. Поскольку она изначально создавалась для распознавания действий на видео, она предоставляет удобный набор видео утилит и готовую поддержку видеоданных. Чтобы узнать об этой библиотеке больше, почитайте ее мануал. Пример обучения Classy Vision в ImageNet: деревья решений с поддержкой нейронной сети.
  • PyTorch Lightning предоставляет основу для создания проектов PyTorch. Эту библиотеку тоже можно адаптировать к любому приложению. В мануалах PyTorch Lightning вы найдете много полезной информации и примеров.

Также полезно интегрировать несколько инструментов, не зависящих от библиотек глубокого обучения. Они широко используются как в исследовательских, так и в промышленных целях.

  • Weights and Biases – это приложение, предназначенное для отслеживания экспериментов. Особенно оно полезно для общения между соавторами, организации экспериментов и быстрой одновременной визуализации множества результатов.
  • Tensorboard разработан для Tensorflow. Но поскольку PyTorch изначально не поддерживал панель визуализации, специалисты-практики PyTorch приняли решение интегрироватьTensorboard. Руководство по внедрению Tensorboard  в PyTorch можно найти на сайте PyTorch.

Если вам нужно развернуть модель PyTorch в среде производства, для этого есть несколько распространенных вариантов:

  • TorchScript – это поддерживаемый «из коробки» инструмент развертывания моделей PyTorch. Однако в 2021 году в большинстве случаев для развертывания моделей используется один из двух следующих методов.
  • ONNX – это открытый формат для всех фреймворков глубокого обучения, который поддерживает не только развертывание, но и взаимодействие между такими фреймворками. На практике преобразование модели PyTorch в формат ONNX требует некоторой отладки. В последние годы ситуация немного улучшилась, поскольку PyTorch увеличивает встроенную поддержку экспорта ONNX.
  • Caffe2 – наиболее часто используемый инструмент для развертывания среди этих трех вариантов. Сам по себе Caffe2 был автономной средой глубокого обучения, но в 2018 году он был объединен с PyTorch. Узнать больше о развертывании в Caffe2 можно здесь.

Существует несколько GitHub репозиториев PyTorch, ориентированных на приложения, которые можно использовать для воспроизведения и получения новейших результатов в соответствующих областях исследований:

  • Detectron2 – репозиторий для компьютерного зрения, который поддерживает обнаружение и сегментацию объектов, оценку ключевых точек и многое другое. Он также включает утилиты для экспорта модели в Torchscript или Caffe2.
  • Transformers – репозиторий для обработки естественного языка, который поддерживает большое количество современных моделей и связанных с ними токенизаторов.

В экосистеме PyTorch можно найти множество других библиотек.

Заключение

В этом мануале вы установили PyTorch в виртуальной среде Python и убедились, что ваш экземпляр PyTorch работает. Теперь у вас есть инструменты для дальнейшей работы в области машинного обучения.

Чтобы узнать больше о PyTorch, читайте его официальные руководства. Вы также можете начать работу с другими популярными фреймворками глубокого обучения, например с Tensorflow.

Читайте также: Установка TensorFlow в Ubuntu 16.04
Tags: , , , ,

Добавить комментарий