Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Colabをshellから使う
Search
SATOH Kiyoshi
March 22, 2022
Technology
0
140
Colabをshellから使う
2019/08/10のNSEG勉強会で話した内容です。
Colab上でshellを使う手法の紹介と、自サーバへのリモートフォワードで使う方法を説明します。
SATOH Kiyoshi
March 22, 2022
Tweet
Share
More Decks by SATOH Kiyoshi
See All by SATOH Kiyoshi
生成AIの「現在地」だけでなく「速度」も見よう
stealthinu
0
88
MCPとエージェント
stealthinu
1
220
意外に詐欺師がいるという教訓
stealthinu
0
150
RAGの仕組みとよくある課題
stealthinu
1
1.2k
音声変換と生成AI:開発者視点からの1.5年の振り返り
stealthinu
0
1.8k
リアルタイムボイスチェンジャーMMVCとVITSの紹介
stealthinu
0
2.7k
ディープラーニングブームは続くのか
stealthinu
0
110
スパム対策お焚き上げ
stealthinu
0
99
えせソアリンを作る
stealthinu
0
130
Other Decks in Technology
See All in Technology
企業の生成AIガバナンスにおけるエージェントとセキュリティ
lycorptech_jp
PRO
3
200
エンジニアが主導できる組織づくり ー 製品と事業を進化させる体制へのシフト
ueokande
1
110
株式会社ログラス - 会社説明資料【エンジニア】/ Loglass Engineer
loglass2019
4
65k
MagicPod導入から半年、オープンロジQAチームで実際にやったこと
tjoko
0
110
Bedrock で検索エージェントを再現しようとした話
ny7760
2
110
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
190
roppongirb_20250911
igaiga
1
250
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
260
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
200
Unlocking the Power of AI Agents with LINE Bot MCP Server
linedevth
0
120
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.8k
Snowflake×dbtを用いたテレシーのデータ基盤のこれまでとこれから
sagara
0
130
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
The Pragmatic Product Professional
lauravandoore
36
6.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
930
Navigating Team Friction
lara
189
15k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
What's in a price? How to price your products and services
michaelherold
246
12k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
Done Done
chrislema
185
16k
Transcript
Colab をshell から使う Colab をshell から使う 2019/8/10 さとうきよし
Colab とは Colab とは 無料でGPU/TPU 付きサーバを使えるサービス Web(Jupyter) 上からPython 環境が即利⽤可能 最⾼!
Colab の構成 Colab の構成 接続時にlinux のコンテナが起動 Web(Jupyter) 上から操作を⾏う コンテナ種によりGPU かTPU
が利⽤できる 完全に独⽴した環境なのでインストールも可能 コンテナは連続12 時間までしか稼働出来ない
コマンドの実⾏ コマンドの実⾏ Python の他にコマンドも実⾏可能 !cat /etc/debian_version !apt install sshd だがセルからしか実⾏できないため結構不便
外からの接続は出来ない 外からの接続は出来ない 外には出ていけるが外からは接続できない コンテナから外にトンネルを作りそこ経由で接続
ngrok というサービス ngrok というサービス ローカル上のものを外から接続可能にするサービス テストで動かしてるWeb サービスを⼀時的に接続可に 特定サーバ・ポートにアクセスするとフォワードする serveo という同種のサービスもある
Colab からngrok を利⽤ Colab からngrok を利⽤ sshd とngrok をコマンドで⼊れて利⽤ 下記内容をセルに貼って実⾏
import random, string, urllib.request, json, getpass #Generate root password password = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(20)) #Download ngrok ! wget -q -c -nc https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux- ! unzip -qq -n ngrok-stable-linux-amd64.zip #Setup sshd ! apt-get install -qq -o=Dpkg::Use-Pty=0 openssh-server pwgen > /dev/null #Set root password ! echo root:$password | chpasswd ! mkdir -p /var/run/sshd ! echo "PermitRootLogin yes" >> /etc/ssh/sshd_config ! echo "PasswordAuthentication yes" >> /etc/ssh/sshd config https://stackover ow.com/questions/48459804/how-can-i- ssh-to-google-colaboratory-vm
ngrok の問題 ngrok の問題 時々切れる ちょっと重い ngrok へのログインがだるい セキュリティ上の懸念(MITM) がちょっと不安
ssh のリモートフォワード ssh のリモートフォワード 固定IP のサーバがあればngrok と同様のことが可能 local から実⾏ ssh
-R 8081:target:80 remote /etc/ssh/sshd_con g にリモート接続許可する設定が必要 GatewayPorts yes https://qiita.com/mechamogera/items/b1bb9130273deb9426f5
Colab→ ⾃サーバへのトンネル Colab→ ⾃サーバへのトンネル Colab 側から⾃サーバへトンネルを張る ⾃サーバからトンネル伝ってssh 接続 Colab 側から実⾏
ssh -fNR 20022:target:22
[email protected]
dev.example.jp から実⾏ ssh -p 20022 root@localhost
⼊⼒が出来ない問題 ⼊⼒が出来ない問題 プロンプトからのパスワード⼊⼒等が出来ない パスワード⼊⼒はフォーム機能で⼊れる パスワード受け渡しはSSH_ASKPASS で回避 HostKeyChecking もオプションで回避 proxy_password =
'password' #@param {type:"string"} !echo "echo $proxy_password" > proxy_password.sh !chmod +x proxy_password.sh get_ipython().system_raw( 'export SSH_ASKPASS=/content/proxy_password.sh; export DISPLAY=dummy:0; setsid ssh -oStrictHostKeyChecking=no -fNR 20022:localhost:22
[email protected]
&')
Colab 側sshd の起動 Colab 側sshd の起動 先にsshd を⼊れて起動しておく LD_LIBRARY_PATH の設定無いとエラーになるので注意
import random, string, urllib.request, json, getpass password = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(20)) print(f'Root password: {password}') ! apt-get install -qq -o=Dpkg::Use-Pty=0 openssh-server pwgen > /dev/null ! echo root:$password | chpasswd ! mkdir -p /var/run/sshd ! echo "PermitRootLogin yes" >> /etc/ssh/sshd_config ! echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config ! echo "ClientAliveInterval 30" >> /etc/ssh/sshd_config ! echo "GatewayPorts yes" >> /etc/ssh/sshd_config ! echo "LD_LIBRARY_PATH=/usr/lib64-nvidia" >> /root/.bashrc ! echo "export LD_LIBRARY_PATH" >> /root/.bashrc get_ipython().system_raw('/usr/sbin/sshd -D &')
問題点 問題点 ⾃サーバがない → GCE の無料枠で踏み台サーバを⽴てる パスワードの受け渡し⽅ フォーム機能だとノートにパスワードが残る
Colab でshell 使えるの便利 Colab でshell 使えるの便利 ディープラーニングもののプロダクトの実験に便利 ⾃宅に⾼いGPU 積んだマシンなくても気軽に試せる