AICurious
Published on
Thursday, April 2, 2020

Thiết lập ban đầu cho Jetson Nano

1675 words9 min read
Authors
  • avatar
    Name
    Viet Anh
    Twitter

Jetson Nano là board mạch nhúng nhỏ, nhưng được thiết kế đặc biệt để triển khai các thuật toán AI trên các thiết bị có kích thước nhỏ. Bài viết này sẽ giới thiệu đến các bạn những kinh nghiệm của mình để cài đặt môi trường cho mạch này.

I. Phần cứng

Trước tiên, mình xin giới thiệu sơ qua về phần cứng Jetson Nano bằng cách so sánh với 2 mạch nhúng khá phổ biến là Raspberry Pi 3 và 4.

Jetson NanoRaspberry Pi 3Raspberry Pi 4
CPUQuad-core ARM® A57 CPUQuad-core ARM Cortex-A53, 1.2GHz.Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz
GPU128-core NVIDIA Maxwell GPUBroadcom VideoCore IV.Broadcom VideoCore VI.
RAM4 GB 64-bit LPDDR4RAM: 1GB LPDDR2 (900 MHz)RAM – 1GB, 2GB hoặc 4GB LPDDR4-2400 SDRAM (tuỳ model)

Về RAM thì Jetson Nano nhiều hơn hẳn so với Raspberry Pi 3 (4GB vs 1GB) và cân bằng với bản nhiều RAM nhất của Raspberry Pi 4. Tuy nhiên điểm mạnh hơn cả của Jetson Nano là được trang bị GPU của Nvidia - 128-core Maxwell cho phép triển khai các thuật toán deep learning thuận lợi hơn nhiều so với Raspberry Pi.

Cần phải nói thêm, Jetson Nano cũng được trang bị các chân GPIO, I2C, I2S, SPI, UART tương tự như của Raspberry Pi để chúng ta giao tiếp với các cảm biến và các thành phần khác của hệ thống nhúng.

II. Mua Jetson Nano ở đâu?

Ở Việt Nam hiện tại mình thấy có 2 chỗ bán uy tín là MLabHShop.

Mình lựa chọn đặt online ở HShop và thấy họ gửi hàng về khá nhanh. Mình mua cả combo gồm Jetson Nano, nguồn, thẻ nhớ và bộ vỏ có quạt luôn. Bạn cũng nên mua thêm jumper để thiết lập nguồn (mình sẽ nói rõ hơn về cái này trong phần Thiết lập nguồn điện). Về thẻ nhớ, các bạn cũng nên đổi sang loại thẻ 64GB, không đắt hơn nhiều nhưng thoải mái sử dụng hơn. Jetson Nano chỉ có cổng mạng RJ45, do vậy, các bạn cũng cần mua thêm 1 USB WIFI để cắm vào cổng USB hoặc 1 card WIFI để cắm vào cổng M.2 PCIe nếu muốn sử dụng WIFI.

Jetson Nano có vỏ và quạt

III. Thiết lập nguồn điện

Có nhiều cách để cấp nguồn cho Jetson Nano, như dùng nguồn Micro USB, dùng nguồn chân tròn, hay cấp nguồn qua GPIO. Cách hiệu quả và đơn giản nhất theo mình là dùng nguồn chân tròn.

1. Tại sao không nên dùng nguồn qua cổng Micro USB?

Bạn hoàn toàn có thể cấp nguồn qua cổng Micro USB cho mạch bằng một sạc điện thoại 5V-2A. Tuy nhiên bạn phải chú ý về các thành phần cắm vào mạch. Thực tế sử dụng chúng ta cần cắm bàn phím, chuột, camera, có thể kèm các linh kiện điện tử cắm vào các chân GPIO, do vậy cách cấp nguồn này có thể cấp không đủ nguồn và gây sụt áp.

Bằng cách cấp nguồn này bạn có thể sử dụng 2 chế độ nguồn:

  • 10W: sudo nvpmodel -m 0. (Chế độ này được thiết lập mặc định).
  • 5W: sudo nvpmodel -m 1. (Cho các dự án cần tiết kiệm điện).

2. Sử dụng nguồn 20W

  • Mình khuyến nghị các bạn sử dụng chế độ 20W để đảm bảo hiệu năng và cung cấp đủ điện cho các linh kiện. Để sử dụng tối đa 20W điện, các bạn cần sử dụng nguồn chân tròn, có thể tham khảo tại đây ( Shopee). Mình không quảng cáo cho bộ nguồn này, các bạn có thể tìm các bộ khác tương tự. Lưu ý là bộ nguồn này có thông số 5V - 4A.
  • Các bạn cần mua thêm jumper và nối 2 chân J48 trên board mạch, sau đó cấp nguồn bằng nguồn chân tròn. Jumper này sẽ có chức năng chọn nguồn Micro USB hoặc nguồn tròn.
J48 jumper cho Jetson Nano
  • Thiết lập Jetson Nano để sử dụng hiệu năng tốt nhất:
sudo nvpmodel -m 0

IV. Cài đặt hệ điều hành

V. Thiết lập ban đầu

1. Tiết kiệm 1GB RAM bằng cách cài desktop nhẹ hơn

Vì CPU của board mạch này tương đối yếu, và bộ nhớ cũng khá ít (4GB dùng chung cho cả CPU và GPU), mình cài đặt LXDE thay cho ubuntu-desktop để tiết kiệm RAM. Mình nhận thấy việc này khá cần thiết nếu các bạn cần RAM để chạy các phần mềm nặng, hoặc chạy các mô mình deep learning lớn. Mình chọn LXDE (desktop) và LXDM (display manager). Thực hiện như sau:

Bạn có thể kiệm tra RAM trống hiện tại bằng cách gõ sudo tegrastats.

  • Bước 1. Mở terminal gõ:
sudo apt install lxde lxdm

Các bạn có thể nhìn thấy hộp yêu cầu lựa chọn display manager gdm3 hay lxdm. Chọn lxdm nhé.

Tiếp theo bạn cần khởi động lại máy tính. Sau khi khởi động lại bạn sẽ nhìn thấy giao diện đăng nhập như hình dưới. Chọn LXDE ở phần Desktop và đăng nhập.

LXDM cho Jetson Nano
  • Bước 2. Gỡ desktop cũ (Không bắt buộc). Bạn có thể gỡ Ubuntu Desktop và gdm3 bằng các câu lệnh sau:
sudo apt remove --purge ubuntu-desktop
sudo apt remove --purge gdm3

Cuối cùng, hãy kiểm tra RAM trống bằng lệnh sudo tegrastats. Bạn sẽ thấy được mình vừa tiết kiệm khoảng 1GB RAM !!.

Giao diện desktop sau khi thực hiện xong:

LXDE cho Jetson Nano

Lưu ý: Các bạn có thể gỡ bỏ luôn display manager bằng lệnh sudo apt purge lxdm. Cách này sẽ giúp tiết kiệm RAM cho các dự án không cần giao diện. Tuy nhiên, lúc bật Jetson Nano các bạn cần đăng nhập từ giao diện dòng lệnh và gõ startx để mở giao diện đồ hoạ.

2. Sử dụng SWAP file để có thêm bộ nhớ

Nếu các bạn cần nhiều hơn 4GB bộ nhớ RAM (có thể là trong trường hợp biên dịch phần mềm nào đó), hãy làm theo hướng dẫn tại đây để sử dụng nhiều bộ nhớ hơn bằng cách tạo SWAP file. Có thể hiểu cách này sẽ cho phép các bạn sử dụng thẻ nhớ như bộ nhớ RAM.

git clone https://github.com/JetsonHacksNano/installSwapfile
cd installSwapfile

Sử dụng:

usage: installSwapFile [[[-d directory ] [-s size] -a] | [-h]]

Mặc định bạn chỉ cần chạy lệnh sau là có thêm 1 file SWAP 6GB tại /mnt/swapfile.

sudo sh ./installSwapfile

3. Tắt sleep, screen saver

Jetson Nano tiêu thụ rất ít điện. Screen saver hay chế độ sleep chỉ gây bất tiện khi sử dụng. Để tắt screen saver, bạn có thể gỡ bỏ gói xscreensaver:

sudo apt purge xscreensaver

Bạn cũng có thể tắt chế độ sleep tự động bằng lệnh sau:

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

4. Cài đặt các phần mềm cần thiết

Visual Studio Code - code editor

wget -O script.deb.sh https://packagecloud.io/install/repositories/headmelted/codebuilds/script.deb.sh && \
sudo bash script.deb.sh && \
wget -O vscodeInstall.sh https://code.headmelted.com/installers/apt.sh && \
sudo bash vscodeInstall.sh

jtop - Xem trạng thái hệ thống

Nếu các bạn không thích sử dụng tegrastats vì giao diện không mấy thân thiện, có thể chuyển qua jtop hoặc htop để theo dõi trạng thái hệ thống. Dưới đây là cách cài đặt và sử dụng jtop.

  • Cài đặt:
sudo apt-get install python3-pip
sudo -H pip install -U jetson-stats
  • Sử dụng:
sudo jtop
jtop cho Jetson Nano

Tensorflow

Để cài tensorflow cho Jetson Nano, bạn cần làm theo hướng dẫn tại đây.

  • Cài đặt các gói dependencies:
sudo apt-get update
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
sudo apt-get install python3-pip
sudo pip3 install -U pip testresources setuptools
sudo pip3 install -U numpy==1.16.1 future==0.17.1 mock==3.0.5 h5py==2.9.0 keras_preprocessing==1.0.5 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11
  • Cài đặt tensorflow cho Jetpack 4.3 (Các bạn dùng bản Jetpack khác thì thay v43 thành phiên bản của các bạn):
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v43 tensorflow
  • Để cài đặt tensorflow < 2.0, sử dụng lệnh sau:
sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v43 'tensorflow<2'
  • Để cài đặt các phiên bản khác, các bạn xem hướng dẫn cụ thể tại link này.

Done!

Trên đây là những thiết lập ban đầu của mình với Jetson Nano. Các bạn có thể bổ sung hoặc góp ý phía dưới phần comment nhé. Xin cảm ơn các bạn!

Tham khảo