Nvidia Jetson AGX Orin 初体验
一、開箱
Nvidia Jetson AGX Orin是今年Nvidia推出的唯一的開發(fā)套件,相比Jetson Nano 472GFLOP算力、Jetson Xaiver 32TOPS(INT8)算力,它的算力達(dá)到了200 TOPS左右。也就是說,幾乎相當(dāng)于目前主流設(shè)備的8-10倍的算力。這就讓張小白有點動心了。于是,張小白天天啃包子省吃儉用,攢下了一臺設(shè)備的價錢,并火速將設(shè)備拿到了手。
說實話,拿到這樣的箱子著實有點害怕,畢竟里面的東西不便宜。然而,打開包裝,并進行消毒之后:
這么方方正正的盒子,確實讓人有點放心了。
我們四周看一看:
側(cè)面和底面都有封條。
有一側(cè)寫著設(shè)備的各種指標(biāo)。
于是張小白用裁紙刀開箱:
映入眼簾的是個像音響一樣的東西。
拿出來一看:
銀灰色的機身,里面的大風(fēng)扇隱約可見。
這是右面——正確的一面(Right View),對應(yīng)說明書:
分別是 電源鍵(Power),強制恢復(fù)鍵(Force Recovery)和重置鍵(Reset)。還有個TF卡的插槽。
右面旁邊的一面叫背面(Back View):
對比說明書:
分別是:
(1)USB Type-C,這個接口是接電源的地方。
(2)DC Power是很奇怪的接口,好像目前并沒有接頭能插進去。
(3)有線網(wǎng)口
(4)上下錯落著2個USB 3.2的接口,張小白打算用來接鍵盤和鼠標(biāo)
(5)DisplayPort,是目前唯一的顯示器接口
(6)Micro USB的接口,大概是可以用作串口吧。
背面旁邊的一面看起啥也沒有:
對比說明書:
你可以把它輕輕掀開:
有一個PCIe的接口,殼子上還有2根WiFI天線,說明它是自帶無線網(wǎng)卡的。
再轉(zhuǎn)過去,就到了正面(Front View):
左邊是個Type-C接口,中間是40Pin接口,右邊是兩個USB3.2的接口。
我們再悄悄看看底面:
有個接M2的硬盤接口,有2個攝像頭的接口。右下角應(yīng)該是前面看到的TF卡槽。這塊板子好像還是Made in China。
我們把裝Orin設(shè)備的盒子拿出去后:
下面還有個附件的盒子:
打開看看:
上面是說明書(剛才拍過了)和電源適配器,下面是幾股線纜:
有USB轉(zhuǎn)Type=C的線,估計可以用接電腦。
下面是三根電源線:
根據(jù)電源插頭的不同,估計是美標(biāo),英標(biāo)插頭之類的。反正有中國的插頭就行:
AC電源適配器,也是中國制造。
電源適配器的另一頭是Type-C插頭,所以應(yīng)該是接上前面Right View左上角那個Type-C的接口。
DisplayPort的接口有點奇怪:
好在張小白的小米曲面屏顯示器有這個接口,張小白也有這跟DP線:
開箱到此結(jié)束。
二、開機
張小白打開說明書提供的鏈接:
只好求助于Nvidia的專家,獲得了這個地址:?https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit
那就根據(jù)這個鏈接來Getting Started吧!
先把各種線接好:
(1)DP接口連顯示器;
(2)電源線連DC口上面的Type-C口;
(3)機械鍵盤和鼠標(biāo)連接2個USB 3.2的接口;
(4)有線網(wǎng)口暫時不接,因為有無線網(wǎng)卡。
開機,顯示器切換到DP1:
不一會兒,進入Ubuntu的系統(tǒng)設(shè)置界面:
靠近點看:
accept后點擊continue:
選擇語言——中文(簡體),繼續(xù):
連接無線網(wǎng)絡(luò),選擇華為路由器的網(wǎng)絡(luò),點擊 連接:
輸入密碼,connect:
選擇時區(qū)——上海,繼續(xù):
輸入計算機名稱,登陸用戶名和密碼等信息,繼續(xù):
要求輸入分區(qū)大小,看了下提示,輸入0,繼續(xù):
設(shè)置Nvpmodel的Model,先選缺省的,繼續(xù):
問你要不要安裝個瀏覽器,那就裝吧:
耐心等待安裝完畢,點擊Close。
系統(tǒng)會繼續(xù)進行安裝:
直到進入登陸界面:
輸入前面設(shè)置的密碼后進入Ubuntu的桌面:
在彈出的頁面中點擊Skip:
選擇No,點擊Next:
Next:
Done。
系統(tǒng)問要不要升級包:
先選擇Remind Me Later吧。
根據(jù)前面鏈接中的指引,打開終端:
sudo apt dist-upgrade
按Y繼續(xù):
耐心等待upgrade完畢:
查看下內(nèi)存和存儲的情況:
內(nèi)存:
29G左右,估計是32G的內(nèi)存。還有交換分區(qū)14G左右,估計是16G。。這個數(shù)字硬件廠商各有統(tǒng)計尺度,此處先不深究。
32G內(nèi)存國外售價是899美元。國內(nèi)的價格暫時不談。。說多了都是淚。
存儲:
大概是64G的存儲,這跟標(biāo)稱的eMMC存儲大小基本一致。
我們開始裝Jetpack。據(jù)官方要求,Orin設(shè)備需要安裝Jetpack 5.0。
sudo apt install nvidia-jetpack
咦?
看了下 /etc/apt/sources.list.d/nvidia-l4t-apt-source.list 文件:
這個源居然找不掉Jetpack包。。。
張小白又匆匆開始搜索,終于在Nvidia論壇發(fā)現(xiàn)了一個答案:
也就是需要將 r34.0改為r34.1才行,就如法炮制:
重新執(zhí)行 sudo apt install nvidia-jetpack
按Y繼續(xù):
好像報了個錯。應(yīng)該是服務(wù)器不大好連。確實nvidia的服務(wù)器不大容易連,那就反復(fù)多試幾次:
耐心等待結(jié)束:
再試一次:
嗯。不用試了。應(yīng)該是安裝完畢了。
根據(jù)官方說明,Jetpack 5.0包含以下組件:
它們的安裝位置如下:
現(xiàn)在檢查下目前安裝的軟件版本:
gcc和g++:9.4.0
CUDA的nvcc編譯器:11.4
編輯~/.bashrc
source后生效:
這樣就可以在任何地方編譯CUDA的代碼了。
opencv:4.5
Python:3.8.10,沒有裝PIP:
那就裝一下吧。
先安裝curl:
再用curl下載get-pip.py:
然后安裝pip:
好了,Orin基礎(chǔ)環(huán)境的安裝就先介紹到這里吧。
三、開練
基礎(chǔ)軟件安裝完畢后,當(dāng)然是對這個設(shè)備做一些簡單的深度學(xué)習(xí)嘗試了。張小白曾經(jīng)寫過一篇:
張小白:Nvidia Jetson Nano B01初體驗1 贊同 · 0 評論文章正在上傳…重新上傳取消
現(xiàn)在就依葫蘆畫瓢,看看Orin的表現(xiàn)如何:
LeNet是典型的手寫數(shù)字識別網(wǎng)絡(luò),常用于深度學(xué)習(xí)初學(xué)者的入門,先用它來試一下:
1、cudnn_sample
cudnn_sample 內(nèi)置了一個LeNet網(wǎng)絡(luò)的測試,我們來試一下:
先更新下源:
cd /usr/src/cudnn_samples_v8/mnistCUDNN/
開始編譯:
sudo make
發(fā)現(xiàn)需要安裝一些系統(tǒng)依賴包:sudo apt-get install libfreeimage3 libfreeimage-dev
安裝完畢后重新編譯:
進行測試:
從上面的例子可以看出,相關(guān)的圖片識別成為1、3、5,識別成功。
2、使用TensorFlow+Keras實現(xiàn)LeNet訓(xùn)練
安裝系統(tǒng)依賴包:
sudo apt-get install python3-numpy
sudo apt-get install python3-scipy
sudo apt-get install python3-pandas
sudo apt-get install python3-matplotlib
sudo apt-get install python3-sklearn
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
安裝PIP依賴包:
sudo pip3 install -U --no-deps numpy==1.19.4 future==0.18.2 mock==3.0.5 keras_preprocessing==1.1.2 keras_applications==1.0.8 gast==0.4.0 protobuf pybind11 cython pkgconfig -i?https://pypi.tuna.tsinghua.edu.cn/simple
sudo env H5PY_SETUP_REQUIRES=0 pip3 install -U h5py==3.1.0
查看下JetPack 5.0 TensorFlow安裝盤的地址:
安裝TensorFlow1.15:
sudo pip3 install --pre --extra-index-url?https://developer.download.nvidia.com/compute/redist/jp/v50?'tensorflow<2'
檢查TensorFlow是否成功安裝:
安裝Keras并檢查是否成功安裝:
sudo pip3 install keras
準(zhǔn)備 keras_lenet.py這個訓(xùn)練LeNet網(wǎng)絡(luò)的Python代碼:(代碼來源:https://blog.csdn.net/mr_muli/article/details/80992600?作者:木里先森)
# -*- coding: utf-8 -*- """ Created on Tue Jul 10 20:04:03 2018@author: muli """import tensorflow.keras from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPooling2D from tensorflow.keras import backend as Knum_classes = 10 img_rows, img_cols = 28, 28# 通過Keras封裝好的API加載MNIST數(shù)據(jù)。其中trainX就是一個60000 * 28 * 28的數(shù)組, # trainY是每一張圖片對應(yīng)的數(shù)字。 (trainX, trainY), (testX, testY) = mnist.load_data()# 根據(jù)對圖像編碼的格式要求來設(shè)置輸入層的格式。 if K.image_data_format() == 'channels_first':trainX = trainX.reshape(trainX.shape[0], 1, img_rows, img_cols)testX = testX.reshape(testX.shape[0], 1, img_rows, img_cols)input_shape = (1, img_rows, img_cols) else:trainX = trainX.reshape(trainX.shape[0], img_rows, img_cols, 1)testX = testX.reshape(testX.shape[0], img_rows, img_cols, 1)input_shape = (img_rows, img_cols, 1)trainX = trainX.astype('float32') testX = testX.astype('float32') trainX /= 255.0 testX /= 255.0# 將標(biāo)準(zhǔn)答案轉(zhuǎn)化為需要的格式(one-hot編碼)。 trainY = tensorflow.keras.utils.to_categorical(trainY, num_classes) testY = tensorflow.keras.utils.to_categorical(testY, num_classes) # 2. 通過Keras的API定義卷積神經(jīng)網(wǎng)絡(luò) # 使用Keras API定義模型。 model = Sequential() model.add(Conv2D(32, kernel_size=(5, 5), activation='relu', input_shape=input_shape)) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(64, (5, 5), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Flatten()) model.add(Dense(500, activation='relu')) model.add(Dense(num_classes, activation='softmax'))# 定義損失函數(shù)、優(yōu)化函數(shù)和評測方法。 model.compile(loss=tensorflow.keras.losses.categorical_crossentropy,optimizer=tensorflow.keras.optimizers.SGD(),metrics=['accuracy'])# 3. 通過Keras的API訓(xùn)練模型并計算在測試數(shù)據(jù)上的準(zhǔn)確率 model.fit(trainX, trainY,batch_size=128,epochs=10,validation_data=(testX, testY))# 在測試數(shù)據(jù)上計算準(zhǔn)確率。 score = model.evaluate(testX, testY) print('Test loss:', score[0]) print('Test accuracy:', score[1])執(zhí)行LeNet模型的訓(xùn)練代碼:
該Python腳本會下載MNIST數(shù)據(jù)集,然后開始加載訓(xùn)練參數(shù):
然后進行訓(xùn)練:
經(jīng)過了幾輪訓(xùn)練,準(zhǔn)確率提高到了0.9821,loss降低到了0.0597左右。可見,Jetson AGX Orin在LeNet網(wǎng)絡(luò)的運行結(jié)果,跟Jetson Nano是幾乎一樣的。當(dāng)然,我們現(xiàn)在不涉及測試性能。
以上就是張小白初體驗Jetson AGX Orin設(shè)備的過程,還有更多的內(nèi)容需要張小白一一去挖掘呢!
(全文完,謝謝閱讀)
總結(jié)
以上是生活随笔為你收集整理的Nvidia Jetson AGX Orin 初体验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android程序员该如何进阶?,202
- 下一篇: 中国石油大学(北京)-《思想道德修养与法