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
91
MCPとエージェント
stealthinu
1
230
意外に詐欺師がいるという教訓
stealthinu
0
150
RAGの仕組みとよくある課題
stealthinu
1
1.3k
音声変換と生成AI:開発者視点からの1.5年の振り返り
stealthinu
0
1.9k
リアルタイムボイスチェンジャーMMVCとVITSの紹介
stealthinu
0
2.7k
ディープラーニングブームは続くのか
stealthinu
0
110
スパム対策お焚き上げ
stealthinu
0
99
えせソアリンを作る
stealthinu
0
130
Other Decks in Technology
See All in Technology
多野優介
tanoyusuke
1
460
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
20k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
11
78k
JAZUG 15周年記念 × JAT「AI Agent開発者必見:"今"のOracle技術で拡張するAzure × OCIの共存アーキテクチャ」
shisyu_gaku
0
130
自作LLM Native GORM Pluginで実現する AI Agentバックテスト基盤構築
po3rin
2
270
Optuna DashboardにおけるPLaMo2連携機能の紹介 / PFN LLM セミナー
pfn
PRO
2
900
GopherCon Tour 概略
logica0419
2
190
GC25 Recap+: Advancing Go Garbage Collection with Green Tea
logica0419
1
430
M5製品で作るポン置きセルラー対応カメラ
sayacom
0
160
PLaMo2シリーズのvLLM実装 / PFN LLM セミナー
pfn
PRO
2
1k
AWS 잘하는 개발자 되기 - AWS 시작하기: 클라우드 개념부터 IAM까지
kimjaewook
0
110
リーダーになったら未来を語れるようになろう/Speak the Future
sanogemaru
0
300
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
51k
The Cost Of JavaScript in 2023
addyosmani
53
9k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Bash Introduction
62gerente
615
210k
Gamification - CAS2011
davidbonilla
81
5.5k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
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 積んだマシンなくても気軽に試せる