В последнем посте, который вы можете посмотреть здесь, мы рассмотрели бумажное пространство и шаги для начала работы. В этом посте мы настроим проект 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. С удовольствием пообщаюсь и поделюсь впечатлениями. Спасибо.