์๊ฐ
์ด ๊ฐ์ด๋์์๋ GitHub Codespaces๋ฅผ ์ฌ์ฉํ ๊ธฐ๊ณ ํ์ต์ ์๊ฐํฉ๋๋ค. ๊ฐ๋จํ ์ด๋ฏธ์ง ๋ถ๋ฅ์๋ฅผ ๋น๋ํ๊ณ , GitHub Codespaces์ ๋ฏธ๋ฆฌ ์ค์น๋ ๋๊ตฌ ์ค ๋ช ๊ฐ์ง์ ๋ํด ์์๋ณด๊ณ , JupyterLab์์ codespace๋ฅผ ์ฌ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค.
๊ฐ๋จํ ์ด๋ฏธ์ง ๋ถ๋ฅ์ ๋น๋
Jupyter Notebook์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ์ด๋ฏธ์ง ๋ถ๋ฅ์๋ฅผ ๋น๋ํฉ๋๋ค.
Jupyter Notebook์ ํ๋์ฉ ์คํํ ์ ์๋ ์ ์งํฉ์ ๋๋ค. ์ฌ์ฉํ Notebook์๋ PyTorch๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ๋ถ๋ฅ์๋ฅผ ๋น๋ํ๋ ์ ์ด ์ฌ๋ฌ ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ฐ ์ ์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ , ์ ๊ฒฝ๋ง์ ์ค์ ํ๊ณ , ๋ชจ๋ธ์ ํ์ต์ํจ ๋ค์, ํด๋น ๋ชจ๋ธ์ ํ ์คํธํ๋ ํ๋ก์ธ์ค์ ๊ฐ ๋จ๊ณ์ ๋๋ค.
๋ชจ๋ ์ ์ ์์๋๋ก ์คํํ์ฌ ์ด๋ฏธ์ง ๋ถ๋ฅ์๋ฅผ ๋น๋ํ๋ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค. ์ด ์์ ์ ์ํํ ๋ Jupyter๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฌํ ์ ์๋๋ก ์ถ๋ ฅ์ Notebook์ ๋ค์ ์ ์ฅํฉ๋๋ค.
Codespace ๋ง๋ค๊ธฐ
-
github/codespaces-jupyter ํ ํ๋ฆฟ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.
-
์ด ํ ํ๋ฆฟ ์ฌ์ฉ์ ํด๋ฆญํ ๋ค์, codespace์์ ์ด๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ codespace๋ ์น ๊ธฐ๋ฐ ๋ฒ์ ์ Visual Studio Code์์ ์ด๋ฆฝ๋๋ค.
์ด๋ฏธ์ง ๋ถ๋ฅ์ Notebook ์ด๊ธฐ
GitHub Codespaces์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์๋ codespace์ ๋ฏธ๋ฆฌ ์ค์น๋ ๊ธฐ๊ณ ํ์ต ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์งํฉ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด Numpy, pandas, SciPy, Matplotlib, seaborn, scikit-learn, Keras, PyTorch, Requests, Plotly์ ๋๋ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ฐ๋ฐ ์ปจํ ์ด๋ ์๊ฐ ๋ฐ ๊ฐ๋ฐ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
- VS Code ํธ์ง๊ธฐ์์ ํ์๋๋ โ์์โ ํญ์ ๋ซ์ต๋๋ค.
notebooks/image-classifier.ipynb
Notebook ํ์ผ์ ์ฝ๋๋ค.
์ด๋ฏธ์ง ๋ถ๋ฅ์ ๋น๋
์ด๋ฏธ์ง ๋ถ๋ฅ์ Notebook์๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ ๊ฒฝ๋ง์ ํ์ต์ํค๊ณ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
-
๋ชจ๋ ์คํ์ ํด๋ฆญํ์ฌ Notebook ์ ์ ์คํํฉ๋๋ค.
-
์ปค๋ ์์ค๋ฅผ ์ ํํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด Python ํ๊ฒฝ์ ์ ํํ ๋ค์, ๊ถ์ฅ ์์น์์ Python ๋ฒ์ ์ ์ ํํฉ๋๋ค.
-
์๋๋ก ์คํฌ๋กคํ์ฌ ๊ฐ ์ ์ ์ถ๋ ฅ์ ๋ด ๋๋ค.
JupyterLab์์ codespace ์ด๊ธฐ
github.com/codespaces์ "codespaces" ํ์ด์ง์์ ๋๋ GitHub CLI์(๋ฅผ) ์ฌ์ฉํ์ฌ JupyterLab์์ codespace๋ฅผ ์ด ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ธฐ์กด Codespace ์ด๊ธฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
์ด๋ ค ์๋ codespace์ JupyterLab ์์ฉ ํ๋ก๊ทธ๋จ์ ์ค์นํด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ ๊ฐ๋ฐ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์๋ JupyterLab์ด ํฌํจ๋๋ฏ๋ก ๊ธฐ๋ณธ ์ด๋ฏธ์ง์์ ๋ง๋ codespace๋ ํญ์ JupyterLab์ ์ค์นํฉ๋๋ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ฐ๋ฐ ์ปจํ
์ด๋ ์๊ฐ ๋ฐ devcontainers/images
๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ๊ฐ๋ฐ ์ปจํ
์ด๋ ๊ตฌ์ฑ์์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ devcontainer.json
ํ์ผ์ ghcr.io/devcontainers/features/python
๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ JupyterLab์ ์ค์นํ ์ ์์ต๋๋ค. ์ต์
"installJupyterlab": true
๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ devcontainers/features
๋ฆฌํฌ์งํ ๋ฆฌ์์ python
๊ธฐ๋ฅ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ฐธ์กฐํ์ธ์.
codespace์ ๋ํ NVIDIA CUDA ๊ตฌ์ฑ
์ฐธ๊ณ ํญ๋ชฉ
์ด ์น์ ์ GPU๋ฅผ ์ฌ์ฉํ๋ ์ปดํจํฐ์์ codespaces๋ฅผ ๋ง๋ค ์ ์๋ ๊ณ ๊ฐ์๊ฒ๋ง ์ ์ฉ๋ฉ๋๋ค. ํ๊ฐํ ๊ธฐ๊ฐ ๋์ ์ ํํ ๊ณ ๊ฐ์๊ฒ GPU๋ฅผ ์ฌ์ฉํ๋ ์ปดํจํฐ ์ ํ์ ์ ํํ๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋์์ต๋๋ค. ์ด ์ต์ ์ ์ผ๋ฐ์ ์ผ๋ก ๊ณต๊ธ๋์ง ์์ต๋๋ค.
์ผ๋ถ ์ํํธ์จ์ด์์๋ codespace์ GPU๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด NVIDIA CUDA๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ devcontainer.json
ํ์ผ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ๊ตฌ์ฑ์ ๋ง๋ค๊ณ CUDA๋ฅผ ์ค์นํด์ผ ํ๋ค๊ณ ์ง์ ํ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์ง์ ๊ตฌ์ฑ ๋ง๋ค๊ธฐ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ฐ๋ฐ ์ปจํ
์ด๋ ์๊ฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
nvidia-cuda
๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ์คํ๋๋ ์คํฌ๋ฆฝํธ์ ๋ํ ์์ธํ ๋ด์ฉ์ devcontainers/features ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
-
codespace์ ํธ์ง๊ธฐ์์
.devcontainer/devcontainer.json
ํ์ผ์ ์ฝ๋๋ค. -
๋ค์ ๋ด์ฉ์ด ํฌํจ๋ ์ต์์
features
๊ฐ์ฒด๋ฅผ ์ถ๊ฐํฉ๋๋ค.JSON "features": { "ghcr.io/devcontainers/features/nvidia-cuda:1": { "installCudnn": true } }
"features": { "ghcr.io/devcontainers/features/nvidia-cuda:1": { "installCudnn": true } }
features
๊ฐ์ฒด์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ฐ๋ฐ ์ปจํ ์ด๋ ์ฌ์์ ์ฐธ์กฐํ์ธ์.์ด ์์ต์์ ๋ํด ๋ง๋ ์ด๋ฏธ์ง ๋ถ๋ฅ์ ๋ฆฌํฌ์งํ ๋ฆฌ์
devcontainer.json
ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด์ devcontainer.json
ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.{ "customizations": { "vscode": { "extensions": [ "ms-python.python", "ms-toolsai.jupyter" ] } }, "features": { "ghcr.io/devcontainers/features/nvidia-cuda:1": { "installCudnn": true } } }
-
๋ณ๊ฒฝ ๋ด์ฉ์ ์ ์ฅํฉ๋๋ค.
-
VS Code Command Palette์ ์ก์ธ์ค(Shift+Command+P / Ctrl+Shift+P)ํ ํ, โrebuildโ ์ ๋ ฅ์ ์์ํฉ๋๋ค. Codespaces: ์ปจํ ์ด๋ ๋ค์ ๋น๋๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํ
๋์ ๋ฐ๋ผ ๋ค์ ์ ์ฒด ๋น๋๋ฅผ ์ํํ์ฌ ์บ์๋ฅผ ์ง์ฐ๊ณ ์ ์ด๋ฏธ์ง๋ก ์ปจํ ์ด๋๋ฅผ ๋ค์ ๋น๋ํ๋ ค๊ณ ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Codespace์์ ์ปจํ ์ด๋ ๋ค์ ๋น๋์(๋ฅผ) ์ฐธ์กฐํ์ธ์. codespace ์ปจํ ์ด๋๊ฐ ๋ค์ ๋น๋๋ฉ๋๋ค. ์ด ์์ ์ ๋ช ๋ถ ์ ๋ ๊ฑธ๋ฆฝ๋๋ค. ๋ค์ ๋น๋ํ๋ ์์ ์ด ์๋ฃ๋๋ฉด codespace๊ฐ ์๋์ผ๋ก ๋ค์ ์ด๋ฆฝ๋๋ค.
-
๋์ค์ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ง๋ ๋ชจ๋ ์ codespace์ CUDA๊ฐ ์ค์น๋๋๋ก ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ๊ฒ์ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ํ ํ๋ฆฟ์์ codespace ๋ง๋ค๊ธฐ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.