Kaggleをちょっと調べてみた。週30h分の無料GPU演算資源が使えるものの、環境はJupyter Notebookで提供されている。NotebookでPython環境を使うことに慣れていない。単一ファイルのコードでアイデアを素早く実装するツールには合うと思う。ただし、レイヤーが多いエンジニアリング用コードでは、コードが分断されたような感覚になる。そこで、SSHで接続できるかを試してみることにした。
実現可能な方法
ngrokのトンネルでKaggle上のSSHサーバーを外部公開します。以下のNotebookセル用コードです。
Python
# 1. 安装并配置ngrok
!pip install pyngrok
from pyngrok import ngrok
# 设置ngrok认证token
ngrok.set_auth_token("your_auth_token")
# 2. 启动SSH服务
!DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-server
!mkdir -p /var/run/sshd
# 配置SSH服务,允许root登录并启用密码认证
!echo "root:your_password" | chpasswd
!echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
!echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
!service ssh start
# 3. 使用ngrok暴露SSH端口
ssh_tunnel = ngrok.connect(22, "tcp")
print("SSH Tunnel:", ssh_tunnel.public_url)
# 4. 输出本地SSH连接命令
ssh_host, ssh_port = ssh_tunnel.public_url.replace("tcp://", "").split(":")
print(f"Use the following command to connect via SSH:\nssh root@{ssh_host} -p {ssh_port}")
制限
実際に試したところ、ngrokでTCPポートを利用するにはクレジットカードかデビットカードの登録が必要でした。ただし、中国本土のカードでは認証が通らないようです。
HTTPプロキシで外部公開する
Kaggle上のHTTPサービスを外部公開します。
Python
%cd ../../
%cd kaggle
%ls
%cp -r input/testfilebox /my
%cd /my
%cd fcb-fronted
!npm install
!npm run build
%cd ../
%pip install -r requirements.txt
# 设置ngrok认证token
ngrok.set_auth_token("your token")
# 2. 使用ngrok暴露FastAPI服务的HTTP端口
http_tunnel = ngrok.connect(12345, "http")
print("Public URL:", http_tunnel.public_url)
!python main.py