В последнем посте, который вы можете посмотреть здесь, мы рассмотрели бумажное пространство и шаги для начала работы. В этом посте мы настроим проект paperspace с нуля. Мы увидим, как хранить все пакеты/учетные данные в постоянном хранилище и не терять данные каждый раз, когда мы выключаем машину.

Мы начнем с создания новой машины, используя fast.ai в качестве среды выполнения, оставим URL-адрес рабочей области пустым и запустим блокнот.

Создайте новый блокнот и удалите URL-адрес рабочей области при создании блокнота.

Как мы все знаем, Python — это язык сценариев, и мы будем использовать Python для автоматизации.

Вы можете прочитать Документацию градиента paperspace.

Хранилище — общий каталог постоянного хранилища, доступный для всей вашей команды. Доступен в `/storage`. Данные могут совместно использоваться пользователями в команде и между записными книжками, принадлежащими пользователям в команде. Доступ к общему постоянному хранилищу должен осуществляться с помощью кода либо через терминал ноутбука, либо через ячейку кода в ноутбуке, поскольку в настоящее время нет способа получить доступ к общему постоянному хранилищу из графического интерфейса.

Диспетчер файлов — файлы доступны на обычной боковой панели IDE. Это соответствует каталогу, расположенному в `/notebooks`. Это также постоянное хранилище, но оно ограничено текущим блокнотом. Так что, если мы удалим этот блокнот, он исчезнет.

В прошлом посте мы установили пакет с pip. В то время как paperspace устанавливает пакеты с помощью conda. Вопрос в том, не испортит ли это ситуацию? Ответ на этот вопрос - нет. Место, где вам нужно использовать conda/mamba, — это то, что использует GPU. Особенно для PyTorch или TensorFlow. У Conda/mamba есть способ установить требования к набору инструментов CUDA, поэтому нам не нужно беспокоиться об отдельной установке CUDA SDK. Conda поддерживает версии CUDA, поскольку они должны правильно сочетаться с версией PyTorch.

Наша цель — установить несколько пакетов, а затем при следующем запуске ноутбука нам понадобится этот установленный пакет.

Обновим пакет fastcore:

pip install -U — user fastcore

Флаг --user устанавливает пакет в домашний каталог

Эти пакеты устанавливаются в папку с именем .local в домашнем каталоге. Поэтому в следующий раз, когда мы запустим блокнот, мы хотим, чтобы папка .local была там. Для этого нам нужно переместить это в постоянное хранилище, которое называется /storage. Мы можем сделать это с помощью следующих команд:

mkdir /storage/config
mv .local /storage/config

Советы:

- Чтобы удалить команды справа от курсора в терминале, введите ctrl + U
- Чтобы удалить команды слева от курсора в терминале, введите ctrl + К

Теперь я хочу сделать символическую ссылку на домашний каталог (по умолчанию в приведенной ниже команде). Поэтому нам не нужно упоминать об этом прямо.

ln -s /storage/config/.local/

Теперь, когда мы пытаемся просмотреть содержимое домашнего каталога, .local является просто указателем на /storage/config/.local/, но действует как обычная папка.

ls .local

что означает, что теперь вы можете импортировать `fastcore` и посмотреть на версию. Это тот, который мы установили.

Советы:

– Вы попадете в корневой каталог.

cd /

– Это приведет вас к домашнему каталогу.

cd 

В будущем, когда мы установим любой пакет, он будет храниться в /storage/config/.local, поскольку мы создали символическую ссылку на исходный .local. Единственное, что нам нужно сделать в следующий раз, когда мы запустим блокнот, — это создать символическую ссылку на .local.

Для чего-то такого простого вы можете просто создать сценарий bash.

Редактировать любые файлы можно двумя способами:

– Используйте графический интерфейс jupyter (но вам нужно сделать символическую ссылку /storage/на/notebooks/, чтобы использовать редактор)
– Использовать редактор Vim [рекомендуется]

В бумажном пространстве есть специальный файл, который запускается, когда мы запускаем машину, и этот специальный файл называется pre-run.sh.

ПРИМЕЧАНИЕ. Мы создаем файл pre-run.sh, а paperspace запускает run.sh в начале запуска машины, которая включает код для запуска pre- запустить.sh

Мы модифицируем pre-run.sh следующим образом:

#!/usr/bin/env bash
cd
rm -rf .local
ln -s /storage/config/.local/

ПРИМЕЧАНИЕ

Предположим, мы попытаемся запустить pre-run.sh, он выдаст ошибку с ошибкой отказа в доступе. Поэтому вам нужно добавить исполняемый файл к этому файлу.

chmod u+x pre-run.sh

Обычно мы не изменяем разрешение указанным выше способом. Мы делаем следующее:

chmod 744 pre-run.sh

💡 Цифра 744 означает:

- 7 для чтения, записи и выполнения для пользователя,
- 4 для чтения для группы
- 4 для чтения для всех

Вы можете подробно ознакомиться с командами chmod здесь.

Итак, если вы сейчас ищете разрешения для pre-run.sh:

rwx → 4 + 2 + 1 = 7

r-- → 4 + 0 + 0 = 4

r-- → 4 + 0 + 0 = 4

Теперь вы можете запустить скрипт:

./pre-run.sh

Давайте перезапустим машину и посмотрим, сможем ли мы создать обратную символическую ссылку из /storage/config/.local в .local.

Готово!

Таким же образом мы можем сделать это для других пакетов/файлов, таких как учетные данные AWS, имя пользователя/ключ Kaggle для API, .gitconfig и т. д.

Теперь давайте сохраним ключи ssh с нуля. В этот раз мы не будем использовать ssh-keygen, а загрузим уже имеющиеся у нас ssh-ключи.

Создайте папку .ssh в домашнем каталоге, где мы будем хранить закрытый и открытый ключи ssh.

mkdir .ssh
cd .ssh

Загрузите закрытый и открытый ключи в /storage и переместите ключи в .ssh.

Давайте изменим разрешения на каталог и ключи ssh.

# read + write + execute — user | no permissions — everyone
chmod 700 .
# read + write — user | no permissions — everyone
chmod 600 id_rsa
# read + write — user | read — everyone
chmod 644 id_rsa.pub

Вы можете протестировать эти ключи по ssh на github.com:

ssh [email protected]

Используйте -v, чтобы сделать его более подробным.

Теперь вам нужно включить .ssh в файл /storage/config.

mv .ssh /storage/config/

Теперь, чтобы создать символическую ссылку, нам нужно обновить pre-run.sh.

#!/usr/bin/env bash
cd
rm -rf .local
ln -s /storage/config/.local/
rm -rf .ssh
ln -s /storage/config/.ssh/

и запустите pre-run.sh

/storage/pre-run.sh
ls -la

Протестируйте его, подключившись по SSH к github.com,

ssh [email protected]

Он все еще работает!

Вы можете снова запустить машину и открыть терминал.

ls -a

Вы можете связаться со мной в Linkedin или Twitter. С удовольствием пообщаюсь и поделюсь впечатлениями. Спасибо.