- NVIDIA의 딥 러닝 가속기 (NVDLA)는 컨볼 루션 신경망 (CNN)에서 추론 작업을 가속화하는 하드웨어 설계입니다. 

NVIDIA Open NVDLA 라이센스에 따라 사용할 수있는 오픈 소스 프로젝트 입니다.

CNN에 대한 대부분의 계산은 동일한 수학적 연산을 사용하며 컨볼 루션, 활성화, 풀링, 정규화 및 완전 연결의 5 가지 기본 계층 유형으로 그룹화 할 수 있습니다. 이러한 작업에는 매우 예측 가능한 메모리 액세스 패턴이 있으므로 이러한 패턴을 활용하는 애플리케이션 별 하드웨어를 사용하면 속도를 크게 높일 수 있습니다.

NVDLA 하드웨어는 간단하고 유연하며 강력한 추론 가속화 솔루션을 제공합니다. 

 

 > 구성품

 

  - Jetson Xavier에 구현 된 코어는 NVDLA의 "헤드리스"구현입니다. 즉, NVDLA 하드웨어의 단위 별 관리가 메인 시스템 프로세서에서 발생합니다. 각 NVDLA 코어에는 다음 구성 요소가 있습니다.

 

  1. Convolution Core – 회선 계층에 최적화 된 고성능 엔진. 두 가지 데이터 세트, 즉 일정한 오프라인 학습 가중치와 입력 특성 데이터에서 작동합니다. 고효율로 다양한 크기의 컨볼 루션을 하드웨어에 매핑 할 수 있습니다.
  2. 단일 데이터 포인트 프로세서 – 활성화 기능을위한 단일 포인트 조회 엔진. SDP (Single Data Point Processor)를 사용하면 개별 데이터 포인트에 선형 및 비선형 함수를 모두 적용 할 수 있습니다. SDP는 룩업 테이블을 사용하여 시그 모이 드 또는 쌍곡선 탄젠트와 같은 비선형 함수와 바이어스 및 스케일링 작업이있는 일반적인 선형 함수를 구현합니다.
  3. Planar Data Processor – 풀링을위한 평면 평균 엔진. PDP (Planar Data Processor)는 CNN 응용 프로그램에서 일반적인 특정 공간 작업을 지원합니다. 다양한 풀 그룹 크기를 지원하도록 런타임에 구성 할 수 있으며 최대 풀링, 최소 풀링 및 평균 풀링의 세 가지 풀링 기능을 지원합니다.
  4. 교차 채널 데이터 프로세서 – 고급 정규화 기능을위한 다중 채널 평균화 엔진. 교차 채널 데이터 프로세서 (CDP)는 공간 차원이 아닌 채널 차원에서 작동하는 특수 정규화 기능인 로컬 응답 정규화 기능을 적용하기 위해 구축 된 특수 장치입니다.
  5. 데이터 재구성 엔진 – 텐서 재구성 및 복사 작업을위한 메모리 대 메모리 변환 가속화. 데이터 모양 변경 엔진은 데이터 형식 변환 (예 : 분할 또는 슬라이스, 병합, 축소, 모양 변경)을 수행합니다.
  6. 브리지 DMA – 연결되지 않은 두 메모리 시스템간에 데이터를 이동하는 가속 경로입니다. 브리지 DMA (BDMA) 모듈은 시스템 DRAM과 전용 메모리 인터페이스간에 데이터를 이동하기위한 데이터 복사 엔진을 제공합니다.

 

> 소프트웨어 디자인

  - NVDLA 소프트웨어 디자인은 컴파일 도구 (모델 변환)와 런타임 환경 (NVDLA에서 네트워크를로드하고 실행하는 런타임 소프트웨어)의 두 그룹으로 그룹화됩니다.

파이썬 필요 패키지설치

  - Dependencies 설치

    sudo apt-get install cmake
    sudo apt-get install python3-pip
    sudo pip3 install wget
    sudo pip3 install Cython

  - PyCUDA 설치
    sudo apt-get install libboost-all-dev
    sudo apt-get install python3-numpy
    sudo apt-get install python3-matplotlib
    sudo apt-get install build-essential python-dev python-setuptools libboost-python-dev libboost-thread-dev

 

    해당 파일을 다운로드 합니다. 

    https://pypi.org/project/pycuda/#files

    cd Downloads
    tar xzvf pycuda-2019.1.2.tar.gz
    cd pycuda-2019.1.2
    ./configure.py
    make -j4
    sudo python3 setup.py install
    sudo pip3 install .

 - LLVM 설치
    wget [http://releases.llvm.org/7.0.1/llvm-7.0.1.src.tar.xz](http://releases.llvm.org/7.0.1/llvm-7.0.1.src.tar.xz)
    tar -xvf llvm-7.0.1.src.tar.xz
    cd llvm-7.0.1.src
    mkdir llvm_build_dir
    cd llvm_build_dir/
    cmake ../ -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="ARM;X86;AArch64"
    make -j4
    sudo make install
    cd bin/
    echo "export LLVM_CONFIG=\""`pwd`"/llvm-config\"" >> ~/.bashrc
    echo "alias llvm='"`pwd`"/llvm-lit'" >> ~/.bashrc
    source ~/.bashrc
    sudo pip3 install llvmlite

 - Numba 설치
    sudo pip3 install numba

 - Keras 설치
    sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev
    sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev gfortran
    sudo pip3 install scipy
    sudo pip3 install keras

 - Tensorflow 설치
    udo pip3 install --pre --extra-index-url [https://developer.download.nvidia.com/compute/redist/jp/v411](https://developer.download.nvidia.com/compute/redist/jp/v411) tensorflow-gpu


    만약 해당 커맨드로 설치가 되지 않았다면, wheel파일을 직접 다운로드 받은뒤 다음 명령어를 입력해서 설치
    wheel파일 다운로드 주소 : https://developer.download.nvidia.com/compute/redist/jp/v43


    sudo pip3 install tensorflow_gpu-1.15.0+nv19.12-cp36-cp36m-linux_aarch64.whl

 


 > Ros melodic 설치


  - Xavier 전용 ROS파일을 github에서 클론해서 다운로드를 한 뒤 해당 폴더로 이동
    git clone https://github.com/jetsonhacks/installROSXavier.git

    cd installROSXavier
    ./installROS.sh -p ros-melodic-desktop
 
  - ROS 사용을 위한 catkin workspace를 setup
    ./setupCatkinWorkspace.sh
 
  - 설치 확인을 위해 터미널에 ros실행
    roscore

    rostopic list
 
  - python에서 ros를 사용하려면 bashrc.에 해당 커맨드를 등록
    source /opt/ros/melodic/setup.bash
    source ~/catkin_ws/devel/setup.bash
 
  - 등록 후 ros-pkg를 설치
    sudo apt-get install python3-rospkg
 
  - 터미널에서 ros가 잘 import되는지 확인
    python3
    import rospy
 
  - 세팅 완료

 

 > 추가사항

  - 딥러닝을 하기위해 jetson의 상태를 알 수 있게 해주는 Jetson stats tool을 설치
    sudo -H pip install -U jetson-stats
 
    실행
    sudo jtop

'SW > ROS' 카테고리의 다른 글

ROS의 명령어  (2) 2023.11.02
ROS의 콘셉트  (0) 2023.11.02
ROS의 메시지 통신  (0) 2023.11.02
ROS 의 개념  (2) 2023.11.02
ROS 개발환경 구축하기  (3) 2023.11.02

+ Recent posts