jetson nano를 edge device로 사용해 deeplearning inference모델을 돌리고
모델 재학습(또는 업그레이드)시 jetson nano에 자동 배포하는 파이프 라인을 만들어 보고 이에 관련된 내용을 정리하고자 한다.
최종 목표는 모델 개발 및 학습을 서버에서 하고 학습한 모델을 pyinstaller 또는 다른 배포 형태로 만든 후 jetson nano에 자동으로 배포해 jetson nano에 연결된 카메라를 이용해 실시간으로 inference를 돌리는 것이다.
일정은 약 한달은 잡고 있다. (대한민국 직장인 화이팅..)
오늘은 첫번째 작업으로 jetson nano 조립 및 세팅을 하고자 한다.
Jetson Nano 구성품
내가 구매한 제품은 jetson nano developer kit 이다. 자세한 스펙은 여기를 참조 하면 된다.
cpu, gpu, memory만 언급 하면
CPU | Quad-core ARM A57 @ 1.43 GHz |
GPU | 128-core Maxwell |
Memory | 4 GB 64-bit LPDDR4 25.6 GB/s |
CPU가 arm core인것에 주목하자. Intel cpu와 달리 arm core가 target일땐 종종 예상치 못한 문제와 마주칠때가 많다.
내가 받은 패키지는 아래와 같은 모양이었다.
박스를 다 열어 보면 jetson nano dev kit의 구성품은 아래와 같이 케이스, 무선 랜카드와 안테나, 전원, 리셋선, 팬, micro sd card(내가 산거엔 128gb가 패키지로 들어있었다.), 조립할때 유용한 핀셋 이 들어있다.
OS 설치
내가 가장 먼저 한것은 OS 설치 이다.
os는 구성품에 있는 SD 카드에 설치를 했고 이를 보드에 꽂아 사용 하면 된다. sd 삽입 위치는
nvidia 에서 친절하게 jetson nano 용 os를 배포 한다. 아래 링크에서 Jetson Nano Developer Kits을 선택하면 된다.
os download page: https://developer.nvidia.com/embedded/downloads
os 설치를 위한 가이드도 여기에 잘 설명 되어있으니 잘 따라 하면 된다.
나도 가이드를 따라 Etcher를 이용해 SD 카드에 os를 설치 했다.
Etcher를 실행 하면 다음과 같은 화면이 나오는데 이때 Flash from File을 선택해서 search window가 나오면 위의 os download page에서 받은 os파일을 선택한다.
이 후 target device 선택에서 os를 구울 SD 카드를 선택하고 Flash! 를 누르면 아래와 같이 os 설치가 시작된다.
설치가 다되면 Fig 7 의 붉은 색 동그라미 부분에 sd를 삽입한다.
조립
1. 우선 케이스에 메인 전원/ 리셋 버튼을 아래와 같이 연결한다. LED 선이 있는 큰 버튼이 메인 전원선이고 작은게 리셋 버튼인다.
2. 다음으로 팬을 팬을 연결한다. 팬의 전원은 아래 그림 Fig 6 처럼 랜선 연결 소켓과 방열판 사이의 4핀에 연결 하면 된다. 다음으로 구성품에 있는 나사와 너트를 이용해 방연판위에 팬을 설치 한다. 그냥 나사만 꽂으면 고정이 절대 안되고 나사 구멍이 잇는 방연판 밑에서 너트로 고정 시켜 줘야 한다. 이때 구성품의 필셋이 유용하게 씌인다. 팬을 단 모습은 Fig 7에 있다.
3. 다음으로 무선 랜카드 및 안테나는 연결 한다. 아래 그림 Fig 8이 안테나와 안테나-무선 랜카드 연결선을 보여 준다. 안테나 선을 케이스에 Fig 9처럼 연결하고 반대쪽 끝부분은 랜카드에 “똑” 소리가 나도록 확실히 연결 해 준다. 연결해야 하는 곳은 Fig 9의 붉은색 동그라이로 표시했다. 연결을 마쳤으면 보드에 해당 랜카드를 꽂아야 하는데 이 부분이 좀 불편하다.
Fig 7에 녹색으로 표시한 “고정나사”를 풀고 코어보드(방열판이 붙어 있는 보드)를 잡고 있는 해치를 풀면 Fig 10과 같은 모습이 된다. Fig 10의 표시 부분에 랜카드를 삽입후 나사로 고정하고 다시 코어 보드를 다시 연결하고 “고정나사”를 체결 한다. (생각해보면 방열판에 팬을 연결하기 전에 이 작업 부터 했으면 편했을거 같다.)
4. 전원 및 리셋 선 메인보드에 연결.
Fig 10에 노란 색으로 전원, reset, 전원 LED라고 표시해 놓은 부분을 보자. 1단계 에서 케이스에 연결한 전원 버튼과 리셋 버튼에는 각각 4개, 2개의 커넥터가 있다.
이 커넥터 들을 각각 Fig 10에 노란색으로 표시한 부분에 연결 하면 된다. 좀더 설명하자면 전원 버튼의 붉은 선을 전원이라고 표시한 부분의 PWR BTN(메인 보드에 이렇게 써있다)에 연결하고 검은색 선을 GND에 연결한다. 다음으로 전원 버튼에 있는 흰색 선과 파란선은 LED 전원선인데 흰선을 LED +, 파란 선을 LED-에 연결한다.
리셋 버튼의 붉은색 선은 SYS RST에 검은 선은 GND에 연결 하면 된다. 모두 연결한 모습이 아래 그림 Fig 11에 있다.
보드를 케이스에 고정시키고 조립을 마치면 아래와 같은 모습이 된다.
참고:
연결을 하고 부팅하면 쿨러가 움직이지 않아 고민을 했는데 부팅 후 쿨러 control configuration 을 수정해 수동으로 쿨러를 조정 할 수 있다.
하지만 테스트 cuda프로그램을 돌려본 결과 gpu사용시 코어 온도가 올라가면 자동으로 쿨러가 동작하는 걸 봐선 그냥 둬도 필요시 알아서 동작하는거 같다.
'jetson' 카테고리의 다른 글
[jetson nano] deepstream 개발 환경 세팅 및 python bindings 빌드(예제 실행 포함) (2) | 2022.01.24 |
---|---|
[jetson nano] edge device에서 FastMOT inference (0) | 2022.01.23 |
[jetson nano] pyinstaller 이용 실행파일 만들기 (0) | 2022.01.18 |
[jetson nano] opencv 4.5.1 설치 (0) | 2022.01.15 |
[Jetson nano] docker를 이용한 개발 환경 세팅 (4) | 2022.01.15 |