Недавно я следил за хорошо написанным средним рассказом о настройке машины Google Cloud для fast.ai. Хотя это очень подробное и красивое руководство, оно сработало для меня однажды, но больше не работает для меня, поэтому я думаю, что используемый скрипт не работает и нуждается в обновлении. Поэтому я постараюсь не повторять то, что уже было сказано, а постараюсь обновить или предложить несколько иные способы решения проблем. Поэтому я предлагаю сначала прочитать исходное руководство, а затем вернуться сюда, чтобы узнать, что я предлагаю по-другому.

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

curl https://raw.githubusercontent.com/howkhang/fastai-v2-setup/master/setup.sh | bash

Пожалуйста, не выполняйте вышеуказанное и продолжайте чтение. В настоящее время запуск jupyter notebook после выполнения вышеуказанного скрипта для меня не выполняется (дайте мне знать, если вам удастся работать). Итак, я обновил сценарий. Запустите следующее в терминале, как только вы подключитесь к своей машине GCP по ssh.

curl https://raw.githubusercontent.com/wontheone1/fast-ai-setup-on-gcp/e28519a5b592dc942879d3dc2a1851aac806c227/setup.sh | bash -x

Затем соединение ssh автоматически разорвется, когда скрипт будет запущен sudo reboot. Теперь настройка завершена, вы можете снова войти в нее по ssh и запустить блокнот до jupyter notebook. Откройте другой терминал и запустите

gcloud compute ssh pghoou@fast-ai --ssh-flag="-L" --ssh-flag="8888:localhost:8888"

Затем вы можете использовать записную книжку на своем localhost:8888 в браузере. Легкий! не так ли? Если вас интересует только настройка и запуск jupyter notebook, вам больше нечего читать, но если вам интересно, я объясню, что я изменил по сравнению с исходным скриптом и почему.

Первое отличие от оригинального сценария заключается в следующем.

Оригинал:

echo "c.NotebookApp.ip = '*'" >> ~/.jupyter/jupyter_notebook_config.py

Моя:

echo "c.NotebookApp.ip = '0.0.0.0'" >> ~/.jupyter/jupyter_notebook_config.py

Эта строка исходного сценария была причиной того, что установка не удалась для меня, и я узнал из fastai forum, что, изменив * на 0.0.0.0, ноутбук снова будет работать. И еще одно изменение, которое я внес в исходный сценарий, - это следующая часть.

wget https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh
bash Anaconda3-5.0.1-Linux-x86_64.sh -b

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

# INSTALL ANACONDA 5.3.0 
ANACONDA=Anaconda3-5.3.0-Linux-x86_64.sh 
wget https://repo.continuum.io/archive/$ANACONDA
bash $ANACONDA -b
rm $ANACONDA

Также некоторые тривиальные вещи, которые я изменил по сравнению с исходным сценарием, заключаются в следующем: а) мой сценарий НЕ загружает набор данных о собаках и кошках, в отличие от исходного. Это потому, что я думал, что не каждый, кто устанавливает fastai на GCP, хочет решать проблемы с собаками и кошками, поэтому я хотел, чтобы этот скрипт обслужил более широкие слои населения.

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

echo 'export PATH=~/anaconda3/bin:$PATH' >> ~/.bashrc
export PATH=~/anaconda3/bin:$PATH
source ~/.bashrc

и мой сценарий

sudo ln -s /home/$USER/anaconda3/etc/profile.d/conda.sh /etc/profile.d/conda.sh

Причина этого изменения заключается в том, что добавление каталога bin Anaconda в переменную окружения PATH не рекомендуется для доступа к команде conda. Обратитесь к этой проблеме Github и журналу изменений в репозитории conda.

Большинство других частей остались такими же, как в оригинальном скрипте, но я добавил небольшие тривиальные вещи:

# enable nvcc --version command
sudo apt install nvidia-cuda-toolkit -y
# Kaggle cli
pip install --upgrade pip
pip install kaggle

Это как раз то, что я продолжаю использовать, когда настраиваю машину для машинного обучения, и я думаю, что большинство других людей тоже сочтут это полезным. И последнее, но не менее важное: я использую параметр -x в bash, чтобы распечатать все команды в скрипте. Я нашел это полезным при изменении сценария установки. Я рекомендую вам оставить это в том же духе, так как подобный сценарий может быть сломан в будущем, так как он слишком сильно зависит от внешнего мира. Например, ссылки могут стать недоступными, или для будущей версии fastai могут потребоваться другие настройки. Так что в случае, если он сломается в будущем, использование опции -x будет полезно при отладке скрипта и его обновлении.

Если вы хотите загрузить набор данных о кошках и собаках, как в оригинале, вы можете запустить на своем терминале следующее. Это также создаст символическую ссылку для ~/data в ~/fastai/courses/dl1.

cd ~
mkdir data
cd data
wget http://files.fast.ai/data/dogscats.zip
unzip -q dogscats.zip
cd ~/fastai/courses/dl1/
ln -s ~/data ./

Это все для объяснения моего сценария. Я также хочу поговорить о небольшом совете по GCP. Мне нужно было несколько раз создать и удалить экземпляр виртуальной машины, чтобы протестировать мой скрипт. И вы также можете создавать / удалять виртуальную машину несколько раз по любым причинам. В такой ситуации я рекомендую не просто создавать виртуальную машину каждый раз, когда это необходимо. Потому что всякий раз, когда вы это делаете, вам нужно выбрать ОС, количество ЦП, память, хранилище, сетевой тег и т. Д. Вместо этого создайте шаблоны экземпляров один раз, и всякий раз, когда вам нужно создать виртуальную машину, вы можете создать ее из шаблона, чтобы нет необходимости выбирать все варианты каждый раз, когда вы это делаете.

Чтобы создать шаблон экземпляра, перейдите в «Compute Engine› Шаблоны экземпляров ». Нажмите "СОЗДАТЬ ШАБЛОН ЭКЗЕМПЛЯРА". Выбирайте все, как если бы вы создавали один экземпляр виртуальной машины. Щелкните имя созданного вами шаблона, нажмите «СОЗДАТЬ ВМ». Выберите имя и нажмите «СОЗДАТЬ». Это все для создания экземпляров из шаблона.

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