Как установить и использовать PyTorch
Development, Python | Комментировать запись

PyTorch – это фреймворк, разработанный Facebook AI Research для глубокого обучения, соединяющий в себе и удобные для новичков инструменты отладки, и конфигурации высокого уровня для продвинутых пользователей. PyTorch используют в таких компаниях, как Facebook и Tesla. Приложение включает компьютерное зрение, обработку естественного языка, криптографию и многое другое. В этом руководстве основное внимание будет уделено установке PyTorch.
Мы установим версию PyTorch «CPU support only» в три шага. Такая установка идеально подходит для людей, которые хотят использовать PyTorch, но не имеют видеокарты Nvidia. Кроме того, мы установим PyTorch в виртуальной среде Python с помощью virtualenv. Такой подход изолирует установку PyTorch, а также позволит нам в дальнейшем устанавливать разные версии PyTorch для каждого проекта. После завершения установки мы протестируем свой экземпляр PyTorch, запустив небольшую программу, а затем воспользуемся PyTorch для классификации изображений.
Практический опыт глубокого обучения или работы с PyTorch не нужен, чтобы следовать этому руководству, однако мы предполагаем, что вы знакомы с основными терминами и понятиями из теории машинного обучения, такими как тензоры. Вы можете узнать больше об этих концепциях во введении в машинное обучение.
Требования
Для выполнения этого мануала вам потребуется локальная среда разработки Python 3 и как минимум 1 ГБ ОЗУ. Чтобы настроить Python и все необходимое для вашей среды разработки, вы можете следовать этим инструкциям:
- Настройка локальной среды разработки для Python 3 в Mac OS X
- Настройка локальной среды разработки для Python 3 в Debian 8
- Настройка локальной среды разработки для Python 3 в Ubuntu 18.04
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 с помощью следующей команды:
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.
Tags: AI, Python, Python 3, PyTorch, Машинное обучение