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)์€ ๋“ค์–ด ์žˆ์ง€ ์•Š๋‹ค.

์“ฐ๊ธฐ

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

์•ˆ์—์„œ ์ฒ˜์Œ ํ•œ ๋ฒˆ ๋ทฐ์–ด๋ฅผ ๋นŒ๋“œํ•œ๋‹ค:

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 ๊ฐ€ ๋Œ๊ณ  ์žˆ์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ ์•ˆ ๋ทฐ์–ด๋„ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์‹คํŒจํ•œ๋‹ค.

์ž ๊ธˆ ํŒŒ์ผ ๋‹ค์‹œ ๋ฝ‘๊ธฐ (๋กœ์ปฌ ํ™˜๊ฒฝ์— ํŒจํ‚ค์ง€๋ฅผ ๋”ํ–ˆ์„ ๋•Œ)

~/.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