Colab 是谷歌提供的免費 Jupyter 服務,可使用 GPU。但由於每次的 VM (虛擬機)登出后所有文件都會連同VM被毀掉。如何將一個項目里的程序或數據同步到 Colab則往往比較麻煩。盡管谷歌盤也可以掛到 Colab 里用,但步驟也比較麻煩,另外 github 或 gitlab 的項目和谷歌盤的同步也並不直接。因而能直接將Colab 的 VM 與 github 或 gitlab 同步就可以節省時間。而且,程序在 Colab 上運行完后的結果也可以在VM消失前及時同步到github 或 gitlab 上保存。
用 git 同步Colab 與 gitlab、github 之間的文件共三步。
- 生成 ssh 私鑰-公鑰對,將公鑰添加到 gitlab 或 github 戶頭,私鑰拷到系統剪貼板里備用。
linux里可以用 ssh-keygen, Win里可以用 puttygen,github、gitlab 也可以生成私鑰-公鑰對。
Linux 里的私鑰-公鑰對在 .ssh 里,私鑰文件是 id_rsa, 公鑰是 id_rsa.pub
(github 戶頭添加公鑰參考文檔鏈接,gitlab戶頭添加公鑰參考文檔
鏈接)
-
在colab里的 jupyter 里運行:
key = \
'''
私鑰拷到這里
'''
! mkdir -p /root/.ssh
with open(r'/root/.ssh/id_rsa', 'w', encoding='utf8') as fh:
fh.write(key)
! chmod 600 /root/.ssh/id_rsa
! ssh-keyscangitlab.com >> /root/.ssh/known_hosts # 這一步是將 gitlab.com 的指紋寫到 .ssh/known_hosts 里,避免第一次運行時的yes/no交互
-
然后就可以按正常 git 管理運作了:
! git ...- 例:colab 同步 github
- 全局設置
!git config --global user.email "addy@xyz.com"
!git config --global user.name "your_name" - 測試
!ssh -T -o StrictHostKeyChecking=no git@github.com
如果輸出含‘ Hi abc! You've successfully authenticated, but GitHub does not provide shell access.’ 則說明設置正確
可以從github pull、push了。要注意 id_rsa 的 mod后6位必須為零(上面的 ! chmod 600 /root/.ssh/id_rsa的目的)。
設置不正確時,可以加 -v 或 -vv 看詳情,例如: !ssh -vT -o StrictHostKeyChecking=no git@github.com
同樣的思想可用於 rsync 同步 colab 和本機的文件。親測可用。
-
-
!git config --global user.email "addy@xyz.com"!git config --global user.name "your_name"
-
-