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
110
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
意外に詐欺師がいるという教訓
stealthinu
0
58
RAGの仕組みとよくある課題
stealthinu
1
290
音声変換と生成AI:開発者視点からの1.5年の振り返り
stealthinu
0
870
リアルタイムボイスチェンジャーMMVCとVITSの紹介
stealthinu
0
2.4k
ディープラーニングブームは続くのか
stealthinu
0
84
スパム対策お焚き上げ
stealthinu
0
77
えせソアリンを作る
stealthinu
0
91
milter-managerが便利な話
stealthinu
0
120
GCEをTensorFlowの「計算エンジン」にする
stealthinu
0
76
Other Decks in Technology
See All in Technology
セキュリティ監視の内製化 効率とリスク
mixi_engineers
PRO
4
640
エンジニア採用ノウハウ0から継続的な採用に至るまで / Try recruiting engineers
ohageeq
0
130
Binary Authorizationと友達になろう / Let's be friends with Binary Authorization
iselegant
2
130
Building Static Websites with Sculpin
opdavies
0
1.4k
LLMに日本語テキストを学習させる意義
ksaito
13
3.4k
[RSJ24] Object Segmentation from Open-Vocabulary Manipulation Instructions Based on Optimal Transport Polygon Matching with Foundation Models
keio_smilab
PRO
0
120
夏休みの(最後の)宿題 for JuliaTokyo #12
antimon2
0
130
Envoy External AuthZとgRPC Extensionを利用した「頑張らない」Microservices認証認可基盤
andoshin11
0
140
Oracle Database Backup Service:サービス概要のご紹介
oracle4engineer
PRO
0
4k
AWS版GitHub?Amazon CodeCatalystの全体像をまとめてみた
oshanqq
1
3.2k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
2
130
中規模・ミドルTier開発組織におけるDevRelの戦略と実行と成果 - DevRel Guild Conference Mini -
leveragestech
2
260
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
241
11k
Why Our Code Smells
bkeepers
PRO
333
56k
Documentation Writing (for coders)
carmenintech
65
4.3k
Building an army of robots
kneath
302
42k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
109
6.9k
Fireside Chat
paigeccino
31
2.9k
StorybookのUI Testing Handbookを読んだ
zakiyama
25
5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
278
13k
A Philosophy of Restraint
colly
202
16k
Design by the Numbers
sachag
277
19k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
Navigating Team Friction
lara
183
13k
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 積んだマシンなくても気軽に試せる