[딥러닝 프로젝트] 2. Center Point 모델 사용하여 object detection 수행하기 - 환경 설정

happy_quokka·2024년 1월 15일
0

자율주행 프로젝트

목록 보기
4/15

프로젝트 환경

  • AWS EC2 G5
    • GPU 1, 24GB memory
    • 용량 : 45GB
  • ubuntu 18.04
  • cmake 3.21.3
  • cuda 11.5.50
  • python 3.8.12
  • pytorch 1.11.0

프로젝트 폴더 구조


1. docker container 생성

docker 이미지 pull

docker pull ngc image & run container
docker pull nvcr.io/nvidia/pytorch:21.12-py3

docker container 생성

docker run -it --ipc=host --gpus all -v [host 경로]:[container 경로] -p 8888:8888 --name [container명] [image명] /bin/bash
  • -it : interactive terminal
  • --ipc=host
    • 호스트와 IPC (Inter-Process Communication) 네임스페이스를 공유하도록 설정
    • 모델을 학습시키면서 shared memory (shm) 에러가 발생하지 않도록 host의 공간을 공유하도록 설정
  • --gpus all : gpu를 사용하는 옵션, 이걸 지정해야 nvidia를 사용할 수 있다
  • -v [host 경로]:[container 경로] : host 시스템의 디렉토리를 container의 디렉토리와 공유
  • -p 8888:8888
    • host의 포트 8888을 container의 포트 8888로 매핑
    • 컨테이너에서 실행 중인 서비스가 호스트에서 접근 가능
  • 예시
    $ docker run -it  --ipc=host --gpus all -v /home/ubuntu/nahye_torch/:/workspace/center_point -v /home/ubuntu/nuScenes_data/:/workspace/data -p 8888:8888 --name "nahye" nvcr.io/nvidia/pytorch:21.12-py3 /bin/bash

2. center point 설치

# git clone https://github.com/tianweiy/CenterPoint.git
# cd CenterPoint
# pip install -r requirements.txt 

# export PYTHONPATH="${PYTHONPATH}:PATH_TO_CENTERPOINT" 
예시) export PYTHONPATH="${PYTHONPATH}:/workspace/center_point/CenterPoint"

3. nuscenes-devkit 설치

# git clone https://github.com/tianweiy/nuscenes-devkit

# export PYTHONPATH="${PYTHONPATH}:PATH_TO_NUSCENES_DEVKIT/python-sdk"
예시) export PYTHONPATH="${PYTHONPATH}:/workspace/center_point/nuscenes-devkit/python-sdk"

4. APEX

  • 이미 docker image에 포함되어 있기 때문에 설치할 필요가 없다

5. 환경변수 저장

  • bashrc에 export했던 내용들을 저장해야 docker를 종료한 후 다시 접속해도 적용이 된다
  • PATH_TO_CENTERPOINT : center point 관련 환경 변수
  • PATH_TO_NUSCENES_DEVKIT/python-sdk : nuscenes-devkit 관련 환경 변수
  • /opt/hpcx/ompi/lib : HPC 및 대규모 병렬 처리 환경에서 필요, 이 환경변수를 설정하지 않으면 추후에 train할 때 오류가 발생한다

bashrc 파일 열기

# vim ~/.bashrc

bashrc 파일 수정

  • a를 누른 후 아래 내용을 추가해준다
export PYTHONPATH="${PYTHONPATH}:PATH_TO_CENTERPOINT" 
export PYTHONPATH="${PYTHONPATH}:PATH_TO_NUSCENES_DEVKIT/python-sdk"
export LD_LIBRARY_PATH=/opt/hpcx/ompi/lib:$LD_LIBRARY_PATH


예시)
export PYTHONPATH="/workspace/center_point/CenterPoint"
export PYTHONPATH="${PYTHONPATH}:/workspace/center_point/nuscenes-devkit/python-sdk"
export LD_LIBRARY_PATH=/opt/hpcx/ompi/lib:$LD_LIBRARY_PATH

  • 입력 후 esc -> :wq를 눌러서 저장한다

5. spconv

# pip install spconv-cu114

centerpoint github에서의 spconv 설치 방법 (X)

  • 이 방법을 따라하다가 에러를 해결할 수 없어서 위의 방법으로 설치
# apt-get install libboost-all-dev
# git clone https://github.com/traveller59/spconv.git --recursive
# cd spconv && git checkout 7342772
# python setup.py bdist_wheel

does not contain a CMakeLists.txt file 에러

  • spconv의 third_party 위치에 pybind11를 clone한다
git clone https://github.com/pybind/pybind11.git

torch::jit::RegisterOperators 에러

  • 해당 파일의 torch::jit::RegisterOperatorstorch::RegisterOperators로 변경
  • 만약 권한으로 인해 파일 수정이 안된다면 chmod 666 all.cc로 권한을 설정해준다

cout 에러

  • 해당 파일에 #include <iostream>를 추가해준다
  • 만약 권한으로 인해 파일 수정이 안된다면 chmod 666 nms.h로 권한을 설정해준다

more than one operator "==",">" matches these operands 에러

  • export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__" 안된다
  • TORCH_NVCC_FLAGS="-DCUDA_NO_HALF_OPERATORS" python setup.py bdist_wheel 동시에 입력해서 실행 -> 안된다
  • 이 에러를 해결할 수 없었다

용량 에러

  • 아래와 같이 용량이 부족하다는 에러가 발생했다

  • 용량 확인
$ sudo du -h --max-depth=1
$ sudo du -h --max-depth=1 | sort -rh 
  • $ sudo docker system prune -a -f로 overlay2 삭제
  • 그 결과 용량이 줄었지만 container가 사라졌다!
  • 아마 사라진 container는 실행중인 상태가 아니여서 사라진 것 같고 실행 중인 container는 사라지지 않았다.

  • 또한 opt/conda 폴더를 제거하였다
  • conda 폴더에는 conda 뿐만아니라 다른 파일들도 있어서 제거한 후 필요하다면 conda를 따로 설치하면 된다
  • 하지만 docker를 사용하고 있기 때문에 설치가 필요없었다

0개의 댓글