본 글은 튜토리얼이 아니고 설치 후기임을 미리 알려드립니다.
YOLOv5 모델을 엔비디아의 엣지 장비인 AGX Xavier에서 돌려야 하는 일이 있었다. 엣지가 뭔데..
처음 엣지라는 용어를 듣고 뭔가 cutting-edge technology를 사용한 괴물같은 장비인줄 알고 기대했는데 어떤 망의 종단에 있는 장치라는 의미의 edge라는 것을 깨닫고 실망했다. 트리구조로 따지자면 리프노드 정도로 생각하면 되는 듯 하다.
하여튼 엔비디아에 따르면 소비전력은 최대 30W / 성능은 최대 32TOPS으로 꽤 강력한 성능을 내주는 녀석이라고 하는데, 실제로 우분투 GUI 환경만으로도 버벅거리는 장비치고는 연산자체는 빠른 편이라고 느꼈다. 이후에 Jetson Nano라는 더 작고 하찮은 장비를 만지고 있는 지금은 Xavier가 굉장한 장비라는 것을 느끼고 있다.
출처 : http://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=180916-1
Jetpack을 최신버전으로 설치하면 PyTorch, OpenCV 등 기타 패키지들을 하위호환으로 지원할 것이라는 착각에 5.1 버전을 설치했었는데, 패키지 의존성 문제로 이틀동안 고생하고 Jetpack 재설치라는 결론을 내렸다.
Jetson에서 패키지를 설치할 때의 문제점은, NVIDIA에서 제공하는 패키지만 사용해야 한다는 것이다. 일반적인 리눅스 시스템처럼 원하는 패키지를 골라서 설치할 수 없으니, 동작시키고자 하는 모델의 요구사항을 잘 살피고 해당 패키지들을 설치할 수 있는 Jetpack이라는 첫 단추부터 잘 끼워야 한다. 아니면 torch.cuda.is_available() == False
를 보게 될 것.
torch
와 torchvision
설치하는 방법이 정리되어있음torch==1.9
, 아니면 해결할 수 없는 오류가 발생Ubuntu 18.04
를 요구한다한줄 요약 : Jetpack 버전부터 잘 골라서 설치하자!
NVIDIA의 제품이어서 그런지 호환성을 위해서 코드를 추가하거나 변결할 필요가 전혀 없었다. 패키지 설치만 똑바로 하면 될 뿐..
run
함수를 만들었다VideoCapture
로 동영상을 오픈한 뒤에 매 프레임 run
을 호출하도록 하였다생각해볼만한 성능향상 방안으로는
생각나는 방안은 그렇고 요구받은 스펙 자체가 엣지장비에서 1초에 30프레임씩 처리하는 것이 아니였기 때문에 여기서 멈출 계획이다. 요런 류의 장비는 상당한 수준의 최적화가 없지 않으면 장비에서 최대 성능을 끌어내기 힘들 것 같다.