- Published on
๐ฉโ๐ป | ๋ฐ๋ฅ๋ถํฐ ํ๋ ์ธ๊ณต์ง๋ฅ: ์จ๋ณด๋ฉํธ
์๋ก
๋ถ๋๋ฌ์ด ๊ณ ๋ฐฑ์ด์ง๋ง, ์ง๋ 2๋ ๋์ ์ทจ์ ์ ํ๊ณ ์ผ์ ๋จธ์ ๋ฌ๋์ ๋ณธ์ง์ ๊น๊ฒ ๋ค์ฌ๋ค๋ณด์ง ๋ชปํ๋ค. ์์ฌ ์์ ๋ถํฐ ๋ฌธ์ ๋ฅผ ์ข๊ฒ๋ง ๋ฐ๋ผ๋ณด๋ ์ต๊ด์ ์ง์ฅ ์ํ์์๋ ์ด์ด์ก๊ณ , ๊ฒฐ๊ตญ ์ง๋ 2๋ ์ ์ค์ค๋ก๋ ๋ฌด์์ ์๊ณ ์๋์ง ๋ชจํธํ ์ํ๋ก ํ๋ฌ๊ฐ ๋ฒ๋ ธ๋ค.
์ด์ง ์ฌ์ด์ ๊ณต๋ฐฑ๊ธฐ์๋ ์ํฉ์ ๋น์ทํ๋ค. ์๋ฆฌ์ ๋ํ ๊ณ ๋ฏผ ์์ด Input๊ณผ Output์๋ง ์ง์คํด ๋น ๋ฅด๊ฒ ๊ฒฐ๊ณผ๋ง ๋ฝ์๋ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋งค๋ชฐ๋์๊ณ , ๋์ด์ผ๋ณด๋ ์ด๋ ๋๋ฌด๋ ํฐ ์๊ฐ ๋ญ๋น์๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ ํฌํธํด๋ฆฌ์ค๋ฅผ ์ค๋นํ๋ ๊ณผ์ ์์ ์ฌ์คํ ๋๋ฌ๋ฌ๋ค. ๋ด ์์ ๋ฌผ ์ด๋์๋ "์ ์ด ๊ธฐ์ ์ ์ผ๋๊ฐ?"์ ๋ํ ๋ต์ ์์๊ณ , ๋น์ฅ์ ์์น๋ฅผ ๋ด๊ธฐ์ ๊ธ๊ธํ๋ ํ์ ๋ค๋ง ๋จ์์์๋ค.
์์ผ๋ก ์งง์ 1๋ ๋์์ ๋ชจ๋ธ์ ๋ง๋ค์ด๋ณด๊ณ ์๋ผ๋ ์๋ฌธ์ผ๋ก ์ฌ๋ผ๊ฐ๋ top-to-bottom ์์ ํฌ์คํธ๋ฅผ ์ฐ์ฌํ๋ ค๊ณ ํ๋ค.
Back to basic but efficiently
๋จ์ํ ๊ธฐ๋ณธ์ ๋ฐ๋ณต์ ํด์๋ ๋๋ ์ผ์ด ์๋๋ผ๊ณ ํ๋จํ๊ณ , ๊ธฐ๋ณธ์๋ค์ ์ ๋ฆฌํ ํฌ์คํธ๋ฅผ ์ง์๋๊ฐ๋ฉด์ ๊ตณํ๊ธฐ๋ก ๋ฐ๋ณตํ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ์ด ํฌ์คํธ๋ 4๋ ์ ์ ๋์๋ค๋ฉด ์ด๋ฐ ๊ฒ๋ค์ ํ์ ๊ฒ์ด๋ค๋ผ๋ ๋์ ์์ต(?)๊ณผ ๋๋ฆ์ ํ ํ๋ฆฟ ๋ง๋ค๊ธฐ ๊ณผ์ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๊ฒ ๋ค.
ํ๊ฒฝ์ค์
ํ์ ์์ ๋ฐฐ์ ๋ ๊ฒ๋ค๊ณผ ์ฝ๊ฐ์ ์คํ์ ํ๋ฉด์ ๋ด๊ฐ ๊ฐ์ธ์ ์ผ๋ก ํธํ๋ค๋ ๊ฒ๋ค์ ์ ๋ถ ๊ณต์ ํด๋ณด๋ ค๊ณ ํ๋ค. ์ฌ๋ด on-boarding์์ ์ง์ ์์ฑํ ๊ฒ๋ค์ธ๋ฐ, ๋ถ์ฐ ์ค๋ช ์ ํ๊ตญ์ด๋ก ๋ณ๋๋ก ์ฒจ๋ถํ๋ค.
Languages & OS
๋๋ถ๋ถ paper with code๋ ubuntu ์์์ ๊ฐ๋ฐ๋ ๊ฒ๋ค์ด ๋ง๋ค. ์ผ๊ด์ฑ์ ์ํด coding style guide๋ฅผ ์ ์ฉํด๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ ํธ์ด๋ค. ์๋ฌด๋๋ ํ์ ์ผ๋ก ๋ค์ด๊ฐ๋ฉด ๊ฐ๋ ์ฑ์ ์์ด์ ํจ๊ณผ๋ฅผ ๋ณธ ๊ฒฝํ์ด ์๋ค.
- Python 3.11 (Recommended, from 3.7 and up)
- Google coding style guide
- manage python versions in ubuntu:
sudo update-alternatives --config python - C++ (modern 17, 20 Recommended)
- Linux Ubuntu 22.04 (Recommended) & wsl(if using windows os)
- CUDA 12.X (Recommended)
Environments
๊ฐ์ธ์ ์ผ๋ก conda, boilerplate(if scratch) ์ด ์กฐํฉ์ ์์ฃผ ์ด๋ค. ํ๋ก์ ํธ ๊ด๋ฆฌ์ ๊ทธ๋ํ ๊ฐ๋ ์ฑ์ผ๋ก tensorboard๋ณด๋ค wandb ์ฌ์ฉํ๋ ค๊ณ ํ ์คํธ ์์ ์ ์๋ค. (2026.03.02 ์ถ๊ฐ: ํ์คํ ํ ์คํธ ๋ก๊ทธ์ ๊ทธ๋ํ๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ด์ ์ข๋ค. ํนํ ์ด๋์์๋ ํ๋ จ์ด ๋ณด์ด๋๊ฒ ํ์คํ ํธํ๋ค. ํฅํ ์ด์ ๊ด๋ จํด์๋ ๋ฐ๋ก ํฌ์คํธ๋ฅผ ์ ์ ์์ ์ด๋ค.)
Miniconda(Recommended) | venv(option)
All environments should be managed through conda or or virtual environments
๐ค What are the differences between these two?
๐ Venv is a more lightweight, independent virtual environment compared to conda. However, for managing ML environments comprehensively, conda is more suitable.
- โ note that official pytorch channel has been deprecated: https://github.com/pytorch/pytorch/issues/138506
- https://wikidocs.net/74394
- https://wikidocs.net/135082
Boilerplates
If youโre building a project from scratch, a boilerplate is a good option. Itโs a pre-made starter template that saves time, ensures consistency, reduces errors, and follows best practices for new projects.
WandB
Issac Sim(option)
Issac sim is a simulation engine for reinforcement learning research(mostly on motion generation, control domain).
Check official documents for details.
Apache Spark(option)
While our lab doesn't currently handle large-scale data, Apache Spark could be a valuable option for future applications or when expanding to other domains.:
IDE
vscode
๊ฐ์ธ์ ์ผ๋ก vscode๋ extension ์ฌ์ฉ๊ณผ ๊ฐ๋ฒผ์ด ๋ง์ ์ฌ์ฉํ๋ค. ์ ์ฉํ๋ extension์ ์๋์ ๊ฐ๋ค.
๐ค Why not using pycharm for python, ml researches?
๐ While pycharm excels at python debugging, our lab uses multiple languages (Python, C++), making a multi-language IDE like vscode more practical for unified tooling and workflow consistency.
- Extensions:
- for languages: python, autopep8 or black-formatter, isort, cmake
- for utils**: git graph**, jupyter, marp, remote-ssh, vscode-icons, wsl
- Format on save
ctrl + shift + p> settings.json example:{ "[python]": { "editor.defaultFormatter": "ms-python.black-formatter", "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": "explicit" } }, "isort.args": ["--profile", "black"], "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "github.copilot.nextEditSuggestions.fixes": false, "github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges": false, "editor.formatOnSave": true, "editor.formatOnSaveMode": "modificationsIfAvailable" }
visual studio 2022
- Download & install
- Debugging skills: https://learn.microsoft.com/ko-kr/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=vs-2022
CLI
Github
README for preparation & execution
- README template : https://github.com/othneildrew/Best-README-Template (Recommended)
- simple ver.: https://gist.github.com/DomPizzie/7a5ff55ffa9081f2de27c315f5018afc
Few useful tips of git:
git pull --rebase: make sure to pull git if collaborating with someone to prevent merge conflictsgit stashโ test branch commit: preserves current commitgit status: track your git if something gets wrong.- commit by units(tasks, files etc)
Commit Message Format
- [Tag] short desciption
- ex. [Task] Add [FILENAME].py
| Tag | Meaning |
|---|---|
| Task | New task or feature |
| Fix | Bug fix |
| Refactor | Code restructure (no behavior change) |
| Test | Tests |
Others
- Download git bash from the official site
- generate ssh-key: https://git-scm.com/book/ko/v2/Git-์๋ฒ-SSH-๊ณต๊ฐํค-๋ง๋ค๊ธฐ
- How to build internal git server
DVC
To manage large contents/data and codes seperately, we use dvc(data version control). What is DVC?
TDD
TDD ๊ฐ๋ฐ์ ๊ฐ์ธ ์ ํธ๋๋ผ๊ณ ์๊ฐํ๋ ํธ์ธ๋ฐ, ์ผ๋จ ๋ณธ์ธ์ TDD๋ฅผ ํ์ง ์์ผ๋ฉฐ, ๋จผ์ ๋ง๋ค๊ณ ๊ฒํ ํ๋ ์์ผ๋ก ๊ฐ๋ฐํ๋ ํธ์ด๋ค.
What is Test Driven Development?
๐ค So.. is it necessary?
๐ Our lab focuses on independent research, so this design approachโmainly useful for long-term, multi-developer projectsโmeans TDD is optional for us.
A/B test
๋ณดํต ์๋น์ค ๊ธฐ์ ์์ ์ฌ์ฉ์ ์ ํธ๋ ์คํ์ ์ํ ํ ์คํธ ๊ธฐ๋ฒ์ด๋ค. ์๊ณ ์์ผ๋ฉด ์ข์์ ์งง๋งํ๊ฒ ์๊ฐํ๋ค.
What to see & How to see
๋จธ์ ๋ฌ๋์ ์์ํ๋ค๊ณ ํ์ ๋ ์ด๋ค ์๊ฐ์ผ๋ก ๋ด์ผํ ์ง์ ๋ํ ์ด๋ ์ ๋์ ๋ฐฉํฅ์ฑ์ ๊ฐ์ง๊ณ ์์ํ๋๊ฒ ์ข๋ค๊ณ ์๊ฐํ๋ค.
- top-to-bottom: ๋ชจ๋ธ์ ๋ง๋ค์ด๋ณด๊ณ -> ์๋ผ๋ ์๋ฌธ์ผ๋ก ์ฌ๋ผ๊ฐ๋ ๋ฐฉ์
- bottom-to-top: ์ ํ๋์์ ํต๊ณํ๋ถํฐ ์์ํด์ -> ๋ชจ๋ธ์ ๋ง๋ค์ด๋ณด๋ ๋ฐฉ์
ํ๋ฃจ๊ฐ ๋ค๋ฅด๊ฒ ์์์ ธ ๋์ค๋ ๋ ผ๋ฌธ๋ค๋ก ๋๋ถ๋ถ์ top-to-bottom ๋ฐฉ์์ผ๋ก ์ ๊ทผํ๋ ํธ์ด์ง๋ง, ์ค์๋ ์๊ด์์ด ์๋ฐฉํฅ ๋ชจ๋ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋๋ ์ ์ด๋ ๊ธฐ๋ณธ์ ์ธ ๊ฒ๋ค์ ์๊ณ ์์ํ๋ ๊ฒ์ด ๋ง๋ค๊ณ ์๊ฐํ๋ค. ํ์ด ์์ผ๋ฉด ๊ทธ ๋ชจ๋ธ์ด ์ ์ฑ๋ฅ์ด ์๋์ค๋์ง ๊ฑฐ์ ์๊ฐ๋ง ํ๋นํ๊ธฐ ๋๋ฌธ์ด๋ค.(๋ณธ์ธ์ด ์ค์ ๋ก ๊ทธ๋ฌ๊ธฐ๋ ํ๋ค)
์ด๋ค ํฌ์ง์ ์ ์ก๋์ ๋ฐ๋ผ์ ๋ค๋ฅด์ง๋ง(application์ด๋ research์ ๋ฐฉํฅ ๋ฑ๋ฑ) ๋ฅ๋ฌ๋์ ํฐ ํ์ ์ ํต์ ์ธ ๋จธ์ ๋ฌ๋ ๋ฐฉ๋ฒ์ ์ฐจ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐํด์ ์ ์ ํ๊ณ ์ด๋ค ๋ชจ์ ํน์ ๋น๋ชจ์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ฅ ๋ถํฌ๋ฅผ ๋ง๋ ๋ค. ๊ทธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ํํํ๋ ํ๋ฅ ๋ถํฌ๋ฅผ ๋ง๋๋ ๊ฒ์ ํฐ ํ๋ก ์๊ฐํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
์ ํ๋์์ ํต๊ณํ
Bottom up์์ ๊ณต๋ถํ๋ ค๋ฉด ์๋ ์ฑ ๋ค์ ์ถ์ฒํ๋ค. ์์ฒญ๋(?) ์ ์์ ์๋์ง๋ง ์ด๋์ ๋ insight์ป๋๋ฐ๋ ๋์์ ๋ง์ด ์คฌ๋ ์ฑ ๋ค์ด๋ค.
๐ ์ค์์ฑ์ ์ํด์ ์๋ ํธ์ํฐ ๊ธ์ ์ฒจ๋ถํ๋ค.

Summary
๋จธ์ ๋ฌ๋/๋ฅ๋ฌ๋์ ์ ๋ฌธํ๋ ค๋ ์ฌ๋๋ค์๊ฒ ๋์์ด ๋ ์ ์๋ ํ๊ฒฝ์ค์ ๊ณผ ๊ณต๋ถ ๋ฐฉํฅ์ฑ์ ๋ํ ํฌ์คํธ์๋ค. ๋ค์ ํฌ์คํธ์์๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋ชจ๋ธ์ ๋ง๋ค์ด๋ณด๋ฉด์ ์๋ผ๋ ์๋ฌธ์ผ๋ก ์ฌ๋ผ๊ฐ๋ top-to-bottom ๋ฐฉ์์ผ๋ก ์งํํ ์์ ์ด๋ค.
- Authors

- Name
- Amelia Young
- GitHub
- @ameliacode