After I tested the Google Coral USB accelerator last week, we got our NVidia Jetson Nano as well at the end of the week. Today I tried to get work done, but with that beauty laying on my desk, I cracked after about 3 hours and started to play around with it. Here's the story.
What's in the box?
Literally in the box? Nothing but the Jetson Nano... That was a bit short, so let's talk about what a Jetson Nano is exactly :
It's basically NVidia's answer to Google releasing the Coral Edge TPU, it is aimed at running Artificial Intelligence at the Edge (EdgeAI, i've talked about it in my last blog, go read it!). But the way they achieve the computing power to deal with the rather large models is completely different, quite interesting!
Some mandatory specs: Quad-Core ARM Cortex-A57, 4GB LPDDR4 RAM, 128CUDA core Maxwell GPU
So what's the difference?
Where the Google Coral TPU is what we call an ASIC (Application Specific Integrated Circuit), is the NVidia Jetson, an ARM cpu combined with a 128 core GPU, a much more traditional and abstract setup.
ASIC, Abstract, what?
Glad you asked, I love to explain this (yes I know, stupid joke, I'll show myself out).
An Abstract setup is a setup that can do a lot of different things, it serves multiple purposes. An ASIC is the opposite, has been developed to do one thing only. But: of course, nothing is free, neither is the abstractness of the Jetson, it comes with a cost of efficiency. Presumed power consumptions are higher for the Jetson Nano as for the Google Coral, and if we compare numbers found on the interwebs, the Coral scores quite a bit better with MobileNet V2, which is kind of the net to go to at this moment for the Coral (since it's an ASIC, it only runs what is was developed for. Custom nets available through Google's compiler)
I'll maybe do another blog about the comparison between the Jetson Nano and the Coral Edge TPU, I think it's an interesting story.
So yes, it gets kind of blown away by the more power efficient Google Coral when detecting objects with MobileNet. But that's not the point. The point is that its a potent 64bit ARM, with a 128 core GPU. It runs anything you want... Anything. I've been installing and testing TensorFlow-GPU and it's just like any other desktop with an CUDA able NVIDIA GPU.
Anecdote to show how capable it is : Today I forgot my macbook, and I decided to just do my work on the Jetson Nano. And yes, the UI part of the OS seemed a bit less responsive then macOS on my old workhorse, but all the ML stuff was faster due to the CUDA acceleration.
Let's get down with testing
Road to testing
This is a topic on its own, because not everything was that straight forward. The Jetson Nano's os (JetPack, Ubuntu 18.04LTS) didn't seem to come with TensorFlow pre installed (NVIDIA please, if you're making a dev board for AI, pre install the biggest AI package out there).
So yeah, most of the required packages where easy to install with pip or apt-get, but scipy, oh scipy, it has to be build from source, and needs a Fortran compiler (yes, apparently Fortran is still a thing). The Fortran compiler also didn't come as standard. But after that was installed, I was really optimistic and eager to see it working, so I started compiling scipy again, and after 35min, no more reaction from the Jetson Nano...
I noticed the heatsink being really really hot, so I concluded the CPU probably stopped because of thermal safety, so I began my journey in search for a small fan to keep it cool while compiling. Nothing 5V could be found instantly, so I went with a 12V one, hacked it up with some 12V power supply I found laying around, and off we go again for take 3.
50 minutes later...
scipy - DONE! scikit-learn - DONE! FINALLY!
Ok, let's see, does everything work now?
YES! it finally works. It classified a Pikachu correctly while using the Tegra X1 on-board chip. Pokemon classifier created by pyimagesearch.
The NVIDIA Jetson Nano, it really looks like a fine piece of engineering, small, cool and powerful. I'm pretty sure porting some AI projects from desktops will be done easily in no time, but compared to the Google Coral, this was less easy to use. However, I think this should be compared (as the title suggested all along) to a Raspberry Pi: it is a RPi on steroids! I'm really looking forward to work with this and have a good feeling that the combination of this with the Coral USB Accelerator will be really really sexy! All round, good stuff I have in hands here, but I think not having TensorFlow pre-installed is a missed opportunity to make it a lot easier to get started with.
Let's finish things of here for now, I'll do some decent performance tests soon, where I will compare the Jetson Nano, Raspberry Pi, RPi+Coral, Jetson Nano+Coral, and a desktop i7+GTX1080, using MobileNet V2 to classify images. So, keep your eyes open for that one!