0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用NVIDIA Jetson Xavier NX構(gòu)建四節(jié)點集群

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Steven McIntire ? 2022-08-15 17:04 ? 次閱讀

跟隨大型超級計算機(如 NVIDIA DGX SuperPOD )的腳步,本文將引導(dǎo)您完成創(chuàng)建適合您桌面的小型集群的過程。以下是完成該項目的推薦硬件和軟件。該小規(guī)模集群可用于加速人工智能AI )和深度學(xué)習(xí)( DL )工作流的訓(xùn)練和推理,包括使用來自 NVIDIA NGC 目錄等來源的容器化環(huán)境。

硬件:

4 倍 NVIDIA Jetson Xavier NX 開發(fā)工具包

4x MicroSD 卡( 128GB 以上)

1x SD + microSD 讀卡器

1x (可選) Seeed Studio Jetson Mate Cluster Mini

1x (可選) USB-C PD 電源( 90w 以上)

1x (可選) USB-C PD 100w 電力電纜

雖然 Seeed Studio Jetson Mate 、 USB-C PD 電源和 USB-C 電纜不是必需的,但在本文中使用了它們,強烈建議將其用于整潔緊湊的桌面集群解決方案。

軟件:

Jetson NX Jetpack 4.6

Slurm 20.11

Pyxis 0.11

Enroot 3.3.1

有關(guān)更多信息,請參閱 NVIDIA Jetson Xavier NX 開發(fā)工具包 。

安裝

將 JetPack 圖像寫入 microSD 卡,并執(zhí)行初始 JetPack 配置步驟:

本文的第一次迭代針對 Slurm 控制節(jié)點(slurm-control)。配置第一個節(jié)點后,可以選擇為每個模塊重復(fù)每個步驟,也可以為其他模塊克隆第一個 microSD 卡;稍后將對此進行詳細介紹。

在遵循上述入門指南的同時:

跳過無線網(wǎng)絡(luò)設(shè)置部分,因為將使用有線連接。

選擇用戶名和密碼時,請選擇您喜歡的,并在所有節(jié)點上保持一致。

將計算機名稱設(shè)置為當(dāng)前使用的目標(biāo)節(jié)點,第一個是slurm-control。

當(dāng)提示選擇 Nvpmodel Mode 的值時,選擇MODE_20W_6CORE以獲得最大性能。

刷新并完成《入門指南》后,運行以下命令:

echo "`id -nu` ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/`id -nu`
sudo systemctl mask snapd.service apt-daily.service apt-daily-upgrade.service
sudo systemctl mask apt-daily.timer apt-daily-upgrade.timer
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y

禁用 NetworkManager ,啟用 systemd networkd ,并配置網(wǎng)絡(luò)[DHCP]:

sudo systemctl disable NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service network-manager.service
sudo systemctl mask avahi-daemon
sudo systemctl enable systemd-networkd
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
cat << EOF | sudo tee /etc/systemd/network/eth0.network > /dev/null [Match]
Name=eth0 [Network]
DHCP=ipv4
MulticastDNS=yes [DHCP]
UseHostname=false
UseDomains=false
EOF sudo sed -i "/#MulticastDNS=/c\MulticastDNS=yes" /etc/systemd/resolved.conf
sudo sed -i "/#Domains=/c\Domains=local" /etc/systemd/resolved.conf

配置節(jié)點主機名:

如果您已經(jīng)在初始 JetPack 設(shè)置中設(shè)置了主機名,則可以跳過此步驟。

[slurm-control]

sudo hostnamectl set-hostname slurm-control
sudo sed -i "s/127\.0\.1\.1.*/127\.0\.1\.1\t`hostname`/" /etc/hosts

[compute-node]

計算節(jié)點應(yīng)遵循特定的命名約定,以便通過 Slurm 輕松尋址。使用一致標(biāo)識符,后跟順序遞增的數(shù)字(例如, node1 、 node2 等)。在本文中,我建議對計算節(jié)點使用nx1、nx2nx3。但是,您可以選擇遵循類似約定的任何內(nèi)容。

sudo hostnamectl set-hostname nx[1-3]
sudo sed -i "s/127\.0\.1\.1.*/127\.0\.1\.1\t`hostname`/" /etc/hosts

為 Munge 和 Slurm 創(chuàng)建用戶和組:

sudo groupadd -g 1001 munge
sudo useradd -m -c "MUNGE" -d /var/lib/munge -u 1001 -g munge -s /sbin/nologin munge
sudo groupadd -g 1002 slurm
sudo useradd -m -c "SLURM workload manager" -d /var/lib/slurm -u 1002 -g slurm -s /bin/bash slurm

安裝 Munge :

sudo apt install libssl-dev -y
git clone https://github.com/dun/munge
cd munge ./bootstrap
./configure
sudo make install -j6
sudo ldconfig
sudo mkdir -m0755 -pv /usr/local/var/run/munge
sudo chown -R munge: /usr/local/etc/munge /usr/local/var/run/munge /usr/local/var/log/munge

創(chuàng)建或復(fù)制 Munge 加密密鑰:

[slurm-control]

sudo -u munge mungekey --verbose

[compute-node]

sudo sftp -s 'sudo /usr/lib/openssh/sftp-server' `id -nu`@slurm-control <

啟動 Munge 并測試本地安裝:

sudo systemctl enable munge
sudo systemctl start munge
munge -n | unmunge

預(yù)期結(jié)果:STATUS: Success (0)

驗證 Munge 加密密鑰是否從計算節(jié)點匹配到 slurm 控件:

[compute-node]

munge -n | ssh slurm-control unmunge

預(yù)期結(jié)果:STATUS: Success (0)

安裝 Slurm ( 20.11.9 ):

cd ~
wget https://download.schedmd.com/slurm/slurm-20.11-latest.tar.bz2
tar -xjvf slurm-20.11-latest.tar.bz2
cd slurm-20.11.9
./configure --prefix=/usr/local
sudo make install -j6

索引 Slurm 共享對象并復(fù)制 systemd 服務(wù)文件:

sudo ldconfig -n /usr/local/lib/slurm
sudo cp etc/*.service /lib/systemd/system

為 Slurm 創(chuàng)建目錄并應(yīng)用權(quán)限:

sudo mkdir -pv /usr/local/var/{log,run,spool} /usr/local/var/spool/{slurmctld,slurmd}
sudo chown slurm:root /usr/local/var/spool/slurm*
sudo chmod 0744 /usr/local/var/spool/slurm*

為所有節(jié)點創(chuàng)建 Slurm 配置文件:

對于這一步,您可以按照包含的命令操作,并為集群使用以下配置文件(推薦)。要自定義與 Slurm 相關(guān)的變量,請使用configuration tool。

cat << EOF | sudo tee /usr/local/etc/slurm.conf > /dev/null
#slurm.conf for all nodes#
ClusterName=SlurmNX
SlurmctldHost=slurm-control
MpiDefault=none
ProctrackType=proctrack/pgid
ReturnToService=2
SlurmctldPidFile=/usr/local/var/run/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/usr/local/var/run/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/usr/local/var/spool/slurmd
SlurmUser=slurm
StateSaveLocation=/usr/local/var/spool/slurmctld
SwitchType=switch/none
InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=120
SlurmdTimeout=300
Waittime=0
SchedulerType=sched/backfill
SelectType=select/cons_tres
SelectTypeParameters=CR_Core_Memory
JobCompType=jobcomp/none
SlurmctldDebug=info
SlurmctldLogFile=/usr/local/var/log/slurmctld.log
SlurmdDebug=info
SlurmdLogFile=/usr/local/var/log/slurmd.log NodeName=nx[1-3] RealMemory=7000 Sockets=1 CoresPerSocket=6 ThreadsPerCore=1 State=UNKNOWN
PartitionName=compute Nodes=ALL Default=YES MaxTime=INFINITE State=UP EOF

安裝 Enroot 3.3.1 :

cd ~
sudo apt install curl jq parallel zstd -y
arch=$(dpkg --print-architecture)curl -fSsL -O https://github.com/NVIDIA/enroot/releases/download/v3.3.1/enroot_3.3.1-1_${arch}.deb
sudo dpkg -i enroot_3.3.1-1_${arch}.deb

安裝 Pyxis ( 0.13 ):

git clone https://github.com/NVIDIA/pyxis
cd pyxis
sudo make install -j6

創(chuàng)建 Pyxis 插件目錄和配置文件:

sudo mkdir /usr/local/etc/plugstack.conf.d
echo "include /usr/local/etc/plugstack.conf.d/*" | sudo tee /usr/local/etc/plugstack.conf > /dev/null

將 Pyxis 默認配置文件鏈接到插件目錄:

sudo ln -s /usr/local/share/pyxis/pyxis.conf /usr/local/etc/plugstack.conf.d/pyxis.conf

驗證 Enroot / Pyxis 安裝成功:

srun --help | grep container-image

預(yù)期結(jié)果:--container-image=[USER@][REGISTRY#]IMAGE[:TAG]|PATH

定稿

在其余節(jié)點上復(fù)制配置時,用分配的節(jié)點名和/或 microSD 卡標(biāo)記 JetsonNX 模塊。這有助于防止以后在移動模塊或卡時出現(xiàn)混淆。

有兩種不同的方法可以將安裝復(fù)制到其余模塊:手動配置或克隆 slurm 控制。仔細閱讀這兩種方法,然后選擇你喜歡的方法。

手動配置其余節(jié)點

對于當(dāng)前模塊,請遵循下面的“啟用并啟動 Slurm 服務(wù)守護進程”部分,然后對其余模塊重復(fù)整個過程 ,跳過[slurm-control]下標(biāo)記的任何步驟。所有模塊完全配置后,將其安裝到各自插槽中的 Jetson 配對中,如“將所有 Jetson Xavier NX 模塊安裝到機柜”部分所述。

為其余節(jié)點安裝克隆 slurm 控制

為了避免對每個節(jié)點重復(fù)所有安裝步驟,請將slurm-control節(jié)點的卡克隆為基本圖像,并將其閃存到所有剩余的卡上。如果您只有一個多端口讀卡器,并且希望進行卡到卡的克隆,則需要 microSD 到 SD 卡適配器。或者,也可以從源slurm-control卡在本地機器上創(chuàng)建圖像文件,然后閃爍目標(biāo)卡。

  1. 關(guān)閉您正在使用的 Jetson ,從模塊中取出 microSD 卡,然后將其插入讀卡器。
  2. 如果您正在執(zhí)行物理卡到卡克?。ㄊ褂?Balena Etcher 、 dd 或任何其他將逐扇區(qū)寫入的實用程序),請將空白目標(biāo) microSD 插入 SD 卡適配器,然后將其插入讀卡器。
  3. 識別您正在使用的應(yīng)用程序中的源( microSD )和目標(biāo)( SD 卡)的對應(yīng)卡,然后開始克隆過程。
  4. 如果要創(chuàng)建圖像文件,請使用您選擇的實用程序,從本地機器上的slurm-controlmicroSD 卡創(chuàng)建一個圖像文件,然后取出該卡,并使用該圖像閃爍其余空白卡。
  5. 克隆完成后,將克隆卡插入 Jetson 模塊并通電。配置計算節(jié)點的節(jié)點主機名,然后繼續(xù)啟用并啟動 Slurm 服務(wù)守護進程。對所有剩余的卡/模塊對重復(fù)此過程。

啟用并啟動 Slurm 服務(wù)守護進程:

[slurm-control]

sudo systemctl enable slurmctld
sudo systemctl start slurmctld

[compute-node]

sudo systemctl enable slurmd
sudo systemctl start slurmd

將所有 Jetson Xavier NX 模塊安裝到機柜中

首先關(guān)閉所有正在運行的模塊的電源,然后將其從托架上卸下。將所有 Jetson 模塊安裝到 Seeed Studio Jetson Mate 中,確??刂乒?jié)點放置在標(biāo)記為“ MASTER ”的主插槽中,計算節(jié)點 1-3 分別放置在標(biāo)記為“ WORKE 1 、 2 和 3 ”的輔助插槽中。每個模塊的 Jetson 配對套件中都有可選的風(fēng)扇延長電纜。

機柜上的視頻輸出連接到主模塊插槽,垂直 USB2 端口和 USB3 端口 1 也是如此。所有其他 USB 端口根據(jù)其各自的端口號連接到其他模塊。

故障排除

本節(jié)包含一些有用的命令,用于幫助解決常見網(wǎng)絡(luò)和 Slurm 相關(guān)問題。

測試網(wǎng)絡(luò)配置和連接

以下命令應(yīng)在routable狀態(tài)下顯示eth0,并從 DHCP 服務(wù)器獲取 IP 地址信息:

networkctl status

該命令應(yīng)以本地節(jié)點的主機名和響應(yīng)。本地作為域(例如slurm-control.local),以及 DHCP 分配的 IP 地址:

host `hostname`

選擇已配置并聯(lián)機的計算節(jié)點主機名。它應(yīng)該類似地響應(yīng)上一個命令。例如:主機 nx1 – nx1 。本地 has 地址為 192.168.0.1 。這也適用于在局域網(wǎng)上運行 mDNS 解析器守護進程的任何其他主機。

host [compute-node-hostname]

所有集群節(jié)點都應(yīng)該可以被所有其他節(jié)點 ping ,所有本地 LAN IP 地址也應(yīng)該可以 ping ,例如路由器。

ping [compute-node-hostname/local-network-host/ip]

測試外部 DNS 名稱解析并確認到 internet 的路由功能正常:

ping www.nvidia.com

檢查 Slurm 群集狀態(tài)和節(jié)點通信

以下命令顯示集群的當(dāng)前狀態(tài),包括節(jié)點狀態(tài):

sinfo -lNe

如果sinfo輸出中的任何節(jié)點顯示其狀態(tài)未知或關(guān)閉,則以下命令向指定節(jié)點發(fā)出信號,以更改其狀態(tài)并可用于作業(yè)調(diào)度([]在主機名“ nx ”后指定一個數(shù)字范圍):

scontrol update NodeName=hostname[1-3] State=RESUME

以下命令在所有可用的計算節(jié)點上運行hostname。節(jié)點應(yīng)在控制臺中使用其相應(yīng)的主機名進行響應(yīng)。

srun -N3 hostname

總結(jié)

現(xiàn)在,您已經(jīng)成功構(gòu)建了一個適合您的桌面的多節(jié)點 Slurm 集群?,F(xiàn)在,您可以在迷你集群上運行大量基準(zhǔn)測試、項目、工作負載和容器。歡迎在這篇帖子上分享您的反饋,當(dāng)然,也可以分享您的新集群正在用于的任何內(nèi)容。

關(guān)于作者

Steven McIntire 是 Enterprise Products group 旗下 RAPLAB 的解決方案架構(gòu)師,其主要關(guān)注數(shù)據(jù)中心基礎(chǔ)設(shè)施的所有方面。在 NVIDIA 的整個職業(yè)生涯中,他為多個大型計算項目做出了貢獻,包括 Saturn V 、 Circe 、 Selene 、 SuperPOD 和 GeForce Now 。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算機
    +關(guān)注

    關(guān)注

    19

    文章

    7513

    瀏覽量

    88173
  • 人工智能
    +關(guān)注

    關(guān)注

    1792

    文章

    47387

    瀏覽量

    238900
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5506

    瀏覽量

    121265
收藏 人收藏

    評論

    相關(guān)推薦

    u-blox深化與NVIDIA JetsonNVIDIA DRIVE Hyperion平臺合作

    近日,作為提供定位和無線通信技術(shù)及服務(wù)的全球領(lǐng)先供應(yīng)商u-blox(SIX:UBXN)宣布,作為在工業(yè)和汽車市場高精度定位領(lǐng)域的戰(zhàn)略增長計劃的關(guān)鍵一環(huán),u-blox公司現(xiàn)已加強對NVIDIA JetsonNVIDIA DRIV
    的頭像 發(fā)表于 12-09 14:08 ?232次閱讀

    雷卯針對NVIDIA英偉達JETSON Orin NX開發(fā)板防靜電推薦器件示意圖

    一、應(yīng)用場景 1. 生成性 AI 的端到端開發(fā) 2. 邊緣 AI 3. 機器人應(yīng)用 二、 功能概述 1. 處理器: Jetson Orin NX 8GB: 6核Arm° Cortex?-A78AE
    的頭像 發(fā)表于 11-22 19:13 ?187次閱讀
    雷卯針對<b class='flag-5'>NVIDIA</b>英偉達<b class='flag-5'>JETSON</b> Orin <b class='flag-5'>NX</b>開發(fā)板防靜電推薦器件示意圖

    初創(chuàng)公司借助NVIDIA Metropolis和Jetson提高生產(chǎn)線效率

    初創(chuàng)公司使用 NVIDIA Metropolis 視覺 AI 和 Jetson 邊緣 AI 平臺提高生產(chǎn)線效率。
    的頭像 發(fā)表于 11-19 14:39 ?212次閱讀

    使用NVIDIA Jetson打造機器人導(dǎo)盲犬

    Selin Alara Ornek 是一名富有遠見的高中生。她使用機器學(xué)習(xí)和 NVIDIA Jetson邊緣 AI 和機器人平臺,為視障人士打造了機器人導(dǎo)盲犬。
    的頭像 發(fā)表于 11-09 13:51 ?271次閱讀

    如何構(gòu)建及優(yōu)化GPU云網(wǎng)絡(luò)

    并從計算節(jié)點成本優(yōu)化、集群網(wǎng)絡(luò)與拓撲的選擇等方面論述如何構(gòu)建及優(yōu)化GPU云網(wǎng)絡(luò)。
    的頭像 發(fā)表于 11-06 16:03 ?395次閱讀
    如何<b class='flag-5'>構(gòu)建</b>及優(yōu)化GPU云網(wǎng)絡(luò)

    NVIDIA JetPack 6.0版本的關(guān)鍵功能

    NVIDIA JetPack SDK 支持 NVIDIA Jetson 模塊,為構(gòu)建端到端加速 AI 應(yīng)用提供全面的解決方案。JetPack 6 通過微服務(wù)和一系列新功能,擴展了
    的頭像 發(fā)表于 09-09 10:18 ?452次閱讀
    <b class='flag-5'>NVIDIA</b> JetPack 6.0版本的關(guān)鍵功能

    使用NVIDIA JetPack 6.0和YOLOv8構(gòu)建智能交通應(yīng)用

    本文將介紹如何使用 NVIDIA JetPack 6.0 中的全新 Jetson 平臺服務(wù),來構(gòu)建一個適用于邊緣的端到端交通分析解決方案。該系統(tǒng)集成了多個功能:使用視頻存儲工具包 (VST) 服務(wù)
    的頭像 發(fā)表于 08-23 16:49 ?505次閱讀
    使用<b class='flag-5'>NVIDIA</b> JetPack 6.0和YOLOv8<b class='flag-5'>構(gòu)建</b>智能交通應(yīng)用

    Nvidia Jetson Nano + CYW55573/AWXB327MA-PUR M.2無法使用操作系統(tǒng)內(nèi)置的網(wǎng)絡(luò)管理器管理Wi-Fi如何解決?

    我們使用的是 Nvidia Jetson Nano + CYW55573/AWXB327MA-PUR M.2 ,請參閱 Nvidia Jetson 與英飛凌 AIROC Wi-Fi 6
    發(fā)表于 05-23 06:47

    使用NVIDIA Holoscan for Media構(gòu)建下一代直播媒體應(yīng)用

    NVIDIA Holoscan for Media 現(xiàn)已向所有希望在完全可重復(fù)使用的集群構(gòu)建下一代直播媒體應(yīng)用的開發(fā)者開放。
    的頭像 發(fā)表于 04-16 14:04 ?693次閱讀

    浪潮信息推出全球首個單存儲即可支持16節(jié)點的SAP HANA集群方案

    近日,浪潮信息成功實現(xiàn)并推出全球首個單存儲即可支持16節(jié)點的SAP HANA集群方案,全閃存儲HF5000系列作為該方案的數(shù)據(jù)存儲底座,助力以最優(yōu)的性能和成本為企業(yè)創(chuàng)建大規(guī)模、易擴展、高穩(wěn)定的業(yè)務(wù)數(shù)據(jù)處理能力。
    的頭像 發(fā)表于 04-01 10:03 ?463次閱讀

    人形機器人主板:jetson orin nx核心模塊與SOM-7583核心模塊結(jié)合在一塊主板上

    ERUN_7583_ORIN_NX嵌入式人工智能計算機底板,專為滿足人形機器人的實際需求而設(shè)計,他具備jetson orin nx核心模塊與SOM-7583核心模塊,可以實現(xiàn)核心模塊間相互通信,運算跟運動控制器結(jié)合在一塊底板上。
    的頭像 發(fā)表于 03-26 11:17 ?927次閱讀
    人形機器人主板:<b class='flag-5'>jetson</b> orin <b class='flag-5'>nx</b>核心模塊與SOM-7583核心模塊結(jié)合在一塊主板上

    USB 5V 輸入四節(jié)鋰電池串聯(lián)升壓充電管理IC FS4068數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《USB 5V 輸入四節(jié)鋰電池串聯(lián)升壓充電管理IC FS4068數(shù)據(jù)手冊.pdf》資料免費下載
    發(fā)表于 03-18 10:01 ?1次下載

    TC397B CAN00節(jié)點設(shè)置的接收模式是先入先出,并且設(shè)置了新消息中斷,為什么沒有效果?

    CAN00節(jié)點設(shè)置的接收模式是先入先出,并且設(shè)置了新消息中斷,但是沒有效果
    發(fā)表于 02-04 06:48

    四節(jié)干電池串聯(lián)電流是多少安

    和電池容量。一節(jié)干電池通常使用1.5伏特電壓。 假設(shè)我們將這四節(jié)干電池串聯(lián)連接起來,將它們的負極與正極相連。這樣,我們就可以將它們看作是一個整體,具有總電壓等于四節(jié)干電池電壓之和的特點。所以,
    的頭像 發(fā)表于 01-15 10:49 ?4022次閱讀

    請問ad5522個通道能做成地互相隔離的嗎?

    ad5522,個通道能做成地互相隔離的嗎?現(xiàn)在有個應(yīng)用是給產(chǎn)品供電,然后測量產(chǎn)品的另外兩個管腳測量電阻,這兩個管腳都不能接地,需要像萬表那樣浮地測量。這樣就要求ad5522個通道的地互相隔離,箱
    發(fā)表于 01-11 06:08