回退實(shí)戰(zhàn):基于 Model RI 的 Task 級(jí)參數(shù)切換與禁用)
CANNAscend人工智能任務(wù)調(diào)度【免費(fèi)下載鏈接】runtime本項(xiàng)目提供CANN運(yùn)行時(shí)組件和維測(cè)功能組件。項(xiàng)目地址https://gitcode.com/cann/runtime點(diǎn)擊查看免費(fèi)下載本技術(shù)指南圍繞開源倉庫cann/runtime中的示例example/6_scenarios/fault_tolerant_exec/0_model_task_fallback展開講解如何在 CANN Runtime 中通過模型運(yùn)行實(shí)例Model RI的 Task 級(jí) API 實(shí)現(xiàn)輸入不適配時(shí)切換到備用路徑、并禁用可選后處理任務(wù)的回退策略。讀完本文你將掌握aclmdlRICaptureBegin/End捕獲模型、aclmdlRIGetStreams/aclmdlRITaskGetType/aclmdlRITaskGetSeqId遍歷與唯一定位 Task、以及aclmdlRITaskSetParams/aclmdlRITaskDisable/aclmdlRIUpdate提交回退更新的完整實(shí)戰(zhàn)鏈路。場(chǎng)景背景什么情況下需要模型任務(wù)回退在實(shí)際推理鏈路中主計(jì)算任務(wù)的輸入有時(shí)會(huì)因?yàn)閿?shù)據(jù)質(zhì)量、格式或語義不符而不適合繼續(xù)走后續(xù)的可選后處理post-processing流程。傳統(tǒng)做法是在 Host 側(cè)修改輸入后重新捕獲、重新下發(fā)整個(gè)模型開銷大且流程繁瑣。0_model_task_fallback示例給出的方案更加輕量先按完整路徑主計(jì)算任務(wù) 可選后處理任務(wù)正常捕獲并執(zhí)行一遍作為基線Baseline隨后在不重新捕獲模型的前提下直接定位模型內(nèi)部的 Task把主任務(wù)的輸入?yún)?shù)切換為備用輸入并整體禁用可選后處理任務(wù)再次執(zhí)行驗(yàn)證回退路徑Fallback。最終輸出證明主任務(wù)輸出來自備用輸入、后處理輸出保持了預(yù)設(shè)的哨兵值-1從而驗(yàn)證了 Task 級(jí)動(dòng)態(tài)調(diào)整的可行性。該示例位于 example/6_scenarios/fault_tolerant_exec/0_model_task_fallback適用于需要在運(yùn)行期動(dòng)態(tài)調(diào)整模型內(nèi)部任務(wù)、實(shí)現(xiàn)故障容錯(cuò)或遇錯(cuò)降級(jí)的開發(fā)者。產(chǎn)品支持范圍ProductSupportedAtlas A2 training series products/Atlas A2 inference series productsYesAtlas A3 training series products/Atlas A3 inference series productsYesAscend 950PR/Ascend 950DTYes說明以上支持矩陣來自示例自帶 READMEREADME_en.md實(shí)際部署前請(qǐng)以當(dāng)前安裝的 CANN 版本配套產(chǎn)品文檔為準(zhǔn)。示例的編譯與運(yùn)行示例的編譯、運(yùn)行入口是 run.sh核心步驟與 README 保持一致將示例代碼下載到已安裝 CANN 的環(huán)境并切換到示例目錄cd ${git_clone_path}/example/6_scenarios/fault_tolerant_exec/0_model_task_fallback設(shè)置環(huán)境變量${install_root}替換為 CANN 安裝根目錄source ${install_root}/set_env.sh source ${git_clone_path}/example/set_sample_env.sh其中 example/set_sample_env.sh 會(huì)依次完成調(diào)用 example/common/resolve_cann_env.sh 定位 CANN 安裝路徑編譯并運(yùn)行 example/tools/get_soc_version/get_soc_version.cpp 小工具通過aclrtGetSocName探測(cè)當(dāng)前芯片的SOC_VERSION再自動(dòng)探測(cè)ASCENDC_CMAKE_DIRascendc.cmake 所在目錄并導(dǎo)出ASCEND_INSTALL_PATH、ASCEND_HOME_PATH、SOC_VERSION、ASCENDC_CMAKE_DIR四個(gè)變量。編譯并執(zhí)行bash run.shrun.sh內(nèi)部會(huì)檢查ASCEND_HOME_PATH、SOC_VERSION、ASCENDC_CMAKE_DIR是否已設(shè)置隨后依次執(zhí)行cmake -B build -DASCEND_CANN_PACKAGE_PATH${ASCEND_HOME_PATH}、cmake --build build -j、cmake --install build最后運(yùn)行./build/main | tee output_msg.txt將運(yùn)行日志同時(shí)輸出到屏幕與output_msg.txt。構(gòu)建層面由 CMakeLists.txt 負(fù)責(zé)通過ascendc_fatbin_library(model_task_fallback_kernel kernel/model_task_fallback_kernel.cpp)調(diào)用 ASCENDC 工具鏈把 kernel/model_task_fallback_kernel.cpp 編譯為 fatbinadd_executable(main main.cpp model_task_fallback.cpp)將入口與主邏輯編譯成 Host 側(cè)可執(zhí)行程序鏈接${ASCEND_CANN_PACKAGE_PATH}/lib64/libacl_rt.so編譯選項(xiàng)為-O2 -stdc17 -D_GLIBCXX_USE_CXX11_ABI0 -Wall -Werror。示例輸出正常執(zhí)行時(shí)main程序會(huì)打印以下日志[INFO] Start to run 0_model_task_fallback sample. [INFO] Baseline path verified: main_first11, optional_first22. [INFO] Selected fallback tasks: main_seq0, optional_seq1. [INFO] Fallback path verified: main_first31, optional_first-1. [INFO] Run the 0_model_task_fallback sample successfully.四行關(guān)鍵日志的語義Baseline path verified: main_first11, optional_first22完整路徑基線驗(yàn)證通過。主任務(wù)輸出首元素 主輸入 1 偏置 10 11后處理輸出首元素 11 × 縮放 2 22Selected fallback tasks: main_seq0, optional_seq1成功唯一定位到兩個(gè) Kernel Task且主任務(wù)序號(hào)0先于可選任務(wù)序號(hào)1Fallback path verified: main_first31, optional_first-1回退路徑驗(yàn)證通過。主任務(wù)輸出首元素 備用輸入 21 10 31后處理任務(wù)已被禁用輸出保持預(yù)設(shè)哨兵值 -1最后打印整體成功信息進(jìn)程返回 0。涉及的 CANN RUNTIME API 全景README 將示例涉及的接口按功能歸類結(jié)合源碼 model_task_fallback.cpp 可確認(rèn)全部接口的真實(shí)調(diào)用點(diǎn)初始化與去初始化aclInit、aclrtSetDevice選擇 Device 0、aclrtResetDeviceForce釋放 Device 0 資源、aclFinalizeDevice 內(nèi)存aclrtMalloc分配兩個(gè)輸入、兩個(gè)輸出共 4 塊 Device 緩沖、aclrtMemcpy寫入輸入/輸出哨兵值并讀回結(jié)果、aclrtFreeStreamaclrtCreateStream創(chuàng)建用于捕獲與執(zhí)行模型的 Stream、aclrtSynchronizeStreamWithTimeout帶超時(shí)地等待模型執(zhí)行示例超時(shí) 5000 ms、aclrtDestroyStreamKernelaclrtBinaryLoadFromFile加載包含主/可選任務(wù)的 Kernel 二進(jìn)制、aclrtBinaryGetFunction獲取fallback_main與fallback_postprocess兩個(gè)函數(shù)句柄、aclrtLaunchKernelWithHostArgs以緊湊 Host 參數(shù)下發(fā)兩個(gè)被捕獲任務(wù)、aclrtBinaryUnLoad模型捕獲與執(zhí)行aclmdlRICaptureBegin、aclmdlRICaptureEnd、aclmdlRIExecuteAsync、aclmdlRIDestroyTask 選擇與回退更新aclmdlRIGetStreams、aclmdlRIGetTasksByStream、aclmdlRITaskGetType、aclmdlRITaskGetSeqId、aclmdlRITaskGetParams、aclmdlRITaskSetParams、aclmdlRITaskDisable、aclmdlRIUpdate。示例實(shí)現(xiàn)拆解從捕獲到回退的完整流程示例主流程由 model_task_fallback.cpp 中的ModelFallbackWorkflow::Run()串起Initialize → AllocateAndPrepare → LoadKernels → CaptureModel → ExecuteVerifyPath(Baseline) → ResetOutputs → SelectTasks → ApplyFallback → ExecuteVerifyPath(Fallback)。下面按階段剖析。1. 初始化、內(nèi)存準(zhǔn)備與 Kernel 加載Initialize()依次執(zhí)行aclInit(nullptr)、aclrtSetDevice(0)、aclrtCreateStream(stream_)。AllocateAndPrepare()用aclrtMalloc(..., ACL_MEM_MALLOC_HUGE_FIRST)分配 4 塊各 32 字節(jié)8 個(gè) int32的 Device 緩沖并把兩組輸入搬到 Device 側(cè)constexpr BufferData kPrimaryInput {1, 2, 3, 4, 5, 6, 7, 8}; // 主輸入 constexpr BufferData kBackupInput {21, 22, 23, 24, 25, 26, 27, 28}; // 備用輸入ResetOutputs()將兩個(gè)輸出緩沖填充為哨兵值 -1用于區(qū)分任務(wù)是否真實(shí)執(zhí)行過。LoadKernels()使用realpath解析 Kernel fatbin 路徑./out/fatbin/model_task_fallback_kernel/model_task_fallback_kernel.o后通過aclrtBinaryLoadFromFile加載二進(jìn)制再用aclrtBinaryGetFunction分別取得fallback_main和fallback_postprocess句柄。Kernel 定義位于 kernel/model_task_fallback_kernel.cpp兩個(gè)算子均為單核8 個(gè)元素逐元素計(jì)算fallback_main(input, output)output[i] input[i] 10偏置 kMainBiasfallback_postprocess(input, output)output[i] input[i] * 2縮放 kPostScale。其中在__NPU_ARCH__ 3510架構(gòu)上還會(huì)通過dcci對(duì)輸出做整行緩存刷寫CACHELINE_OUT保證結(jié)果對(duì) Host 可見屬于平臺(tái)相關(guān)的緩存一致性處理。2. 捕獲模型把兩次 Kernel 下發(fā)固化為 Task 序列CaptureModel()演示了 Model RI 的捕獲語義initialMainArgs_ {primaryInput_, mainOutput_}; optionalArgs_ {mainOutput_, optionalOutput_}; aclmdlRICaptureBegin(stream_, ACL_MODEL_RI_CAPTURE_MODE_RELAXED); aclrtLaunchKernelWithHostArgs(mainFunction_, 1, stream_, nullptr, initialMainArgs_, sizeof(initialMainArgs_), nullptr, 0); aclrtLaunchKernelWithHostArgs(optionalFunction_, 1, stream_, nullptr, optionalArgs_, sizeof(optionalArgs_), nullptr, 0); aclmdlRICaptureEnd(stream_, model_);要點(diǎn)捕獲模式使用ACL_MODEL_RI_CAPTURE_MODE_RELAXED枚舉定義見 include/external/acl/acl_rt.h表示流式捕獲約束較為寬松適合本示例的單 Stream 場(chǎng)景兩次aclrtLaunchKernelWithHostArgs的參數(shù)使用KernelArgs{input, output}這一 8 字節(jié)緊湊結(jié)構(gòu)isHostArgs語義上等價(jià)于 Host 側(cè)參數(shù)aclmdlRICaptureEnd返回模型句柄model_此后兩次 Kernel 下發(fā)被固化為模型內(nèi)部的兩個(gè) Task序號(hào) 0、1。需要說明的是捕獲期間主任務(wù)讀取的是主輸入緩沖primaryInput_而后處理任務(wù)讀取的是主輸出緩沖mainOutput_從而在數(shù)據(jù)流上形成主輸入 → 主輸出 → 后處理輸出的鏈?zhǔn)揭蕾嚒?. 基線路徑驗(yàn)證Execute()通過aclmdlRIExecuteAsync(model_, stream_)異步執(zhí)行完整模型用aclrtSynchronizeStreamWithTimeout(stream_, 5000)等待執(zhí)行完成再把兩塊輸出aclrtMemcpy回 Host。VerifyPath(kPrimaryInput, main, optional, true)逐元素校驗(yàn)主輸出 輸入 10首元素 1 10 11后處理輸出 主輸出 × 2首元素 11 × 2 22。校驗(yàn)通過即打印Baseline path verified: main_first11, optional_first22.隨后ResetOutputs()把輸出緩沖重新填回 -1為回退路徑執(zhí)行做好準(zhǔn)備。4. 定位并唯一識(shí)別主任務(wù)與可選任務(wù)這是示例最核心的部分。SelectTasks()先通過兩段式調(diào)用獲得模型 Stream 列表先查數(shù)量再取數(shù)據(jù)aclmdlRIGetStreams聲明見 include/external/acl/acl_rt.h再對(duì) Stream 上的 Task 做同樣的兩段式查詢aclmdlRIGetTasksByStream。隨后遍歷每個(gè) TaskaclmdlRITaskType type ACL_MODEL_RI_TASK_DEFAULT; aclmdlRITaskGetType(task, type); // 過濾出 Kernel 類型任務(wù) if (type ! ACL_MODEL_RI_TASK_KERNEL) { continue; } aclmdlRITaskGetSeqId(task, sequence); // 取任務(wù)序號(hào)驗(yàn)證先后關(guān)系 aclmdlRITaskGetParams(task, params); // 取 Kernel 句柄、參數(shù)布局、塊數(shù)等 if (params.kernelTaskParams.funcHandle mainFunction_) { selected.main task; selected.mainSequence sequence; selected.mainParams params; } else if (params.kernelTaskParams.funcHandle optionalFunction_) { selected.optional task; selected.optionalSequence sequence; }識(shí)別依據(jù)是類型 函數(shù)句柄 序號(hào)三重條件只有ACL_MODEL_RI_TASK_KERNEL類型才可能是計(jì)算任務(wù)通過aclmdlRITaskGetParams返回的kernelTaskParams.funcHandle與兩個(gè)函數(shù)句柄比對(duì)即可唯一區(qū)分主/可選任務(wù)最后用mainSequence optionalSequence校驗(yàn)主任務(wù)確實(shí)排在可選任務(wù)之前。任一條件不滿足Kernel 任務(wù)數(shù)不是 2、句柄未命中、序號(hào)亂序都會(huì)報(bào)錯(cuò)Cannot uniquely identify the ordered main and optional tasks.。Task 類型枚舉aclmdlRITaskType定義于 include/external/acl/acl_rt.h除ACL_MODEL_RI_TASK_KERNEL外還包括 EVENT_RECORD / EVENT_WAIT / EVENT_RESET / VALUE_WRITE / VALUE_WAIT 等類型說明 Model RI 的 Task 抽象覆蓋了事件與值同步等更豐富的圖內(nèi)原語。5. 應(yīng)用回退切換主任務(wù)參數(shù) 禁用可選任務(wù)ApplyFallback()先對(duì)捕獲時(shí)的 Kernel 下發(fā)參數(shù)做一致性校驗(yàn)類型為 KERNEL、句柄命中fallback_main、isHostArgs 0、argsSize sizeof(KernelArgs)、numBlocks 1確認(rèn)參數(shù)布局與捕獲時(shí)完全一致隨后構(gòu)造回退參數(shù)并提交fallbackMainArgs_ {backupInput_, mainOutput_}; // 主任務(wù)輸入切換為備用輸入 aclmdlRITaskParams updated selected.mainParams; updated.kernelTaskParams.args fallbackMainArgs_; // 指向新的 Host 參數(shù) updated.kernelTaskParams.isHostArgs 1; // 標(biāo)記為 Host 參數(shù) aclmdlRITaskSetParams(selected.main, updated); // 更新主任務(wù)參數(shù) aclmdlRITaskDisable(selected.optional); // 禁用可選后處理任務(wù) aclmdlRIUpdate(model_); // 提交全部更新這里需要理解aclmdlRITaskParams的聯(lián)合體布局該結(jié)構(gòu)體include/external/acl/acl_rt.h公共部分包含type、taskGrp、opInfoPtr/opInfoSize等字段聯(lián)合體內(nèi)按任務(wù)類型區(qū)分kernelTaskParams、eventRecordTaskParams、valueWriteTaskParams等專用參數(shù)結(jié)構(gòu)。對(duì) Kernel 任務(wù)aclmdlRIKernelTaskParamsinclude/external/acl/acl_rt.h攜帶funcHandle、cfg、args、isHostArgs、argsSize、numBlocks。示例正是通過整體拷貝原 params 后僅改寫args與isHostArgs的方式保證除輸入指針外其余任務(wù)屬性不變。三個(gè)關(guān)鍵接口的語義聲明分別見 include/external/acl/acl_rt.h、include/external/acl/acl_rt.h、include/external/acl/acl_rt.haclmdlRITaskSetParams在下次aclmdlRIUpdate前緩存該 Task 的參數(shù)更新aclmdlRITaskDisable將 Task 標(biāo)記為禁用執(zhí)行時(shí)跳過aclmdlRIUpdate把此前所有 Task 參數(shù)修改與禁用狀態(tài)一次性提交到模型后續(xù)aclmdlRIExecuteAsync按新狀態(tài)執(zhí)行。這種先修改、后提交的兩階段設(shè)計(jì)意味著可以在一次aclmdlRIUpdate中打包多個(gè) Task 的調(diào)整減少 Host 與 Device 之間的交互次數(shù)。6. 回退路徑驗(yàn)證再次aclmdlRIExecuteAsync執(zhí)行更新后的模型VerifyPath(kBackupInput, main, optional, false)校驗(yàn)主輸出 備用輸入 10首元素 21 10 31證明主任務(wù)確實(shí)改讀了備用輸入后處理輸出 哨兵值 -1證明可選任務(wù)被禁用后未再執(zhí)行若仍執(zhí)行則應(yīng)為 31 × 2 62。校驗(yàn)通過后打印Fallback path verified: main_first31, optional_first-1.。7. 資源清理Cleanup()在任意階段失敗時(shí)都會(huì)按逆序釋放資源若捕獲未結(jié)束先補(bǔ)一次aclmdlRICaptureEnd隨后aclmdlRIDestroy銷毀模型、aclrtBinaryUnLoad卸載 Kernel 二進(jìn)制、aclrtFree釋放 4 塊緩沖、aclrtDestroyStream銷毀 Stream、aclrtResetDeviceForce復(fù)位 Device 0、最后aclFinalize。每個(gè)清理動(dòng)作都會(huì)記錄錯(cuò)誤碼避免異常路徑下資源泄漏。從源碼看 Model RI 的任務(wù)抽象設(shè)計(jì)結(jié)合 include/external/acl/acl_rt.h 中 Model RI 相關(guān)接口族可以推斷模型運(yùn)行實(shí)例Model RI把一次捕獲得到的圖Graph進(jìn)一步細(xì)化為Stream → Task → TaskParams的三層可查詢結(jié)構(gòu)模型級(jí)提供aclmdlRIGetStreams、aclmdlRIExecuteAsync、aclmdlRIUpdateStream 級(jí)提供aclmdlRIGetTasksByStreamTask 級(jí)提供類型、序號(hào)、參數(shù)查詢與參數(shù)設(shè)置、禁用接口。這套結(jié)構(gòu)使得開發(fā)者無需關(guān)心模型內(nèi)部算子調(diào)度的具體實(shí)現(xiàn)即可按圖內(nèi)任務(wù)的粒度做診斷與動(dòng)態(tài)調(diào)整。示例正是這一設(shè)計(jì)的一個(gè)典型應(yīng)用通過函數(shù)句柄唯一標(biāo)識(shí)計(jì)算語義、序號(hào)唯一標(biāo)識(shí)執(zhí)行順序在多個(gè) Kernel 任務(wù)中穩(wěn)定定位目標(biāo)任務(wù)從而在不重建模型的前提下完成輸入切換與任務(wù)禁用。這也意味著 Model RI 任務(wù)級(jí) API 天然適用于故障容錯(cuò)如異常輸入降級(jí)、運(yùn)行時(shí)任務(wù)裁剪如關(guān)閉非關(guān)鍵后處理以省算力等場(chǎng)景。常見問題與注意事項(xiàng)路徑與環(huán)境Kernel fatbin 路徑./out/fatbin/...依賴run.sh在當(dāng)前示例目錄下執(zhí)行cmake --install因此必須在示例目錄內(nèi)運(yùn)行bash run.sh并確保ASCEND_HOME_PATH、SOC_VERSION、ASCENDC_CMAKE_DIR三個(gè)變量已正確設(shè)置否則腳本會(huì)報(bào)錯(cuò)退出任務(wù)識(shí)別唯一性若模型 Stream 上存在多個(gè)同類型 Kernel 任務(wù)僅靠類型無法區(qū)分必須結(jié)合funcHandle與aclmdlRITaskGetSeqId雙重判定示例通過kernelCount ! 2與序號(hào)亂序檢查兜底參數(shù)一致性aclmdlRITaskSetParams前應(yīng)對(duì)argsSize、numBlocks、isHostArgs等做一致性校驗(yàn)避免新參數(shù)與任務(wù)原有調(diào)度信息不匹配更新生效時(shí)機(jī)aclmdlRITaskSetParams/aclmdlRITaskDisable需要配合aclmdlRIUpdate才會(huì)生效修改后務(wù)必提交更新再執(zhí)行同步等待示例使用aclrtSynchronizeStreamWithTimeout超時(shí) 5000 ms而非無界等待回退場(chǎng)景下建議同樣采用帶超時(shí)的同步方式避免任務(wù)被禁用或參數(shù)異常時(shí)無限阻塞產(chǎn)品適配按 README該能力覆蓋 Atlas A2/A3 訓(xùn)練與推理系列及 Ascend 950PR/950DT運(yùn)行前請(qǐng)確認(rèn)目標(biāo)硬件型號(hào)。相關(guān)代碼與文檔索引示例 READMEREADME_en.md對(duì)應(yīng)中文版 README.md示例主邏輯model_task_fallback.cpp示例入口main.cppKernel 實(shí)現(xiàn)kernel/model_task_fallback_kernel.cpp構(gòu)建與運(yùn)行CMakeLists.txt、run.shModel RI 任務(wù)參數(shù)結(jié)構(gòu)體與接口聲明include/external/acl/acl_rt.h環(huán)境探測(cè)腳本example/set_sample_env.sh、example/common/resolve_cann_env.sh、example/tools/get_soc_version/get_soc_version.cpp小結(jié)0_model_task_fallback示例完整演示了 CANN Runtime Model RI 的捕獲—查詢—定位—修改—提交全鏈路通過aclmdlRICaptureBegin/End把兩次 Kernel 下發(fā)固化為可查詢的 Task 序列通過aclmdlRIGetStreams、aclmdlRITaskGetType、aclmdlRITaskGetSeqId、aclmdlRITaskGetParams唯一定位目標(biāo)任務(wù)再通過aclmdlRITaskSetParams、aclmdlRITaskDisable、aclmdlRIUpdate把切換主任務(wù)輸入 禁用后處理任務(wù)一次性提交并驗(yàn)證執(zhí)行結(jié)果。這一模式為故障容錯(cuò)、動(dòng)態(tài)降級(jí)和運(yùn)行時(shí)任務(wù)裁剪提供了不重建模型的輕量級(jí)實(shí)現(xiàn)思路也是理解 CANN Runtime 圖內(nèi)任務(wù)抽象Task 類型、TaskParams 聯(lián)合體、Stream/Task 層級(jí)查詢的最佳入門樣例。贊分享CANNAscend人工智能任務(wù)調(diào)度【免費(fèi)下載鏈接】runtime本項(xiàng)目提供CANN運(yùn)行時(shí)組件和維測(cè)功能組件。項(xiàng)目地址https://gitcode.com/cann/runtime點(diǎn)擊查看免費(fèi)下載相關(guān)推薦告別網(wǎng)盤限速煩惱這可能是最好用的網(wǎng)盤直鏈下載助手告別網(wǎng)盤限速煩惱這可能是最好用的網(wǎng)盤直鏈下載助手 你是否曾被網(wǎng)盤下載速度折磨得焦頭爛額面對(duì)幾十KB/s的龜速下載看著進(jìn)度條緩慢爬行那種煎熬讓人抓狂。更讓CANNAscend人工智能任務(wù)調(diào)度CANN Runtime 容錯(cuò)執(zhí)行指南基于 ACL-Graph 模型任務(wù)回退Model Task Fallback的降級(jí)處理實(shí)戰(zhàn)CANN Runtime 容錯(cuò)執(zhí)行指南基于 ACL Graph 模型任務(wù)回退Model Task Fallback的降級(jí)處理實(shí)戰(zhàn) 導(dǎo)讀 在推理或訓(xùn)練流水線CANNAscend人工智能任務(wù)調(diào)度CANN Runtime 模型運(yùn)行時(shí)實(shí)例Model RI任務(wù)更新實(shí)戰(zhàn)基于 aclmdlRICaptureTaskGrp 與 aclmdlRICaptureTaskUpdate 的算子級(jí)模型更新CANN Runtime 模型運(yùn)行時(shí)實(shí)例Model RI任務(wù)更新實(shí)戰(zhàn)基于 aclmdlRICaptureTaskGrp 與 aclmdlRICaptureCANNAscend人工智能任務(wù)調(diào)度上一篇Undecimus 項(xiàng)目推薦下一篇NVIDIA CUDA Samples 項(xiàng)目推薦創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考