TL; DR: Можете да използвате сървър за предаване, за да се свържете с Google Colab чрез SSH.
Google Colab предлага безплатни компютърни ресурси. Google Colab обаче предоставя само уеб интерфейс, така че не можете да въвеждате команди в терминала, както обикновено бихте направили със сървър. За да направите това, можете да използвате сървър за предаване, за да се свържете с Google Colab чрез SSH.
Метод
За да се свържете с Google Colab чрез SSH, имате нужда от сървър за предаване с публичен IP. SSH портът на Google Colab се препраща към релейния сървър. След това можете да се свържете с Google Colab чрез релейния сървър от компютър.
стъпки
Печат на променливи на средата
Изпълнение в клетка на Google Colab:
import os for k, v in os.environ.items(): print(k, v)
Вижте SSH публичния ключ на компютъра
Изпълнете следната команда на компютър:
cat ~/.ssh/id_rsa.pub
Конфигурация
Изпълнение в клетка на Google Colab:
%%sh
mkdir -p ~/.ssh
echo '<SSH public key of PC>' >> ~/.ssh/authorized_keys
apt update > /dev/null
yes | unminimize > /dev/null
apt install -qq -o=Dpkg::Use-Pty=0 openssh-server pwgen net-tools psmisc pciutils htop neofetch zsh nano byobu > /dev/null
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa > /dev/null
echo ListenAddress 127.0.0.1 >> /etc/ssh/sshd_config
mkdir -p /var/run/sshd
/usr/sbin/sshd
Трябва да замените <SSH public key of PC>
с публичния ключ, който сте получили в последната стъпка.
Вижте SSH публичния ключ на Google Colab
Изпълнение в клетка на Google Colab:
!cat ~/.ssh/id_rsa.pub
Добавете SSH публичния ключ на Google Colab към релейния сървър
Изпълнете следната команда на релейния сървър:
echo '<SSH public key of Google Colab>' >> ~/.ssh/authorized_keys
Трябва да замените <SSH public key of Google Colab>
с публичния ключ, който сте получили в последната стъпка.
Препратете SSH порта на Google Colab към релейния сървър
Изпълнение в клетка на Google Colab:
!ssh -N -T -C -o StrictHostKeyChecking=no -R 127.0.0.1:28822:127.0.0.1:22 <user>@<hostname>
В горната команда <user>
и <hostname>
са съответно потребителското име и публичният IP адрес на релейния сървър.
SSH в Google Colab от компютър
Редактирайте ~/.ssh/config
на компютър:
Host jumpserver
User <user>
HostName <hostname>
Host colab
User root
HostName 127.0.0.1
Port 28822
ProxyJump jumpserver
В горната команда <user>
и <hostname>
са съответно потребителското име и публичният IP адрес на релейния сървър.
Изпълнете следната команда на компютър, за да влезете в Google Colab:
ssh colab
Когато рестартирате средата за изпълнение на Google Colab, ключът на хоста на Google Colab ще се промени, което ще доведе до грешка при влизане. Решението е да изтриете оригиналния ключ на хост, съхранен на компютър, като изпълните следната команда на компютър:
ssh-keygen -R "[127.0.0.1]:28822"
Конфигурирайте Google Colab
Инсталирайте „Oh My Zsh“
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Промяна на часовата зона
Тъй като Google Colab работи като докер изображение, директната промяна на часовата зона ще доведе до следната грешка:
Failed to create bus connection: No such file or directory
Часовата зона може да се променя с помощта на променливи на средата.
echo 'export TZ=":Asia/Hong_Kong"' >> ~/.zshrc
Инсталирайте Python 3.10
apt install -y software-properties-common
add-apt-repository -y ppa:deadsnakes/ppa
apt install -y python3.10-full python3.10-dev
Използвайте Byobu
За да предотвратите спирането на изпълняваната програма, когато SSH връзката е прекъсната, трябва да използвате командата byobu
, за да отворите Byobu сесия след влизане в SSH и след това да стартирате програмата в Byobu сесията. По този начин, дори ако SSH връзката е прекъсната, можете да възобновите сесията, след като влезете отново с помощта на командата byobu
.
Често използвани команди
Вижте информация за системата
neofetch
Вижте използването на процесора
htop
Монтирайте Google Drive
Сървърът ще бъде извикан след около 8 часа след стартиране. За да предотвратите загуба на данни, можете периодично да запазвате междинни резултати в Google Drive. За да монтирате Google Drive към Google Colab, можете да изпълните следната команда в клетка на Google Colab:
from google.colab import drive
drive.mount('/content/gdrive')
След това следвайте инструкциите.
Вижте модела на GPU
Изпълнете следната команда в клетка на Google Colab:
import torch
print(torch.cuda.get_device_name())
Ако моделът на GPU не е идеален, можете да опитате да рестартирате средата за изпълнение на Google Colab.
Вижте използването на GPU
LD_LIBRARY_PATH=/usr/lib64-nvidia watch -n 1 nvidia-smi
Струва си да се отбележи, че не можете директно export LD_LIBRARY_PATH=/usr/lib64-nvidia
. Някои GPU програми ще бъдат повредени от тази команда.
Конфигурирайте JAX да използва TPU
Изпълнете следната команда в Shell:
export COLAB_TPU_ADDR=<COLAB_TPU_ADDR>
В горната команда <COLAB_TPU_ADDR>
е стойността на променливата на средата COLAB_TPU_ADDR
, отпечатана в първата стъпка.
Преди import jax
изпълнете:
from jax.tools.colab_tpu import setup_tpu setup_tpu()
След това import jax
и тествайте дали TPU е настроен правилно:
import jax print(jax.devices())
Ако искате да научите повече за TPU и JAX, не забравяйте да разгледате това изчерпателно TPU ръководство, поддържано от общността: https://github.com/ayaka14732/tpu-starter.