vkgs-sim / docker /README.md
kimjunhan's picture
Add files using upload-large-folder tool
4c75661 verified
|
Raw History Blame Contribute Delete
3.14 kB
# vkgs-sim ๊ฐœ๋ฐœ ์ด๋ฏธ์ง€
๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(`scripts/local_setup.sh` ๊ฐ€ ๋งŒ๋“œ๋Š” micromamba ํ™˜๊ฒฝ `vkgs`)์„ ๊ฐ™์€ ๋ฒ„์ „ ๊ทธ๋Œ€๋กœ ๋‹ด์€ Docker ์ด๋ฏธ์ง€.
๋กœ์ปฌ ๊ฐœ๋ฐœ์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ , ๊ฐ™์€ ํ™˜๊ฒฝ์„ ๋‹ค๋ฅธ ๊ธฐ๊ณ„๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์˜ฎ๊ธธ ๋•Œ ์“ด๋‹ค.
| ๋ฌด์—‡ | ์–ด๋””์„œ |
|---|---|
| ์ปดํŒŒ์ผ๋Ÿฌ gcc 12 ยท CUDA 12.1 nvcc ยท Vulkan ๋กœ๋”/ํ—ค๋” ยท glslc ยท cmake ยท Tracy ์˜์กด์„ฑ | `docker/conda-lock.txt` (conda ์ž ๊ธˆ) |
| torch 2.4.1+cu121 ยท torchvision 0.19.1 ยท gsplat 1.4.0 (ํ™•์žฅ ๋ฏธ๋ฆฌ ๋นŒ๋“œ) | `docker/Dockerfile` |
| ๋‚˜๋จธ์ง€ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€ | `docker/requirements.lock.txt` (pip ์ž ๊ธˆ, `--no-deps`) |
| ์†Œ์Šค ยท ์„ค์ • ยท outputs ยท cache | ์ด๋ฏธ์ง€์— ์—†์Œ โ€” ์‹คํ–‰ ๋•Œ ์ €์žฅ์†Œ๋ฅผ **ํ˜ธ์ŠคํŠธ์™€ ๊ฐ™์€ ๊ฒฝ๋กœ**๋กœ bind-mount |
ArtiFixer ์ถ”๋ก  ํ™˜๊ฒฝ(micromamba `artifixer`)์€ ๋“ค์–ด ์žˆ์ง€ ์•Š๋‹ค.
## ์“ฐ๊ธฐ
```bash
docker compose build dev # ์ด๋ฏธ์ง€ dzqf0000/vulkansim:1.0 (์ฒ˜์Œ ์•ฝ 20~30๋ถ„)
xhost +local: # ์ฐฝ ๋ทฐ์–ด๋ฅผ ์“ธ ๋•Œ (ํ˜ธ์ŠคํŠธ์—์„œ ํ•œ ๋ฒˆ)
docker compose run --rm dev vkgs-doctor # CUDA ยท Vulkan ยท ๋ฐ์ดํ„ฐ์…‹ ์ ๊ฒ€
docker compose run --rm dev bash # ์…ธ โ€” ์•ˆ์—์„œ ๋ฐ”๋กœ nusim, cmake, pytest
```
์•ˆ์—์„œ ์ฒ˜์Œ ํ•œ ๋ฒˆ ๋ทฐ์–ด๋ฅผ ๋นŒ๋“œํ•œ๋‹ค:
```bash
cmake -S src/vkgs -B build -GNinja && cmake --build build
```
- `build/` ๋Š” ํ˜ธ์ŠคํŠธ์˜ `build-docker/` ๋กœ ๊ฐ€๋ ค์ง„๋‹ค. ํ˜ธ์ŠคํŠธ `build/` ๋Š” ํ˜ธ์ŠคํŠธ conda ์ปดํŒŒ์ผ๋Ÿฌ ๊ฒฝ๋กœ๋ฅผ ๋‹ด์€ CMake ์บ์‹œ๋ผ
๊ฐ™์ด ์“ฐ๋ฉด ์„œ๋กœ ๊นจ์ง„๋‹ค. nusim ์€ `<์ €์žฅ์†Œ>/build/vkgs_viewer` ๋ฅผ ์ฐพ์œผ๋ฏ€๋กœ ์•ˆ์—์„œ๋Š” ๊ฒฝ๋กœ๊ฐ€ ๊ทธ๋Œ€๋กœ๋‹ค.
- ์ €์žฅ์†Œ๋ฅผ ํ˜ธ์ŠคํŠธ์™€ ๊ฐ™์€ ๊ฒฝ๋กœ(`$PWD`)๋กœ ๋งˆ์šดํŠธํ•œ๋‹ค. `outputs/gs_day/*/segments.txt` ๊ฐ™์€ ํŒŒ์ผ์ด ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.
- nuScenes ์›๋ณธ์€ `:ro` ๋กœ ๋งˆ์šดํŠธ๋œ๋‹ค (`NUSCENES_ROOT`, ๊ธฐ๋ณธ์€ ํ˜ธ์ŠคํŠธ NAS ๊ฒฝ๋กœ).
- ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ์ž๋Š” uid 1000 โ€” outputs/ ์— ๋งŒ๋“  ํŒŒ์ผ์ด ํ˜ธ์ŠคํŠธ ์‚ฌ์šฉ์ž ์†Œ์œ ๊ฐ€ ๋œ๋‹ค.
- GPU ๋Š” ํ•˜๋‚˜(8 GB)๋‹ค. ํ˜ธ์ŠคํŠธ์—์„œ ํ•™์ŠตยทArtiFixer ๊ฐ€ ๋Œ๊ณ  ์žˆ์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ ์•ˆ ๋ทฐ์–ด๋„ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์‹คํŒจํ•œ๋‹ค.
## ์ž ๊ธˆ ํŒŒ์ผ ๋‹ค์‹œ ๋ฝ‘๊ธฐ (๋กœ์ปฌ ํ™˜๊ฒฝ์— ํŒจํ‚ค์ง€๋ฅผ ๋”ํ–ˆ์„ ๋•Œ)
```bash
~/.local/bin/micromamba env export -n vkgs --explicit > docker/conda-lock.txt
# pip ์ž ๊ธˆ: pip ๋กœ ์„ค์น˜๋œ ๊ฒƒ๋งŒ (conda ๊ฐ€ ๋„ฃ์€ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€ ยท torch ยท gsplat ยท nusim ์ œ์™ธ)
~/micromamba/envs/vkgs/bin/python - > docker/requirements.lock.txt <<'E'
import importlib.metadata as m
skip = {"nusim", "gsplat", "torch", "torchvision", "triton", "pip", "setuptools", "wheel",
"nuscenes-devkit", "lpips", "piq"}
rows = sorted((f"{d.metadata['Name']}=={d.version}" for d in m.distributions()
if (d.read_text("INSTALLER") or "").strip() == "pip"
and d.metadata["Name"].lower() not in skip and not d.metadata["Name"].lower().startswith("nvidia-")),
key=str.lower)
print("# docker/Dockerfile ์ด --no-deps ๋กœ ๋„ฃ๋Š” pip ํŒจํ‚ค์ง€ โ€” ๋กœ์ปฌ vkgs ํ™˜๊ฒฝ์—์„œ ๋ฝ‘์€ ๊ฒƒ")
print("\n".join(rows))
E
docker compose build dev
```