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.