개요

기존 Nivida에서는 tensorRT transfer learning toolkit이라는 이름으로 1.0, 2.0 버전을 내놓은 바 있다. 줄여서 tlt-1.0, tlt-2.0이라고 불렀었고, 작년 쯤 어느정도 체험 해보았으나 이번에 3.0 버전이 출시되어 공부 및 포스팅과 동시에 진행해보려고 한다.

하드웨어 요구사항

  • 32GB RAM
  • 32GB GPU RAM
  • 8 core CPU
  • 1 Nvidia GPU
  • 100GB of SSD space

RAM, CPU, 1 GPU, SSD 정도야 어느정도 어렵지 않지만 32GB의 GPU RAM은 현재 본인은 조건을 만족하지 못한 채 설치를 진행했다. 본인의 환경은 GEFORCE 계열에서 2022년 2월 현재 제일 최상위 스펙인 RTX 3090 24GB 제품으로 진행한다. 단일 채널 32GB를 만족하려면 V100은 되어야한다.

소프트웨어 요구사항

software version
Ubuntu 18.04 LTS 18.04
python >= 3.6.9
docker-ce > 19.03.5
docker-API 1.40
nvidia-container-toolkit 1.3.0-1
nvidia-container-runtime 3.4.0-1
nvidia-docker2 2.5.0-1
nvidia-driver > 455
python-pip > 21.06
python-dev  
nvidia-pyindex  

뭔가 복잡한것이 많다. 하지만 어렵지 않게 설치할 수 있다.

전제사항 설치

도커 설치

본인의 이전 포스팅인 우분투에 도커 설치하기를 참고하면 21년 5월 기준으로 19.03.13 버전이 설치되었기 때문에 소프트웨어가 요구하는 19.03.5 버전 이상으로 설치가 가능하다.

nvidia-docker 설치

nvidia-docker는 블로그 내 포스팅 Nivida-docker install을 참고하여 따라한다면 쉽게 설치할 수 있다.

sudo 권한 없이 docker 사용

해당 과정도 이전 포스팅 Docker permission 문제 해결 포스팅을 통해 해결 할 수 있다. 해당 문서는 도커 공식문서를 참고하였으며 해당 과정을 참고하면 sudo 권한 없이 docker 명령어를 사용하도록 만들 수 있다.

NGC 키를 받아 도커 로그인

아래 이미지와 설명을 참고하여 ngc api 를 등록하자

  • NGC 페이지에 접속하여 로그인한다. 계정이 없다면 만들어야한다.
  • 만든 계정으로 로그인하여 우측 상단 닉네임 위치에 마우스를 올려 나오는 탭에서 Setup에 들어간다. api 키 얻기
  • 좌측에 Generate API Key 탭이 있다. Get API Key를 눌러 이동하고 해당 페이지에 있는 Generate API Key를 눌러서 키를 발급받자. api 키 얻기
  • 버튼을 누르면 아래에 있는 메뉴얼 설명이 일부 내용 본인이 발급받은 키로 변경된다.
  • Docker 부분 설명에 맞게 Username과 Password를 입력한다. Username에는 따옴표를 제외하고 ‘$oauthtoken’을 그대로 입력하면 된다. Password에는 발급받은 키를 복사해 붙여넣어주면 된다.
    $ docker login nvcr.io
    
    Username: $oauthtoken
    Password: <발급 받은 키 내용>
    
  • 정상적으로 로그인이 성공했다면 해당 작업을 한 터미널에 Login Succeeded 라는 내용이 출력된다.

TAO Toolkit 설치

기존 tao toolkit 도큐먼트에서는 virtualevn 툴을 이용한 파이썬 가상환경을 설치하고 그 위에 툴킷을 설치한다. 하지만 본인은 아나콘다라는 가상환경 툴을 사용하고 있다. 기존 도큐먼트의 요구 기능에서 적절히 전부 대체 가능하다.

아나콘다 혹은 미니콘다의 설치는 공식 홈페이지를 참고하도록 하자.

아나콘다 혹은 미니콘다에서 python 3.6.9 환경 만들기

아래의 커맨드를 입력하여 python-3.6.9 버전의 환경을 구축한다. <환경명>은 본인이 임의로 만들면 된다.

$ conda create -n <환경명> python==3.6.9

환경 활성화

$ conda activate <환경명>

Tao Launcher 설치

$ pip install nvidia-pyindex
$ pip install nvidia-tao

설치 확인

tao --help 명령어를 통해 설치가 잘 되었는지 또는 가능한 옵션 커맨드들을 확인할 수 있다. 다음과 같이 출력된다.

usage: tao [-h]
           {list,stop,info,action_recognition,augment,bpnet,classification,converter,detectnet_v2,dssd,efficientdet,emotionnet,faster_rcnn,fpenet,gazenet,gesturenet,heartratenet,intent_slot_classification,lprnet,mask_rcnn,multitask_classification,n_gram,punctuation_and_capitalization,question_answering,retinanet,spectro_gen,speech_to_text,speech_to_text_citrinet,ssd,text_classification,token_classification,unet,vocoder,yolo_v3,yolo_v4,yolo_v4_tiny}
           ...

Launcher for TAO Toolkit.

optional arguments:
  -h, --help            show this help message and exit

tasks:
  {list,stop,info,action_recognition,augment,bpnet,classification,converter,detectnet_v2,dssd,efficientdet,emotionnet,faster_rcnn,fpenet,gazenet,gesturenet,heartratenet,intent_slot_classification,lprnet,mask_rcnn,multitask_classification,n_gram,punctuation_and_capitalization,question_answering,retinanet,spectro_gen,speech_to_text,speech_to_text_citrinet,ssd,text_classification,token_classification,unet,vocoder,yolo_v3,yolo_v4,yolo_v4_tiny}

주요 명령어

가장 기본적인 키워드 3가지 list, stop, info 명령어들을 숙지해두자 쉘에서 다음과 같이 tao listtao info를 통해 현재 tao toolkit의 정보를 확인하고 tao stop을 통해서 돌아가는 컨테이너를 제어한다.

$ tao list

==============  ==================  =========
container_id    container_status    command
==============  ==================  =========
==============  ==================  =========
$ tao info

Configuration of the TAO Toolkit Instance
dockers: ['nvidia/tao/tao-toolkit-tf', 'nvidia/tao/tao-toolkit-pyt', 'nvidia/tao/tao-toolkit-lm']
format_version: 2.0
toolkit_version: 3.21.11
published_date: 11/08/2021
$ tao stop --help

usage: tao stop [-h] [--container_id CONTAINER_ID [CONTAINER_ID ...]] [--all]
                {list,stop,info,action_recognition,augment,bpnet,classification,converter,detectnet_v2,dssd,efficientdet,emotionnet,faster_rcnn,fpenet,gazenet,gesturenet,heartratenet,intent_slot_classification,lprnet,mask_rcnn,multitask_classification,n_gram,punctuation_and_capitalization,question_answering,retinanet,spectro_gen,speech_to_text,speech_to_text_citrinet,ssd,text_classification,token_classification,unet,vocoder,yolo_v3,yolo_v4,yolo_v4_tiny}
                ...

optional arguments:
  -h, --help            show this help message and exit
  --container_id CONTAINER_ID [CONTAINER_ID ...]
                        Ids of the containers to be stopped.
  --all                 Kill all running TAO Toolkit containers.

tasks:
  {list,stop,info,action_recognition,augment,bpnet,classification,converter,detectnet_v2,dssd,efficientdet,emotionnet,faster_rcnn,fpenet,gazenet,gesturenet,heartratenet,intent_slot_classification,lprnet,mask_rcnn,multitask_classification,n_gram,punctuation_and_capitalization,question_answering,retinanet,spectro_gen,speech_to_text,speech_to_text_citrinet,ssd,text_classification,token_classification,unet,vocoder,yolo_v3,yolo_v4,yolo_v4_tiny}

참고: tao toolkit 공식 도큐먼트

댓글남기기