먼 옛날에 젯슨 나노(Jetson nano)를 하나 얻어와 오랫동안 방치해 둔 것이 생각 나 간단한 사용 후기를 남겨봅니다.
젯슨 나노는 클리앙 여러분이 1+개 가지고 계시는 라즈베리파이와 비슷한 개발보드입니다.
차이점으로는 엔비디아사의 CUDA 지원 컴퓨팅 프로세서(NVIDIA Maxwell 기반 128-core)가 arm프로세서(Cortex-A57)와 함께 장착되어있어 이를 이용한 수치해석, 선형대수연산이 가능합니다.
미리 jetpack이 설치된 ubuntu 이미지를 엔비디아 개발자 홈페이지에서 배포하여 이를 설치 후 간단한 추가 설정을 하여 바로 사용가능한 점도 라즈베리파이와 비슷합니다.
본론으로 들어가서 최근에는 수치해석, 선형대수 연산을 tensorflow나 pytorch와 같은 파이썬(python) 프레임워크 위에서 진행하는 경우가 많습니다.
이런 프레임워크 사용 시 도커를 사용하거나 각 프레임워크를 하나의 파이썬 환경에 넣는것도 좋지만 저는 취향껏 arm64용 miniforge를 사용했습니다.
miniforge를 설치하고나면 conda를 사용 할 수 있습니다.
엔비디아에서 제공하는 젯슨 나노용 프레임워크는 파이썬 3.6버젼용이므로 간단하게 다음 명령으로 환경을 두개 만들어 사용하였습니다.
이제 젯슨 나노용 프레임워크를 받으면 됩니다.
ssh를 통해 작업하실 경우 시간이 오래 걸리기에 해당 페이지의 안내에 따라 진행하기 전에 screen을 사용한 터미널에서 작업하시는걸 추천드립니다.
차 한잔 마시고 돌아오면 위와같은 기다란 알림이 떠있습니다. 테스트해봅니다.
기본 데이터 형식은 float(4byte)입니다. 대략 4기가 할당을 시도해봅니다.
실패했습니다.
에러 메시지를 보니 844795904 바이트가 최대인것 같습니다.
804메가를 할당해봅니다.
성공했습니다.
torch도 비슷하게 테스트 해봅니다.
성공했습니다.
그렇다면 바로 4기가를 할당해봅니다.
실패했습니다.
에러 메시지로 보아 torch에서 파악한 실제 메모리는 1기가가 약간 넘는 크기인 것으로 보입니다.
예상대로 1기가 할당은 성공합니다.
tensorflow는 기본값으로 사용할 최대 메모리를 할당 후 해당 크기 안에서 메모리를 사용하지만 torch는 실제 메모리 사용시 할당하는 방식입니다. 그래서 약 10%정도의 용량차이가 보여지는것 같습니다.
프로세서 성능상 어느 프레임워크를 사용하더라도 메모리를 다 채우는 딥 러닝 모델의 경우 성능이 만족스럽지는 않겠지만 엔비디아가 보여준 성능표대로의 성능은 나올 것 같습니다.
여담으로 젯슨 나노에서 tensorflow를 빌드 할 수 있습니다.
파이썬 버전 3.9를 사용하고싶어 시도하였습니다만, 45시간 정도가 걸려 포기하였습니다.
제 무질서하고 짧은 젯슨 나노 사용기는 여기까지입니다.
감사합니다.
저전력으로 정말 뛰어난 성능을 보여줬었던 기억이...
제 기억엔 가격 오르기 전에도 젯슨 나노가 라즈베리 파이보다 훨씬 비쌌던 것 같습니다.
라즈4와는 비교가 실례일 정도로 미디어 성능이 월등하네요
훨씬 잘 활용할 수도 있어보입니다 신품은 이것도 아예 매물이 없고 (해외 2G가격 59$네요)
중고 잘 매복해 봐야겠네요
그리고 메모리할당은 걍 스왑으로 늘려서 써야합니다. 그래서 8기가짜리 모델 올려도 쓸만해요. 속도도 예상만큼 나쁘진 않았습니다. ㅎㅎ
tensorflow가 v2 api로 넘어가면서 좋은것들을 많이 집어넣었는지 소스에서 빌드하는 경우 메모리를 한 8~12기가 사용하더군요..
3.0 지원 usb에 swap 크게 잡아서 다시 시도해볼 생각입니다.