
1. 從“atlas”這個(gè)詞說(shuō)起它到底指什么第一次看到“atlas”這個(gè)項(xiàng)目標(biāo)題很多人腦子里會(huì)同時(shí)冒出好幾個(gè)不相干的畫(huà)面有人想到地圖冊(cè)有人想到希臘神話里扛著天球的泰坦神還有人想到數(shù)據(jù)庫(kù)里那張存著核心元數(shù)據(jù)的系統(tǒng)表。但在我們做AI工程和異構(gòu)計(jì)算這一行里提到“atlas”十有八九說(shuō)的是昇騰Ascend系列里的 Atlas 產(chǎn)品線——它既包括 Atlas 300I / 300V 這類推理加速卡也包括 Atlas 200 DK、Atlas 500 這類邊緣小站和開(kāi)發(fā)者套件還包括 Atlas 800 訓(xùn)練服務(wù)器這種機(jī)架式的大塊頭。這個(gè)標(biāo)題給得很寬就一個(gè)詞“atlas”沒(méi)有限定是硬件、是軟件棧、還是某個(gè)具體型號(hào)。所以我在拆解的時(shí)候干脆把它當(dāng)成一個(gè)“入口”來(lái)處理圍繞 Atlas 這條產(chǎn)品線把從選型、部署到跑通 YOLO 的完整鏈路講清楚。熱搜詞里那兩個(gè)特別有意思——“atlas部署yolo”和“atlas 300v 24g 是運(yùn)算加速卡嗎”前者是典型的落地需求后者是典型的選型困惑。這兩個(gè)問(wèn)題恰好覆蓋了新手從“認(rèn)識(shí)硬件”到“跑通模型”的全過(guò)程我就順著這條線往下寫(xiě)。先給一個(gè)最直白的定位Atlas 300V 24G 是一塊推理加速卡不是顯卡也不是通用計(jì)算卡。它用的是昇騰 310P 芯片24GB 的顯存準(zhǔn)確說(shuō)是片上內(nèi)存主要干的事是把訓(xùn)練好的模型拿過(guò)來(lái)做前向推理。你不能拿它去打游戲也不能拿它當(dāng)普通 GPU 跑 CUDA 代碼它的價(jià)值在于在同樣功耗下把推理吞吐拉上去并且支持多路視頻解碼。這一點(diǎn)如果一開(kāi)始沒(méi)搞明白后面裝驅(qū)動(dòng)、配環(huán)境、轉(zhuǎn)模型的時(shí)候會(huì)處處碰壁。這篇文章適合誰(shuí)看如果你是剛拿到一張 Atlas 卡、或者公司剛采購(gòu)了一臺(tái) Atlas 服務(wù)器需要把 YOLO 系列模型部署上去跑起來(lái)的工程師那這篇就是給你寫(xiě)的。如果你還在選型階段糾結(jié)到底買(mǎi) 300I Duo 還是 300V我也會(huì)把兩者的差異和適用場(chǎng)景講清楚。哪怕你只是聽(tīng)說(shuō)過(guò) Atlas 想了解一下前面幾節(jié)的基礎(chǔ)拆解也能讓你少走彎路。2. 硬件選型Atlas 300V 24G 到底是不是運(yùn)算加速卡2.1 先把“運(yùn)算加速卡”這個(gè)概念掰開(kāi)“運(yùn)算加速卡”這個(gè)詞其實(shí)是個(gè)籠統(tǒng)的叫法。廣義上講任何插在服務(wù)器上、專門(mén)替 CPU 分擔(dān)計(jì)算任務(wù)的板卡都能叫加速卡GPU 是FPGA 是ASIC 也是。但在這個(gè)圈子里大家說(shuō)“加速卡”的時(shí)候通常默認(rèn)指的是面向 AI 推理或訓(xùn)練的專用加速硬件而不是圖形卡。Atlas 300V 24G 的定位非常明確推理加速卡。它基于昇騰 310P 處理器這顆芯片的設(shè)計(jì)目標(biāo)就是高能效推理。它沒(méi)有視頻輸出接口你插上顯示器是點(diǎn)不亮的它也不支持 CUDA你寫(xiě)torch.cuda.is_available()永遠(yuǎn)返回 False。它的正確打開(kāi)方式是裝好驅(qū)動(dòng)和固件裝好 CANN 工具包然后用昇騰的推理引擎去加載 om 模型。那它和 Atlas 300I Duo 有什么區(qū)別這是選型時(shí)問(wèn)得最多的問(wèn)題。我整理了一張對(duì)照表把關(guān)鍵參數(shù)擺出來(lái)對(duì)比項(xiàng)Atlas 300I DuoAtlas 300V 24G芯片昇騰 310P昇騰 310P顯存96GB LPDDR4X雙芯各48G24GB典型功耗150W72W視頻解碼支持路數(shù)多支持路數(shù)相對(duì)少適用場(chǎng)景高密度推理、多路視頻分析中等密度推理、單卡部署形態(tài)半高半長(zhǎng)半高半長(zhǎng)從表里能看出來(lái)300V 24G 更像是 300I Duo 的“精簡(jiǎn)版”功耗低了一半顯存也少了不少。如果你的業(yè)務(wù)是幾十路視頻流做目標(biāo)檢測(cè)300I Duo 更合適如果只是幾路視頻或者單模型推理300V 24G 完全夠用而且功耗低意味著散熱壓力小放在 2U 服務(wù)器里更從容。注意買(mǎi)卡之前一定要確認(rèn)服務(wù)器的主板 BIOS 和電源能不能帶得動(dòng)。300V 24G 雖然功耗只有 72W但它需要額外的供電接口而且對(duì) PCIe 插槽的版本有要求。我見(jiàn)過(guò)有人把卡插到老服務(wù)器上結(jié)果 BIOS 里根本認(rèn)不到設(shè)備折騰半天才發(fā)現(xiàn)是 PCIe 版本不兼容。2.2 為什么選 Atlas 而不是別的方案這個(gè)問(wèn)題很現(xiàn)實(shí)。市面上做推理加速的方案不少為什么偏偏選 Atlas我自己的體會(huì)是三個(gè)原因能效比、國(guó)產(chǎn)化需求、以及視頻解碼能力。能效比這塊昇騰 310P 在 INT8 精度下的算力表現(xiàn)相當(dāng)能打而功耗控制得又比較好。對(duì)于需要 7x24 小時(shí)跑推理的業(yè)務(wù)來(lái)說(shuō)電費(fèi)是實(shí)打?qū)嵉某杀竟牡鸵话胍荒晗聛?lái)省的電費(fèi)不是小數(shù)目。視頻解碼能力是另一個(gè)容易被忽略的點(diǎn)。Atlas 300V 內(nèi)置了硬件解碼單元支持 H.264 和 H.265 的硬解。這意味著你可以直接把 RTSP 流丟給卡讓卡自己解碼不用 CPU 先軟解再送進(jìn)去。CPU 軟解幾十路 1080P 是很吃力的而硬解幾乎不占 CPU。這一點(diǎn)在做視頻分析類項(xiàng)目時(shí)特別關(guān)鍵。至于國(guó)產(chǎn)化需求這個(gè)不用多解釋很多項(xiàng)目在選型階段就有明確的傾向性要求Atlas 系列在這方面的生態(tài)成熟度是比較高的。2.3 選型時(shí)容易踩的坑第一個(gè)坑是只看算力不看顯存。有人覺(jué)得算力夠就行結(jié)果模型稍微大一點(diǎn)就 OOM。YOLOv5s 這種小模型 24G 綽綽有余但如果你要跑 YOLOv8x 或者更大的模型還要同時(shí)跑多個(gè)實(shí)例24G 就可能緊張。選型時(shí)一定要把模型大小、batch size、并發(fā)路數(shù)一起算進(jìn)去。第二個(gè)坑是忽略 CPU 和內(nèi)存的配套。加速卡再?gòu)?qiáng)數(shù)據(jù)預(yù)處理還是要在 CPU 上做。如果 CPU 太弱預(yù)處理成了瓶頸卡再快也白搭。我的經(jīng)驗(yàn)是配 Atlas 卡的服務(wù)器CPU 至少要是中端以上的型號(hào)內(nèi)存建議 64G 起步。第三個(gè)坑是沒(méi)確認(rèn)固件版本。Atlas 卡對(duì)驅(qū)動(dòng)和固件版本有匹配要求驅(qū)動(dòng)版本和 CANN 版本之間也有對(duì)應(yīng)關(guān)系。版本不匹配會(huì)導(dǎo)致各種奇怪的問(wèn)題比如設(shè)備識(shí)別不到、模型加載失敗、推理結(jié)果異常。裝之前一定要去官方文檔查版本配套表。3. 環(huán)境搭建從裸機(jī)到能跑推理的完整過(guò)程3.1 驅(qū)動(dòng)和固件的安裝順序這一步是很多新手卡住的地方。正確的順序是先裝驅(qū)動(dòng)再裝固件最后裝 CANN。順序錯(cuò)了后面全是坑。裝驅(qū)動(dòng)之前先確認(rèn)系統(tǒng)版本。Atlas 對(duì)操作系統(tǒng)有明確的支持列表Ubuntu 18.04、20.04、CentOS 7.6 這些是常見(jiàn)的支持版本。如果你用的是比較新的系統(tǒng)比如 Ubuntu 22.04可能會(huì)遇到兼容性問(wèn)題需要提前查一下。驅(qū)動(dòng)安裝包一般是個(gè).run文件執(zhí)行的時(shí)候要加--install參數(shù)。安裝過(guò)程中會(huì)提示你確認(rèn)一些選項(xiàng)比如是否安裝 DKMS 模塊建議選是這樣內(nèi)核升級(jí)后驅(qū)動(dòng)能自動(dòng)重新編譯。固件安裝包通常是.hpm格式用hpm工具來(lái)刷。刷固件的時(shí)候卡不能處于使用狀態(tài)最好重啟到干凈狀態(tài)再刷。刷完固件要重啟服務(wù)器讓固件生效。提示裝完驅(qū)動(dòng)后用npu-smi info命令檢查卡是否被識(shí)別。如果能看到卡的型號(hào)、溫度、功耗等信息說(shuō)明驅(qū)動(dòng)裝好了。如果報(bào)錯(cuò)說(shuō)找不到設(shè)備先檢查卡有沒(méi)有插緊再看 BIOS 里 PCIe 設(shè)備有沒(méi)有被識(shí)別。3.2 CANN 工具包的安裝與配置CANN 是昇騰的計(jì)算架構(gòu)相當(dāng)于 CUDA 在英偉達(dá)生態(tài)里的位置。它包含了算子庫(kù)、運(yùn)行時(shí)、編譯器等一系列組件。裝 CANN 的時(shí)候建議用--install參數(shù)跑安裝腳本它會(huì)引導(dǎo)你選擇安裝路徑和組件。裝完之后要配置環(huán)境變量。主要是把 CANN 的庫(kù)路徑加到LD_LIBRARY_PATH里把工具鏈路徑加到PATH里。這些在安裝腳本的最后會(huì)提示你照著做就行。配置完記得source一下配置文件或者重新登錄終端。驗(yàn)證 CANN 是否裝好可以跑一下自帶的樣例。CANN 安裝包里一般會(huì)有一些 sample編譯運(yùn)行一下如果能正常輸出結(jié)果說(shuō)明環(huán)境沒(méi)問(wèn)題。3.3 Python 環(huán)境和推理框架的選擇Atlas 上跑推理Python 環(huán)境建議用 3.7 到 3.9 之間的版本。太新的版本可能有些依賴包還不支持。我一般用 conda 建一個(gè)獨(dú)立環(huán)境避免和系統(tǒng) Python 混在一起。推理框架這塊主要有兩個(gè)選擇MindSpore Lite和AscendCL。MindSpore Lite 更偏向端側(cè)和輕量級(jí)部署AscendCL 是更底層的接口靈活性更高但寫(xiě)起來(lái)更麻煩。對(duì)于 YOLO 部署來(lái)說(shuō)我推薦用MindX SDK它封裝了 AscendCL 的很多細(xì)節(jié)提供了更上層的 API開(kāi)發(fā)效率高很多。MindX SDK 里有個(gè)mxpi系列插件專門(mén)做視頻解碼、推理、后處理這些事。用插件搭 pipeline 的方式比手寫(xiě) AscendCL 代碼要快得多。當(dāng)然如果你需要深度定制還是得回到 AscendCL 層面去改。4. 把 YOLO 部署到 Atlas 上的完整實(shí)操4.1 模型轉(zhuǎn)換從 PyTorch 到 omYOLO 模型訓(xùn)練出來(lái)一般是 PyTorch 的.pt文件Atlas 不能直接跑需要轉(zhuǎn)成.om格式。轉(zhuǎn)換的路徑是PyTorch - ONNX - om。第一步把.pt轉(zhuǎn)成.onnx。這一步在普通的 x86 機(jī)器上就能做用torch.onnx.export函數(shù)。需要注意的是導(dǎo)出的時(shí)候要指定opset_version建議用 11 或以上。輸入尺寸要和后面推理時(shí)保持一致比如1x3x640x640。第二步用 ATC 工具把 ONNX 轉(zhuǎn)成 om。ATC 是 CANN 自帶的模型轉(zhuǎn)換工具命令大概長(zhǎng)這樣atc --modelyolov5s.onnx \ --framework5 \ --outputyolov5s \ --input_formatNCHW \ --input_shapeimages:1,3,640,640 \ --soc_versionAscend310P3 \ --output_typeFP16這里有幾個(gè)參數(shù)要特別注意。--soc_version要填對(duì)300V 24G 用的是 Ascend310P3填錯(cuò)了轉(zhuǎn)出來(lái)的模型跑不了。--output_type可以選 FP16 或 INT8FP16 精度更高但速度稍慢INT8 更快但需要做量化校準(zhǔn)。第一次跑建議先用 FP16跑通了再考慮 INT8。注意ATC 轉(zhuǎn)換過(guò)程中如果報(bào)錯(cuò)說(shuō)某個(gè)算子不支持需要查一下昇騰的算子支持列表。YOLO 里常見(jiàn)的算子像 Focus、SiLU 這些新版本的 CANN 一般都支持了但老版本可能沒(méi)有。遇到不支持的算子要么升級(jí) CANN要么改模型結(jié)構(gòu)。4.2 用 MindX SDK 搭推理 pipeline模型轉(zhuǎn)好之后就可以搭推理 pipeline 了。MindX SDK 的 pipeline 是用 JSON 文件描述的里面定義了數(shù)據(jù)從輸入到輸出的流轉(zhuǎn)過(guò)程。一個(gè)典型的 YOLO 推理 pipeline 大概包含這幾個(gè)插件mxpi_videodecoder做視頻解碼mxpi_imageresize做尺寸縮放mxpi_tensorinfer做推理mxpi_objectpostprocessor做后處理。每個(gè)插件在 JSON 里配置好參數(shù)串起來(lái)就是一條完整的流水線。配置mxpi_tensorinfer的時(shí)候要指定 om 模型的路徑、推理的 batch size、以及輸入輸出的 tensor 名稱。這些信息在轉(zhuǎn)模型的時(shí)候就能看到ATC 轉(zhuǎn)換完會(huì)輸出一個(gè).json文件里面記錄了模型的輸入輸出信息。后處理插件mxpi_objectpostprocessor需要配置 YOLO 的類別數(shù)、置信度閾值、NMS 閾值這些參數(shù)。這些參數(shù)要和訓(xùn)練時(shí)保持一致否則檢測(cè)結(jié)果會(huì)不對(duì)。4.3 跑通第一個(gè)推理任務(wù)pipeline 配好之后寫(xiě)一個(gè)簡(jiǎn)單的 Python 腳本來(lái)啟動(dòng)它。MindX SDK 提供了 Python 接口用StreamManager加載 pipeline 配置文件然后往輸入端口送數(shù)據(jù)從輸出端口取結(jié)果。第一次跑的時(shí)候建議先用一張靜態(tài)圖片測(cè)試不要一上來(lái)就懟視頻流。圖片測(cè)試能排除掉解碼和流媒體相關(guān)的問(wèn)題把焦點(diǎn)放在推理本身。如果圖片能正常檢測(cè)出目標(biāo)說(shuō)明模型轉(zhuǎn)換和 pipeline 配置都沒(méi)問(wèn)題。圖片跑通之后再換成視頻文件測(cè)試。視頻文件測(cè)試能驗(yàn)證解碼插件是否正常工作。最后再換成 RTSP 流這一步可能會(huì)遇到網(wǎng)絡(luò)延遲、丟包等問(wèn)題需要調(diào)整解碼插件的緩沖參數(shù)。我自己的習(xí)慣是每換一種輸入源都先用ffprobe或者vlc確認(rèn)一下源本身是正常的排除掉源的問(wèn)題再查 pipeline。5. 性能調(diào)優(yōu)讓 Atlas 跑得更快更穩(wěn)5.1 模型層面的優(yōu)化模型層面的優(yōu)化是最直接的。量化是首選手段把 FP16 轉(zhuǎn)成 INT8推理速度通常能提升 30% 到 50%。量化需要用校準(zhǔn)數(shù)據(jù)集一般從訓(xùn)練集里抽幾百?gòu)垐D就夠了。校準(zhǔn)做得好精度損失可以控制在 1% 以內(nèi)。算子融合是另一個(gè)手段。ATC 轉(zhuǎn)換的時(shí)候會(huì)自動(dòng)做一些融合但有些融合需要手動(dòng)開(kāi)啟。比如把 Conv BN ReLU 融合成一個(gè)算子能減少內(nèi)存訪問(wèn)次數(shù)提升速度。輸入尺寸也要權(quán)衡。640x640 是 YOLO 的默認(rèn)尺寸但如果你的目標(biāo)比較大用 416x416 也能檢測(cè)出來(lái)速度會(huì)快不少。反過(guò)來(lái)如果目標(biāo)很小可能需要 1280x1280速度會(huì)慢下來(lái)。這個(gè)要根據(jù)實(shí)際場(chǎng)景去調(diào)。5.2 推理配置的調(diào)優(yōu)batch size 的設(shè)置很關(guān)鍵。batch size 太小卡的算力用不滿batch size 太大顯存可能不夠。我的經(jīng)驗(yàn)是300V 24G 跑 YOLOv5sbatch size 設(shè) 4 到 8 比較合適。具體設(shè)多少要跑 benchmark 測(cè)一下看吞吐和延遲的平衡點(diǎn)在哪里。多實(shí)例推理是提升吞吐的另一個(gè)辦法。一張卡上可以同時(shí)跑多個(gè)模型實(shí)例每個(gè)實(shí)例處理一路視頻流。MindX SDK 支持配置多個(gè)mxpi_tensorinfer插件每個(gè)插件加載同一個(gè)模型但用不同的設(shè)備 ID。這樣能充分利用卡的并行能力。線程數(shù)的配置也要注意。解碼、預(yù)處理、推理、后處理這些環(huán)節(jié)如果都用單線程很容易出現(xiàn)某個(gè)環(huán)節(jié)成為瓶頸。MindX SDK 的插件可以配置線程數(shù)一般建議解碼和預(yù)處理多配幾個(gè)線程推理環(huán)節(jié)根據(jù)卡的實(shí)際情況來(lái)。5.3 系統(tǒng)層面的調(diào)優(yōu)CPU 頻率策略會(huì)影響預(yù)處理速度。把 CPU governor 設(shè)成 performance 模式能避免 CPU 降頻導(dǎo)致的預(yù)處理延遲。內(nèi)存帶寬也是瓶頸之一。如果服務(wù)器內(nèi)存通道沒(méi)插滿帶寬上不去數(shù)據(jù)搬運(yùn)會(huì)成為瓶頸。建議把內(nèi)存通道插滿并且用高頻率的內(nèi)存條。PCIe 帶寬在某些場(chǎng)景下也會(huì)成為瓶頸尤其是多卡場(chǎng)景。如果卡插在 PCIe 3.0 x8 的插槽上帶寬只有 x16 的一半數(shù)據(jù)搬運(yùn)速度會(huì)受影響。盡量把卡插在 x16 的插槽上。提示調(diào)優(yōu)的時(shí)候一定要有基準(zhǔn)測(cè)試。每次只改一個(gè)參數(shù)測(cè)完記錄數(shù)據(jù)再改下一個(gè)。同時(shí)改多個(gè)參數(shù)出了問(wèn)題都不知道是哪個(gè)參數(shù)導(dǎo)致的。6. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄6.1 設(shè)備識(shí)別類問(wèn)題問(wèn)題npu-smi info報(bào)錯(cuò)說(shuō)找不到設(shè)備。排查思路先看lspci | grep -i ascend能不能看到卡。如果看不到說(shuō)明是硬件層面沒(méi)識(shí)別到檢查卡是否插緊、BIOS 里 PCIe 設(shè)備是否啟用、電源供電是否足夠。如果lspci能看到但npu-smi看不到說(shuō)明是驅(qū)動(dòng)問(wèn)題檢查驅(qū)動(dòng)版本和固件版本是否匹配。問(wèn)題驅(qū)動(dòng)裝完但重啟后設(shè)備又不見(jiàn)了。這通常是 DKMS 模塊沒(méi)裝好。檢查/lib/modules/$(uname -r)/下面有沒(méi)有昇騰的驅(qū)動(dòng)模塊。如果沒(méi)有重新裝驅(qū)動(dòng)并確保 DKMS 選項(xiàng)被選中。6.2 模型轉(zhuǎn)換類問(wèn)題問(wèn)題ATC 轉(zhuǎn)換報(bào)錯(cuò)提示算子不支持。先查昇騰的算子支持列表確認(rèn)這個(gè)算子在當(dāng)前 CANN 版本里是否支持。如果不支持考慮升級(jí) CANN或者修改模型結(jié)構(gòu)用支持的算子替換掉不支持的。問(wèn)題轉(zhuǎn)換成功但推理結(jié)果不對(duì)。檢查輸入輸出的 tensor 名稱和順序是否和 pipeline 里配置的一致。ATC 轉(zhuǎn)換完會(huì)生成一個(gè).json文件里面記錄了輸入輸出的詳細(xì)信息對(duì)照著檢查。另外檢查預(yù)處理是否和訓(xùn)練時(shí)一致比如歸一化的均值方差、通道順序這些。6.3 推理運(yùn)行類問(wèn)題問(wèn)題推理速度比預(yù)期慢很多。先看npu-smi info里的利用率如果利用率很低說(shuō)明卡在等數(shù)據(jù)瓶頸在預(yù)處理或數(shù)據(jù)傳輸。如果利用率很高但速度還是慢可能是模型本身的問(wèn)題考慮量化或換更小的模型。問(wèn)題跑一段時(shí)間后報(bào)顯存不足。檢查是否有內(nèi)存泄漏比如每次推理都創(chuàng)建新的 tensor 而沒(méi)有釋放。另外檢查 batch size 和并發(fā)路數(shù)是否超過(guò)了卡的承載能力。6.4 常見(jiàn)問(wèn)題速查表現(xiàn)象可能原因排查方向設(shè)備識(shí)別不到硬件未插緊、BIOS未啟用、驅(qū)動(dòng)未裝lspci、BIOS設(shè)置、驅(qū)動(dòng)版本模型轉(zhuǎn)換失敗算子不支持、參數(shù)填錯(cuò)算子支持列表、soc_version推理結(jié)果異常預(yù)處理不一致、tensor名稱錯(cuò)對(duì)照json文件、檢查歸一化速度慢預(yù)處理瓶頸、batch太小npu-smi利用率、benchmark測(cè)試顯存不足batch太大、內(nèi)存泄漏減小batch、檢查釋放邏輯7. 一些實(shí)操心得和后續(xù)擴(kuò)展方向踩過(guò)幾次坑之后我最大的體會(huì)是Atlas 部署這件事難的不是推理本身而是環(huán)境搭建和模型轉(zhuǎn)換。推理 pipeline 一旦跑通后面就是調(diào)參的事。但環(huán)境搭建和模型轉(zhuǎn)換這兩個(gè)環(huán)節(jié)版本匹配、參數(shù)配置、算子支持每一個(gè)細(xì)節(jié)都可能讓你卡半天。我的建議是拿到卡之后不要急著上業(yè)務(wù)模型先用官方提供的樣例跑一遍。樣例跑通了說(shuō)明環(huán)境沒(méi)問(wèn)題再換自己的模型。換模型的時(shí)候先用最簡(jiǎn)單的模型比如 ResNet50測(cè)試確認(rèn)轉(zhuǎn)換和推理鏈路沒(méi)問(wèn)題再上 YOLO 這種復(fù)雜的模型。另外文檔一定要看官方的最新版。昇騰的生態(tài)更新很快很多老教程里的命令和參數(shù)在新版本里已經(jīng)變了。我見(jiàn)過(guò)有人照著兩年前的博客裝驅(qū)動(dòng)結(jié)果版本對(duì)不上折騰了一整天。后續(xù)如果要把這套東西用到生產(chǎn)環(huán)境還有幾個(gè)方向可以擴(kuò)展。一是多卡并行把多張卡組成一個(gè)推理集群用 MindX SDK 的分布式能力做負(fù)載均衡。二是模型熱更新在不重啟服務(wù)的情況下替換 om 模型這對(duì)業(yè)務(wù)連續(xù)性很重要。三是監(jiān)控告警把卡的利用率、溫度、顯存占用這些指標(biāo)接入監(jiān)控系統(tǒng)出問(wèn)題能第一時(shí)間發(fā)現(xiàn)。最后分享一個(gè)小技巧如果你不確定某個(gè)參數(shù)該怎么設(shè)先用默認(rèn)值跑一遍然后用npu-smi和top觀察資源占用根據(jù)瓶頸去調(diào)。調(diào)優(yōu)這件事沒(méi)有銀彈都是測(cè)出來(lái)的。