Начало работы с Pytorch — практическая помощь в настройке среды облачного сервера

глубокое обучение

Эта статья возникла из личного публичного аккаунта:TechFlow, оригинальность это не просто, прошу внимания


Сегодня этоТемы Pytorchпервая статья.

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

Введение в Pytorch

Нижний уровень Pytorch — это инфраструктура Torch, которая представляет собой инфраструктуру научных вычислений с библиотекой манипулирования тензорами, похожей на Numpy. Очень гибкий, но его язык — Lua, который относительно мал и поэтому не очень популярен.

Позже команда разработчиков упаковала слой Python Api на основе Torch, чтобы мы могли совершать звонки через Python. Он разработан и поддерживается группой искусственного интеллекта Facebook и в настоящее время очень популярен в отрасли, особенно в академических кругах, почти во всех Pytorch. У него есть два самых больших преимущества, одно из нихдинамическая сеть, Нейронная сеть, определяемая такими фреймворками, как TensorFlow, является статической и не может быть легко изменена после того, как она написана до смерти. Но с Pytorch мы можем изменить любую нейронную сеть с нулевой задержкой. Второй момент – иметьМощные вычислительные инструменты с ускорением на GPU, GPU-ускорение Pytorch очень простое в использовании.

Кроме того, синтаксис Pytorch более лаконичный и стандартизированный, более Pythonic, а кривая обучения более плавная.Написанный код легче понять, больше подходит для начинающих.

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

Облачный сервер

Поскольку это среда глубокого обучения, лучше всего иметь среду GPU. Но для большинства из нас среда GPU — непростая задача. Например, я участник Мака, а в самом аппарате нет N-карты, и подключать извне не удобно. Конечно, также можно использовать жесткий процессор CPU без GPU, но нагрев очень серьезный, и это также повредит компьютер. Итак, лучший способ — арендовать графические процессоры онлайн.Облачный серверИли облачные сервисы.

Рекомендую облачный сервер Didi, лично у меня хороший опыт использования, самый дешевый всего два юаня за час, что должно быть дешевле интернет-кафе. В последнее время наблюдается огромная активность.Облачный пакет GPU составляет всего 2200, что является просто ценой капусты в цене капусты. Обратите внимание, что это предложение доступно только при размещении первого заказа. Если вам интересно, вы можете перейти по ссылке: https://i.didiyun.com/2cvmFVGpCjz

Посмотреть исходный текст

Поскольку я специально приглашенный пользователь, я получил мастер-код внутренней скидки.Если вы хотите купить другие облачные серверы GPU, вы можете ввести мой мастер-код 2323 при оплате, чтобы получить еще одну скидку 10%.

Конечно, вы также можете купить ноутбук с предустановленной средой или покупать ее время от времени. Преимущество Notebook в том, что он предустановлен с различными средами и доступен для использования, а недостаток в том, чтоНе поддерживает настройку, некоторые операции неудобны. В конце концов, с облачным сервером вы можете создать свой собственный Блокнот, но Блокнот не поддерживает функцию сервера.

Если вы хотите использовать другие платформы облачных серверов, вы можете проверить мою предыдущую статью

Хотите научиться глубокому обучению, но у вас нет графического процессора? Я нашел для вас несколько хороших площадок

Конфигурация среды

Чтобы некоторые Xiaobai не арендовали машину и не использовали ее, я предоставлю ее дальше.Подробное руководство по настройке среды(на основе Didi Cloud). Если вы используете другой сервер, поскольку среда не обязательно такая же, он может не обязательно применяться и может использоваться только в качестве эталона.

Вкратце весь наш процесс:Установите Python3, установите jupyter, настройте удаленный доступ jupyter, установите Pytorch.

Это очевидные процессы.Если компьютерная среда не является звуковой, будут некоторые скрытые процессы. Например, в обычной среде Linux необходимо настроить apt-get, а также загрузить общие инструменты, такие как git и wget. Если нет драйвера cuda, вам необходимо установить конфигурацию cuda самостоятельно. Если есть проблема на одном из шагов, вам также необходимо проанализировать причину проблемы и решить проблему. Поэтому среда настройки проста на словах, а проблем в реальной эксплуатации не так много.

Установить Python3

yum install python36

Установить блокнот юпитер

sudo pip3 install ipython jupyter notebook lab

Установить пароль для юпитера

jupyter notebook password

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

jupyter notebook --generate-config

После запуска он вернет путь, по которому находится файл конфигурации:

Открываем его с помощью vim и модифицируем в нем несколько строк:

c.NotebookApp.ip='0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 # 可以自己指定

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

ssh dc2-user@116.85.10.225 -L 127.0.0.1:8899:127.0.0.1:8888

Если хотите, вы также можете установить jupyter lab

sudo pip3 install jupyterlab

Метод использования аналогичен использованию ноутбука, а jupyter запускается удаленным выполнением команд.

jupyter lab --allow-root

Если нет проблем с запуском, мы можем открыть Jupyter локально, посетив: http://localhost:8899, и его можно использовать после ввода пароля.

Когда у нас заканчиваются облачные серверы, нам нужноНе забудьте удалить машину. Однако из-за ограниченного количества машин платформы, в соответствии с текущими настройками платформы, ресурсы по-прежнему будут зарезервированы для пользователей после завершения работы, но только в том случае, если потребуется оплата. Если вы арендуете сервер вовремя, очевидно, вы не можете смириться с тем, что не используете его и вам нужно платить. Для этой проблемы мы можем решить ее с помощью снимков. мыСоздание моментального снимка перед выключением:

потомудалить облачный сервер, выберите Создать из моментального снимка при следующем повторном создании сервера. Таким образом, машина, созданная в следующий раз, может сохранить текущую конфигурацию и данные, и нет необходимости вычитать комиссию. Если вы считаете это хлопотным, вы также можете добавить мой WeChat, чтобы связаться со мной, я помогу вам найти персоналДобавить в белый список бесплатного выключения.

Давайте используем pip для установки Pytorch и некоторых других необходимых пакетов. После установки проверим ситуацию с cuda через torch.cuda.is_avaiable(), если вывод True, значит он установлен.

tensor

Очень важным понятием в Pytorch является тензор, что дословно переводится какТензор, тензор в TensorFlow тоже означает это. Мы можем думать о тензоре как о многомерном массиве. Когда он 0-мерный, это число, скаляр. Когда он одномерный, это вектор, когда он двумерный, это матрица, а когда он многомерный, это многомерный массив. Это похоже на массивы в Numpy, но Tensor можно ускорить с помощью GPU.

Мы инициализируем тензор через интерфейс в torch, аналогично массиву в Numpy, он поддерживает несколько методов инициализации.

Пустая функция создает неинициализированный тензор указанного размера, содержимое которого не гарантируется.

rand создает случайно инициализированный массив:

единицы и нули создают массивы всех нулей или всех единиц:

Мы можем передать тип, чтобы указать тип элемента

Мы также можем создавать тензоры из готовых массивов:

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

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

Кроме того, тензор также поддерживает создание из массивов numpy, мы можем использовать функцию from_numpy для достижения:

Точно так же мы также можем использовать функцию numpy для получения массива numpy из тензора:

Вы также можете преобразовать тензор в массив Python с помощью метода tolist:

функция Функции
Tensor(*sizes) базовый конструктор
tensor(data,) Конструктор типа np.array
ones(*sizes) Полный 1Тензор
zeros(*sizes) Все 0Тензор
eye(*sizes) Диагональ 1, остальные 0
arange(s,e,step) От s до e размер шага равен шагу
linspace(s,e,steps) От s до e, равномерно разделенных на шаги
rand/randn(*sizes) Равномерное/стандартное распределение
normal(mean,std)/uniform(from,to) Нормальное распределение/равномерное распределение
randperm(m) случайное расположение

Мы можем не только указать их тип при создании тензора,Вы также можете указать устройство, на котором они хранятся. Например, ЦП или ГП. Конечно, мы не можем использовать это пока на ранней стадии, нам просто нужно помнить.

Суммировать

Это первая статья Pytorch, У нас есть краткое представление об этой структуре и структуре данных тензора в ней. Короче говоря, мы можем использовать обычно используемый Numpy для сравнения. По сути, у него есть некоторые функции в Numpy, а также некоторые API, которых нет у Numpy. Но несмотря ни на что, все изменения остаются прежними,Использование тензора должно облегчить нам обработку данных.

В Pytorch по-прежнему много применений тензора. На самом деле невозможно исчерпать все в одной статье, поэтому здесь просто краткое введение. Конкретное использование будет изложено в следующей статье. Увидимся на следующей неделе.

Если вам понравилась эта статья, пожалуйстаобращать внимание, подбодрите меня и облегчите доступ к другим статьям.

В этой статье используетсяmdniceнабор текста