Как подружить PyTorch и C Используем TorchScript

Как подружить PyTorch и C++. Используем TorchScript

Около года назад разработчики PyTorch представили сообществу TorchScript — инструмент, который позволяет с помощью пары строк кода и нескольких щелчков мыши сделать из пайплайна на питоне отчуждаемое решение, которое можно встроить в систему на C++. Ниже я делюсь опытом его использования и постараюсь описать встречающиеся на этом пути подводные камни. Особенное внимание уделю реализации проекта на Windows, поскольку, хотя исследования в ML обычно делаются на Ubuntu, конечное решение часто (внезапно!) требуется под «окошками».

Примеры кода для экспорта модели и проекта на C++, использующего модель, можно найти в репозиториии на GitHub.

Разработчики PyTorch не обманули. Новый инструмент действительно позволяет превратить исследовательский проект на PyTorch в код, встраиваемый в систему на С++, за пару рабочих дней, а при некотором навыке и быстрее.

TorchScript появился в PyTorch версии 1.0 и продолжает развиваться и меняться. Если первая версия годичной давности была полна багов и являлась скорее экспериментальной, то актуальная на данный момент версия 1.3 как минимум по второму пункту заметно отличается: экспериментальной ее уже не назовешь, она вполне пригодна для практического использования. Я буду ориентироваться на нее.

В основе TorchScript лежит собственный автономный (не требующий наличия Python) компилятор питон-подобного языка, а также средства для конвертации в него программы, написанной на Python и PyTorch, методы сохранения и загрузки получившихся модулей и библиотека для их использования в C++. Для работы придется добавить в проект несколько DLL общим весом около 70MB (для Windows) для работы на CPU и 300MB для GPU версии. TorchScript поддерживает большинство функций PyTorch и основные возможности языка python. А вот о сторонних библиотеках, таких как OpenCV или NumPy, придется забыть. К счастью, у многих функций из NumPy есть аналог в PyTorch.

Конвертируем пайплайн на PyTorch модель на TorchScript

TorchScript предлагает два способа преобразования кода на Python в его внутренний формат: tracing и scripting (трассировка и скриптование). Зачем два? Нет, понятно, конечно, что два лучше чем один.

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

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

В примере выше получается объект класса ScriptModule. Его можно сохранить

и загрузить потом в программу на C++ (об этом ниже) или в код на Python вместо исходного объекта:

Получающийся объект ScriptModule может выступать везде, где обычно используется nn.Module .

Описанным способом можно трассировать экземпляры класса nn.Module и функции (в последнем случае получается экземпляр класса torch._C.Function ).

Этот метод (tracing) имеет важное преимущество: так можно конвертировать почти любой питоновский код, не использующий внешних библиотек. Но есть и не менее важный недостаток: при любых ветвлениях будет запомнена только та ветка, которая исполнялась на тестовых данных:

Упс! Кажется, это не то, что мы хотели бы, правда? Хорошо, что по этому поводу хотя бы выдаётся предупреждающее сообщение (TracerWarning). Относиться к таким сообщениям стоит внимательно.

Тут нам на помощь приходит второй метод — scripting:

Ура, ожидаемый результат получен! Scripting рекурсивно анализирует код на Python и преобразует в код на собственном языке. На выходе получаем тоже класс ScriptModule (для модулей) или torch._C.Function (для функций). Казалось бы, вот оно, счастье! Но возникает другая проблема: внутренний язык TorchScript строго типизированный, в отличие от Python. Тип каждой переменной определяется первым присваиванием, тип аргументов функции по умолчанию — Tensor . Поэтому, например, привычный шаблон

оттрассировать не удастся.

Примечательно, что, хотя ошибка возникает при вызове torch.jit.script , указывается и вызвавшее ее место в скриптуемом коде.

Даже точки после констант начинают играть роль:

Потому что надо писать не 0 , а 0. , чтобы тип в обеих ветках был одинаковым! Избаловались, понимаешь, со своим питоном!

Это только начало списка тех изменений, которые требуется внести в код на python, чтобы его можно было успешно превратить в модуль TorchScript. Более подробно самые типичные случаи перечислю чуть позже. В принципе, никакой rocket science тут нет и свой код вполне можно поправить соответствующим образом. А вот исправлять сторонние модули, включая стандартные из torchvision , чаще всего править не хочется, а «как есть» для скриптования они обычно не пригодны.

К счастью, обе технологии можно совмещать: то, что скриптуется — скриптовать, а что не скриптуется — трассировать:

В примере выше трассировка используется, чтобы включить модуль, не поддающийся скриптованию, в модуль, где не достаточно трассировки и необходимо скриптование. Бывает и обратная ситуация. Например, если нам надо выгрузить модель в ONNX, при этом используется трассировка. Но трассируемая модель может включать функции на TorchScript, поэтому логику, требующую ветвлений и циклов, можно реализовать там! Пример приведен в официальной документации по torch.onnx.

Более подробно возможности, предоставляемые PyTorch для создания модулей на TorchScript описаны в официальной документации и руководстве по torch.jit . В частности, я не упомянул об удобном способе использования torch.jit.trace и torch.jit.script в виде декораторов, об особенностях отладки скриптованного кода. Это и многое другое есть в документации.

Включаем модель в проект на C++

К сожалению, официальная документация ограничивается примерами вида «сложить 2 тензора, сгенерированных с помощью torch.ones «. Я подготовил пример более приближенного к реальности проекта, отправляющего в нейросеть картинку из OpenCV и получающего обратно результаты в виде тензора откликов, кортежа переменных, картинки с результатами сегментации.

Для работы примера потребуются сохраненные скрипты классификации c помощью ResNet34 и сегментации с помощью DeepLabV3. Для подготовки этих скриптов надо запустить этот jupyter блокнот.

Нам потребуется библиотека torchlib . Получить ее можно несколькими путями:

  1. Если у вас уже стоит PyTorch, поставленный с помощью pip install , то ее можно найти в каталоге Python: <Miniconda3>\Lib\site-packages\torch ;
  2. Если у вас PyTorch собран из исходников, то она там: <My Pytorch repo>\build\lib.win-amd64-3.6\torch ;
  3. Наконец, можно скачать с pytorch.org отдельно библиотеку, выбрав Language = C++, и распаковать архив.

Код на C++ достаточно прост. Надо:

  1. Включить заголовочный файл
  2. Загрузить модель
  3. Подготовить данные
  4. Вызвать фунцию forward и получить результат
  5. Получить данные из результата. Как это сделать, зависит от того, что возвращает нейросеть. Кстати, принимать она в общем случае может тоже не только одну картинку, поэтому лучше посмотреть на исходный код примера целиком, там присутствуют разные варианты. Например, для получения данных из одномерного тензора типа float:
  6. Есть еще одна тонкость. Не забыть вставить в код аналог with torch.no_grad() , чтобы не тратить ресурсы на вычисление и хранение не нужных нам градиентов. К сожалению, эту команду нельзя включить в скрипт, поэтому приходится добавлять в код на С++:
Читайте также:  Настройка VPN сервера на Windows Server 2016

Как собрать проект с помощью CMake, описано в официальном руководстве. А вот тема проекта на Visual Studio там не раскрыта, поэтому опишу это подробнее. Придется вручную подкрутить настройки проекта:

  1. Я тестировал на Visual Studio 2017. Про другие версии сказать не могу.
  2. Должна быть установлена v14.11 тулсета v141 (галочка «VC++ 2017 version 15.4 v14.11 toolset» в инсталляторе VS).
  3. Платформа должна быть x64 .
  4. В General → Platform Toolset выбрать v141(Visual Studio 2017)
  5. В C/C++ → General → Additional Include Directories добавить <libtorch dir>\include
  6. В Linker → General → Additional Library Directories добавить <libtorch dir>\lib
  7. В Linker → Input → Additional Dependencies добавить torch.lib; c10.lib . В интернетах пишут, что еще может потребоваться caffe2.lib , а для GPU и еще что-нибудь из <libtorch dir>\lib , но в текущей версии мне хватало добавления этих двух библиотек. Возможно, это устаревшая информация.
  8. Пишут также, что надо ставить C/C++ → Language → Conformance Mode = No , но я не увидел разницы.

Также в проекте НЕ должна быть объявлена переменная __cplusplus . Попытка добавить опцию компилятора /Zc:__cplusplus приведет к ошибкам при компиляции в файле ivalue.h .

В прилагаемом проекте настройки путей (не только к TorchLib, но и к OpenCV и CUDA) вынесены в props файл, перед сборкой надо прописать их там в соответствии с вашей локальной конфигурацией. Вот, собственно, и все.

Что ещё следует иметь в виду

Если описанный процесс показался вам слишком простым, интуиция вас не обманула. Есть целый ряд нюансов, которые надо учитывать, чтобы преобразовать модель на PyTorch, написанную на Python, в TorchScript. Перечислю ниже те, с которыми приходилось сталкиваться. Некоторые я уже упоминал, но повторюсь, чтобы собрать все в одном месте.

  • Типом переменных, передаваемых в функцию, по умолчанию считается Tensor. Если в каких-то (весьма частых) случаях это окажется неприемлемым, придется объявить типы вручную, используя MyPy-style type annotations, примерно так:
  • Переменные строго типизированы и тип, если не указан явно, определяется первым присваиванием. Привычные конструкции вида x=[]; for . x.append(y) придется отредактировать, т.к. в момент присваивания [] компилятор не может понять, какой тип будет в списке. Поэтому придется указать тип явно, например:

или (другое «например»)

  • В примере выше надо импортировать именно имена, поскольку эти имена зашиты в код TorchScript. Альтернативный, казалось бы, законный, подход

приведет при скриптовании к ошибке Unknown type constructor typing.List

  • Еще одна привычная конструкция, с которой придется расстаться:

Тут есть два варианта. Или оба раза присваивать Tensor (то, что он разной размерности, не страшно):

и не забыть поискать, что сломается после такой замены. Или попытаться честно написать:

но тогда при дальнейшем использовании x там, где ожидается тензор, мы, скорее всего, получим ошибку: Expected a value of type ‘Tensor’ for argument ‘x’ but instead found type ‘Optional[Tensor]’.

Не забываем при первом присваивании писать, например, x=0. вместо привычного x=0 и т.п., если переменная x должна иметь тип float .

Если где-то использовалась старомодная инициализация тензора через x = torch.Tensor(. ) , с ней придется расстаться и заменить на более молодежный вариант с маленькой буквы x = torch.tensor(. ) . Иначе при скриптовании прилетит: Unknown builtin op: aten::Tensor. Here are some suggestions: aten::tensor. Вроде бы, даже объясняют, в чем проблема, и понятно, что надо делать. Впрочем, понятно, если уже знаешь правильный ответ.

Код скриптуется в контексте того модуля, где вызван torch.jit.script . Поэтому если где-то в недрах скриптуемого класса или функции используется, например, math.pow , придется в компилирующий модуль добавить import math . А лучше скриптовать класс там же, где он объявлен: или с помощью декоратора @torch.jit.script , или объявив рядом с ним дополнительную функцию, делающую из него ScriptModule. Иначе получим сообщение об ошибке undefined value math при попытке скомпилировать класс из модуля, в котором, казалось бы, сделан импорт math .

Если где-то у вас есть конструкция вида my_tensor[my_tensor < 10] = 0 или подобная, то при скриптовании вы получите загадочную ошибку:

Что вам нужно — это заменить число на тензор: my_tensor[my_tensor < 10] = torch.tensor(0.).to(my_tensor.device) . Причем не забудьте а) про соответствие типов my_tensor и создаваемого тензора (в данном случае — float) и б) про .to(my_tensor.device) . Если забудете второе, все отскриптуется, но уже в процессе выполнения при работе на GPU вас ожидает огорчение, которое будет выглядеть как загадочные слова CUDA error: an illegal memory access was encountered, причем без указания на место возникновения ошибки!

Не забыть, что по умолчанию nn.Module и, соответственно, модели из torchvision создаются в «в режиме поезда» (вы не поверите, но оказывается, есть такой режим). При этом используется Dropout и прочие трюки из train mode, которые или сломают трассировку, или приведут к неадекватным результатам при выполнении. Не забудьте вызвать model.eval() перед скриптованием или трассировкой.

Для функций и обычных классов надо скриптовать тип, для nn.Module — экземпляр

Попытка в методе скриптуемого метода обратиться к глобальной переменной

приведет при скриптовании к ошибке вида python value of type ‘float’ cannot be used as a value. Надо сделать переменную атрибутом в конструкторе:

  • Еще одна тонкость возникает, если атрибут класса используется в качестве параметра среза:

приводит при скриптовании к ошибке tuple slice indices must be integer constants. Надо указать, что атрибут num_layers — константа и меняться не будет:

  • В некоторых случаях там, где раньше нормально подходил тензор, требуется в явном виде передать число:

выдает при скриптовании ошибку Expected a value of type ‘Optional[number]’ for argument ‘min’ but instead found type ‘Tensor’. . Ну, тут из сообщения об ошибке понятно что делать:

Перечисленные выше проблемы возникают при трассировке. Именно из-за них просто скомпилировать готовые решения в TorchScript обычно не получается, и приходится или долго заниматься массажом исходного кода (если исходный код уместно редактировать), или использовать трассировку. Но и в трассировке есть свои нюансы:

  • В трассировке не работают конструкции вида

Устройство, на которое загружается тензор, фиксируется в момент трассировки и в процессе выполнения не меняется. Частично справиться с этой проблемой можно, если объявить тензор членом nn.Module с типом Parameter . Тогда при загрузке модели он загрузится на то устройство, которое указано в функции torch.jit.load .

Эпилог

Все перечисленное, конечно, создает проблемы. Но TorchScript позволяет объединить и отправить в решение как единое целое собственно модель и питоновский код, обеспечивающий пред- и постобработку. Да и время на подготовку решения к компиляции, даже несмотря на перечисленные трудности, несравнимо меньше, чем затраты на создание решения, а здесь PyTorch дает большие преимущества, так что игра стоит свеч.

Читайте также:  Какие проекты бань мы предлагаем

Источник

Как установить и использовать 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:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 в ImageNet: деревья решений с поддержкой нейронной сети. предоставляет основу для создания проектов PyTorch. Эту библиотеку тоже можно адаптировать к любому приложению. В мануалах PyTorch Lightning вы найдете много полезной информации и примеров.

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

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

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

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

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

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

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

Заключение

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

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

Источник

Как установить PyTorch с поддержкой GPU Ubuntu 18.04?

В этой статье мы рассмотрим установку PyTorch на Ubuntu 18.04, работает как на Desktop так и на Server выпуске, с поддержкой GPU. Итак, если у вас есть видеокарта Nvidia и вы хотите использовать PyTorch — это статья для Вас. Если вы не хотите использовать свою видеокарту для нейронных сетей, то можете установить Anaconda. Необходимо скопировать строку установка с официального сайта PyTorch. Хочу заметить, что использование видеокарты намного ускоряет процесс вычислений.
Существует три основных вариантов установки:
1. sudo ubuntu-drivers autoinstall, которая не содержит последние версии Nvidia драйверов.

2. Установка из сторонних репозиториев, также не всегда есть последние версии.

3. Установка с официального сайта Nvidia, но данный метод требует компиляции кода, но зато есть поддержка самых последних видеокарт серии RTX.

Мы рассмотрим последний вариант.

1. В первую очередь надо выключить встроенный драйвер Noveau, который не выключается обычным образом, даже установщик Nvidia не может нормально выключить его. Выполняем в терминале следующие команды:

Проследите, чтобы не было ошибок.

3. Перезагружаем компьютер.

4. Устанавливаем нужные для компиляции драйвера пакеты:

5. Скачиваем с официального сайта Nvidia последние драйвера:

Не забываем выбрать версию вашей видеокарты.

6. Кликаем на ‘Download’ правой кнопки и копируем ссылку.

8. Выполняем скрипт:

9. Проходим все этапы установки, обязательно будут предупреждения при установке драйвера, но везде кликаем ‘Yes’ до тех пор пока драйвер не выдаст сообщение о том, что он успешно установлен. Хочу заметить, что могут быть ошибки с генерацией ключа для Secure Boot. Самый просто вариант — это отключить Secure Boot в BIOS.

10. Перезагружаем компьютер.

11. Набираем nvidia-smi и Вы должны увидеть информацию о вашей видеокарте. Обратите внимание на версию CUDA — это очень важно при установке PyTorch. Пока на Апрель 2019, PyTorch поддерживается версия CUDA 10.0, не 10.1.

12. Устанавливаем PyTorch через conda. Anaconda установит нужную версию CUDA.

13. Заходим на сайт PyTorch. Выбираем нужные параметры и копируем строку установки в терминал, предварительно активировав нужное окружение conda activate имя_вашего_окружения.

Источник



Установка Pytorch на Windows, Linux и MacOS

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

Colab поставляется с предустановленными модулями Pytorch и Tensorflow и работает с поддержкой GPU и TPU.

Для установки на вашем собственном компьютере Pytorch поставляется как с CUDA, так и без вариантов CUDA, в зависимости от оборудования, доступных вам.

Это будет единой шаговой установкой – Pytorch начать локально Отказ

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

Итак, прежде чем идти вперед с учебником, убедитесь, что у вас есть up и запущенная дистрибуция AnaConda, настроенная на вашей операционной системе.

Примечание В случае, если вы не хотите использовать AnaConda, вы всегда можете использовать PIP для установки Pytorch. Поскольку PIP поставляется в комплекте с установщиком Python, у вас уже будет в вашей системе.

Установите Pytorch на Windows

Веб-сайт Pytorch предоставляет следующую команду для системы Windows. Pytorch работает с Windows 7 или выше и использует Python 3 или выше. Установка его с помощью ANACONDA довольно проста и может быть сделано за несколько минут.

Следующим шагом является вставка следующей команды в приглашении ANACONDA и запустите ее.

Подскажите все зависимости, которые будут установлены вместе с Pytorch. Если вы в порядке, чтобы продолжить, введите Да в командной строке.

Анаконда теперь продолжается с установкой. Вы можете проверить установку через интерпретатор Python или ноутбук Jupyter позже.

Теперь вы успешно установили Pytorch в вашей системе Windows.

Установка Pytorch на Linux

Если вы открываете ту же страницу установки с машины Linux, вы заметите, что сгенерированная команда будет другой.

Следующий шаг – скопировать и вставить команду в свой терминал и запустить ее.

Терминал просит вас получить разрешение на установку/обновление пакетов. Вам нужно нажать Да как ответ.

Установка теперь будет продолжать устанавливать факел и Torchvision пакеты в вашу среду.

Установка Pytorch на Mac OS

Мы будем использовать PIP, чтобы установить Pytorch в Mac OS. Все, что нам нужно, это выбрать соответствующие параметры на домашней странице Pytorch, чтобы получить команду установки.

Итак, мы должны запустить следующую команду для установки библиотек PyTorch и Torchvision на Mac OS.

Вот выход из терминала, когда вышеуказанная команда выполняется.

Последняя строка вывода четко утверждает, что пакеты для факела, так и для торжества успешно установлены.

Давайте запустим интерпретатор Python 3.7 и распечатайте версию горелки, чтобы подтвердить успешную установку.

Заключение

Pytorch – очень мощная система обучения машины. Он много используется в создании глубокого обучения путем обработки большого количества данных. Мы рассмотрим больше особенностей Pytorch в предстоящих руководствах.

Источник