VS Code + Remote Docker 一種簡單的深度學習煉丹環境

blank

VS Code + Remote Docker 一種簡單的深度學習煉丹環境

關鍵詞:VS Code, Docker, Remote-Container, Remote-SSH

適用:遠程服務器上有計算環境(GPU煉丹爐)想使用Docker 快速配置環境的developer/researcher

簡單在哪:本方案全程鼠標點點點,不需要該任何.json等配置文件。

關於Docker 的好處這裡不多贅述,可以看下面這篇文章:

隨著宇宙第一編譯器Visual Studio 的弟弟Visual Studio Code (我也是宇宙第一編輯器!霧)不斷的迭代更新,到今天它已經極度適用於遠程開發,官方對於VS Code 遠程開發的擴展三劍客:Remote-SSH,Remote-Container,Remote-WSL 給開發者和研究者帶來了巨大的便利。

blank

Remote-SSH 大家可能已經熟知,它可以用於連接遠程服務器,並在其上安裝擴展插件,實現如代碼補全/語法檢查等令人舒適的功能。

而Remote-Container 則是將Docker 與VS Code 的優勢融為一體的關鍵先生,可以使得像Remote-SSH 登錄服務器一般登錄容器。

假使我們已經能夠利用Remote-SSH 進行遠程開發,接下來想要利用Docker 便捷地配置深度學習環境。整個過程可以簡單地分為四步:

(1)利用Remote-SSH 遠程登錄,然後安裝Docker 與Remote-Container 插件:

blank

(2)直接從如果想靈活一點,可以自己docker build,筆者的Dockerfile 如下:

FROM pytorch/pytorch:1.9.0-cuda10.2-cudnn7-devel# By default, GPU support is built if CUDA is found and torch.cuda.is_available() is true. # It’s possible to force building GPU support by setting FORCE_CUDA=1 environment variable, # which is useful when building a docker image.ENVFORCE_CUDA=1# From Detectron2# This will by default build detectron2 for all common cuda architectures and take a lot more time,# because inside docker build, there is no way to tell which architecture will be used.ARGTORCH_CUDA_ARCH_LIST="Kepler;Kepler+Tesla;Maxwell;Maxwell+Tegra;Pascal;Volta;Turing"ENVTORCH_CUDA_ARCH_LIST="${TORCH_CUDA_ARCH_LIST}"# From MMAction2. Not necessary.RUN apt-get updateRUN apt-get install git vim libgl1-mesa-glx ffmpeg ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6# Not necessary.RUN pip install gpustat pycocotools scipy opencv-python
blank

(3)實例化鏡像(images)生成容器(containers):

blank

此處需要注意,用docker run 實例化鏡像時,需要帶上gpu 相關的命令參數,否則在容器裡可能看不到gpu。如,可以使用下列命令:

docker run --gpus all --shm-size=8g -it -v /home/chenjoya/data/:/data chenjoya/pytorch

其中,-v 的意思是volume,為容器添加與服務器上聯通的數據卷。命令最後的參數為鏡像名,可以自己設置tag。

(4)Attach VS Code:

右鍵容器attach vs code,開啟神奇之旅!

blank

此時VS Code 會提示我們安裝docker desktop,按照指示安裝即可。另,第一次attach 會比較慢,vs code 會檢測正在運行的容器,可以在容器裡打開一個文件什麼的,讓它檢測到。

進入容器後,可以安裝python擴展,享受寫碼的便利:

blank

祝大家開開心心生活,快快樂樂煉丹!

What do you think?

Written by marketer

blank

再見了,亞馬遜。又一位賣家離開了

blank

基於Notion 的筆記寫作和博客分享自動化方案