도커(Docker)는 현대 소프트웨어 개발 환경에서 매우 중요한 도구로 자리 잡고 있습니다. 특히 AI 및 머신러닝 프로젝트를 진행할 때, 도커를 활용하면 개발 환경을 보다 쉽게 관리하고 배포할 수 있습니다.
이번 포스팅에서는 도커를 활용하여 3D Gaussian Splatting(3DGS) 코드를 빌드하는 방법에 대해 자세히 알아보겠습니다.
3D Gaussian Splatting 소개
3D Gaussian Splatting(3DGS)은 SIGGRAPH 2023에 게재된 논문으로, 실시간으로 고품질의 3D 씬을 렌더링하는 방법을 제시하고 있습니다. 이 기술은 여러 각도에서 촬영한 2D 이미지를 기반으로 새로운 뷰를 합성하는 “Novel-View Synthesis” 문제를 해결하기 위해 개발되었습니다.
NeRF(Neural Radiance Fields)와 유사한 목적을 가지고 있지만, 3DGS는 3D 공간에 많은 3D Gaussian 분포를 배치하여 씬을 구성하는 방식으로 차별화됩니다. 3DGS는 기존의 NeRF 기법들보다 높은 성능과 빠른 렌더링 속도를 자랑합니다.
그러나 이를 사용하기 위해서는 특정한 소프트웨어와 하드웨어 환경이 필요합니다. 공식 깃허브에서 제공하는 자료는 주로 윈도우 환경을 기준으로 되어 있어, 리눅스나 우분투와 같은 다른 운영체제에서의 설치 방법은 다소 불확실할 수 있습니다.
요소 | 설명 |
---|---|
기술명 | 3D Gaussian Splatting |
발표회 | SIGGRAPH 2023 |
주요 특징 | 실시간 고품질 렌더링 |
차별점 | 3D Gaussian 분포 활용 |
관련 기술 | NeRF |
도커의 장점
도커는 개발 환경을 격리된 컨테이너에서 관리할 수 있게 해 줍니다. 이는 버전 충돌이나 소프트웨어 호환성 문제를 크게 줄여줍니다.
도커를 사용하면 다음과 같은 장점이 있습니다.
- 이식성: 도커 이미지는 동일한 환경에서 실행될 수 있도록 패키징되기 때문에, 다양한 플랫폼에서도 일관된 결과를 얻을 수 있습니다.
- 격리성: 각 컨테이너는 독립적으로 실행되므로, 서로 다른 프로젝트나 버전 간의 충돌을 방지할 수 있습니다.
- 효율성: 도커는 가상 머신보다 경량이므로, 리소스를 보다 적게 소모하면서 더 많은 컨테이너를 실행할 수 있습니다.
- 버전 관리: 도커 이미지는 Git과 유사한 방식으로 버전 관리가 가능하므로, 이전 버전으로 쉽게 롤백할 수 있습니다.
이러한 장점들 덕분에 도커는 많은 개발자들과 데이터 과학자들에게 필수적인 도구로 자리 잡았습니다. 특히 AI 및 머신러닝 프로젝트에서는 다양한 라이브러리와 패키지의 버전을 관리하기가 매우 까다로운데, 도커를 활용하면 이러한 문제를 효과적으로 해결할 수 있습니다.
장점 | 설명 |
---|---|
이식성 | 다양한 플랫폼에서 실행 가능 |
격리성 | 프로젝트 간 충돌 방지 |
효율성 | 리소스 소모 최소화 |
버전 관리 | 이전 버전으로 쉽게 롤백 가능 |
도커 환경 설정하기
이제 도커를 사용하여 3DGS 코드를 빌드하는 과정에 대해 알아보겠습니다. 아래 단계들은 도커 환경을 설정하고, 3DGS 코드를 빌드하는 데 필요한 과정을 담고 있습니다.
1단계: 도커 설치하기
먼저, 도커를 설치해야 합니다. 도커는 다양한 운영체제를 지원하며, 각 운영체제에 맞는 설치 방법이 있습니다.
예를 들어, Ubuntu에서는 다음과 같은 명령어로 도커를 설치할 수 있습니다.
bash
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
도커가 설치되면, docker --version
명령어로 설치가 완료되었는지 확인할 수 있습니다.
단계 | 내용 |
---|---|
도커 설치 | sudo apt-get install docker-ce |
설치 확인 | docker --version |
2단계: 도커 이미지 가져오기
다음으로 필요한 도커 이미지를 가져옵니다. Nvidia에서 제공하는 이미지 중 하나를 사용하여 Python, PyTorch, CUDA 등의 기본 환경을 설정합니다.
예를 들어, 다음 명령어를 사용하여 이미지를 가져올 수 있습니다.
bash
docker pull nvcr.io/nvidia/pytorch:22.09-py3
이 명령어를 입력하면, 원하는 도커 이미지가 다운로드 됩니다. 다운로드가 완료되면, docker images
명령어로 확인할 수 있습니다.
단계 | 내용 |
---|---|
이미지 가져오기 | docker pull nvcr.io/nvidia/pytorch |
확인 | docker images |
3단계: GitHub 리포지토리 클론하기
3DGS 코드를 빌드하기 위해, 관련 소스 코드를 GitHub에서 클론합니다. 다음 명령어를 사용하여 클론할 수 있습니다.
bash
git clone https://github.com/jhcha08/3DGS-Docker
이제 클론한 폴더로 이동합니다.
단계 | 내용 |
---|---|
리포지토리 클론 | git clone <repository_url> |
폴더 이동 | cd 3DGS-Docker |
도커파일 작성하기
도커파일(Dockerfile)은 특정 이미지를 기반으로 사용자 정의 이미지를 생성하는 데 필요한 명령어를 담고 있습니다. 여기서는 3DGS를 구동시키기 위해 필요한 패키지를 설치하는 명령어를 추가해야 합니다.
“`Dockerfile
FROM nvcr.io/nvidia/pytorch:22.09-py3
WORKDIR /workdir
COPY requirements.txt .
RUN pip install -r requirements.txt
“`
이제 도커파일을 작성했으니, 이 파일을 기반으로 사용자 정의 이미지를 빌드할 수 있습니다.
단계 | 내용 |
---|---|
도커파일 생성 | Dockerfile 작성 |
종속성 파일 복사 | COPY requirements.txt . |
패키지 설치 | RUN pip install -r requirements.txt |
도커 이미지 빌드하기
이제 작성한 도커파일을 기반으로 이미지를 빌드할 준비가 되었습니다. 다음 명령어를 사용하여 이미지를 빌드합니다.
bash
docker build -t 3dgs_docker .
이 명령어를 입력하면, 3DGS를 위한 사용자 정의 이미지가 생성됩니다. 빌드가 완료되면 이미지 목록에서 확인할 수 있습니다.
단계 | 내용 |
---|---|
이미지 빌드 | docker build -t 3dgs_docker . |
확인 | docker images |
도커 컨테이너 실행하기
빌드한 이미지를 기반으로 컨테이너를 실행합니다. 다음 명령어를 사용하여 컨테이너를 실행할 수 있습니다.
여기서는 현재 디렉토리를 컨테이너의 /workdir
로 마운트합니다.
bash
docker run --gpus all -v $(pwd):/workdir --name 3dgs_container -it 3dgs_docker
이 명령어를 실행하면, 3DGS 코드가 실행될 컨테이너가 생성됩니다. -it
플래그는 대화형 모드로 실행되도록 설정합니다.
단계 | 내용 |
---|---|
컨테이너 실행 | docker run 명령어 사용 |
GPU 사용 설정 | --gpus all |
마운트 설정 | -v $(pwd):/workdir |
코드 실행 및 훈련하기
컨테이너에 접속한 후, 필요한 서브모듈을 설치하고 모델 훈련을 진행할 수 있습니다. 아래 명령어로 서브모듈을 설치합니다.
bash
pip install -r requirements.txt
이후, 훈련을 위한 명령어를 실행하여 3DGS 모델을 학습시킵니다. 예를 들어, 다음과 같은 명령어로 훈련을 시작할 수 있습니다.
bash
python train.py --config config.yaml
훈련이 완료되면, 렌더링을 수행하여 결과를 확인할 수 있습니다.
단계 | 내용 |
---|---|
서브모듈 설치 | pip install -r requirements.txt |
모델 훈련 | python train.py --config config.yaml |
결론
이번 포스팅에서는 도커를 활용하여 3D Gaussian Splatting 코드를 빌드하는 방법에 대해 알아보았습니다. 도커를 사용하면 복잡한 환경 설정 과정을 간소화할 수 있으며, 다양한 플랫폼에서 일관된 결과를 얻을 수 있습니다.
도커를 활용하여 3DGS 모델을 훈련하고 렌더링하는 과정은 여러 번의 시행착오를 통해 경험할 수 있었습니다. 도커의 장점을 잘 활용한다면, AI 및 머신러닝 프로젝트에서 더 효율적으로 작업할 수 있을 것입니다.
3DGS뿐만 아니라 다양한 오픈 소스 프로젝트에서도 도커를 활용할 수 있는 기회를 찾아보시기 바랍니다. 이 과정이 여러분의 개발 여정에 도움이 되기를 바랍니다.