:Timer-S1 在昇騰上 max_abs_error 僅 0.0125)
CPU 與 NPU 精度對比實戰(zhàn)Timer-S1 在昇騰上 max_abs_error 僅 0.0125【免費下載鏈接】timer-s1-npu項目地址: https://ai.gitcode.com/atlasleong/timer-s1-npuTimer-S1 是字節(jié)跳動開源的時間序列基礎(chǔ)模型采用 decoder-only 的 MoE Transformer 架構(gòu)總參數(shù)約 8.3B、每 token 僅激活 0.75B可零樣本輸出 9 個分位的預(yù)測結(jié)果。在將 Timer-S1 遷移到昇騰 NPU 的實戰(zhàn)中我們通過 CPU 與 NPU 精度對比驗證了推理數(shù)值的一致性在固定輸入下max_abs_error 僅 0.0125mean_abs_error 0.0031離散分類輸出完全一致。本文完整復(fù)盤這次 CPU 與 NPU 精度對比的評測方法、判定標(biāo)準(zhǔn)與復(fù)現(xiàn)步驟幫你在昇騰 NPU 上快速建立大模型推理精度驗證的完整流程。認(rèn)識 Timer-S1用基礎(chǔ)模型做時間序列預(yù)測 Timer-S1 是一個億級參數(shù)的時間序列基礎(chǔ)模型Time Series Foundation Model與 LLM 類似它經(jīng)過海量時序數(shù)據(jù)預(yù)訓(xùn)練可以直接對未見過的數(shù)據(jù)集做零樣本zero-shot預(yù)測無需額外微調(diào)。它的核心特性包括架構(gòu)decoder-only MoE Transformer24 個基礎(chǔ)層 16 個 MTP 層規(guī)模總參數(shù)約 8.3B激活參數(shù)約 0.75B32 個專家、每 token 激活 2 個輸入原始浮點時間序列(batch, lookback)本項目固定為(1, 288)輸出分位數(shù)預(yù)測 logits形狀(1, 9, 16)即 9 個分位0.10.9× 16 個預(yù)測步在 model/README.md 中可以看到官方的 Quickstart 用法加載模型后直接model.generate(seqs, max_new_tokens256, revinTrue)即可得到分位數(shù)預(yù)測。模型的定制實現(xiàn)代碼位于 model/modeling_TimerS1.py、model/configuration_TimerS1.py 與 model/ts_generation_mixin.py。為什么要做 CPU 與 NPU 精度對比大模型在 CPU 上通常以 float32 精度計算而昇騰 NPU 為了提升吞吐和顯存效率常以 bfloat16 精度進行前向推理。兩種精度的浮點表示范圍與舍入方式不同遷移后輸出數(shù)值可能產(chǎn)生微小偏差。對于時間序列預(yù)測這類對數(shù)值敏感的任務(wù)需要回答一個問題同樣的權(quán)重、同樣的輸入NPU 算出來的結(jié)果和 CPU 參考結(jié)果差多少還能不能信任這正是 CPU 與 NPU 精度對比的價值所在——它不是能不能跑通的冒煙測試而是量化級的數(shù)值一致性驗證。CPU 與 NPU 精度對比的評測方法 本項目的精度對比遵循嚴(yán)格的可復(fù)現(xiàn)流程保證結(jié)果真實可信固定輸入固定隨機種子 42生成確定性輸入序列(1, 288)輸入前 8 個值為1.9269, 1.4873, 0.9007, -2.1055, ...確保每次運行完全一致同一權(quán)重快照CPU 與 NPU 使用同一份固定 revision 的模型權(quán)重4 個 safetensors 分片共約 16.6 GB對比對象對position_logits逐元素計算絕對誤差并對比離散派生輸出class_ids判定指標(biāo)max_abs_error最大絕對誤差mean_abs_error平均絕對誤差discrete_outputs_equal離散分類輸出是否一致核心結(jié)果max_abs_error 僅 0.0125 ?這是整個 CPU 與 NPU 精度對比中最亮眼的數(shù)據(jù)全部來自真實測量README.md 第 6.1 節(jié)指標(biāo)實測值position_logits形狀(1, 9, 16)max_abs_error0.012511014938354492約 0.0125mean_abs_error0.0031260023824870586discrete_outputs_equaltrueCPU / NPU 的class_ids均為[8]NaN / Inf無重復(fù)前向max_abs_diffCPU / NPU 各自為0.0也就是說NPU 上 bf16 推理與 CPU 參考輸出相比最大單點誤差只有 0.0125平均誤差僅 0.0031且重復(fù)前向結(jié)果完全確定0.0 差異說明昇騰 NPU 上的推理結(jié)果穩(wěn)定可靠。為了讓結(jié)論更扎實項目還做了10 樣本回歸測試10 個獨立子進程、共 1440 個元素max_abs_error為 0.0197mean_abs_error為 0.0030離散輸出匹配 10/10。最終判定acceptedtrue閾值max_abs_error≤1.0、mean_abs_error≤0.1、discrete_agreement_min≥0.8實測精度遠(yuǎn)超閾值要求。NPU 推理結(jié)果實測證據(jù) 下圖是模型在昇騰 NPU 上最終適配驗收的真實日志截圖可以看到完整的輸出標(biāo)記輸入序列特征、分位數(shù)預(yù)測FORECAST、離散分類PREDICTED_CLASS8以及INPUT_DEVICEnpu:0、CPU_FALLBACKfalse、EXIT_CODE0等關(guān)鍵狀態(tài)日志中INFERENCE_WALL_MS391.713642是單次同步前向的墻鐘耗時分位數(shù)預(yù)測的中位行均值FORECAST_MEAN0.075945、標(biāo)準(zhǔn)差0.022661與精度對比階段的證據(jù)完全吻合。昇騰 NPU 設(shè)備與運行環(huán)境 ??本次 CPU 與 NPU 精度對比運行在昇騰 910B4 上。下圖為npu-smi設(shè)備快照展示了 NPU 芯片的功耗、溫度、HBM 內(nèi)存占用以及推理進程狀態(tài)組件版本硬件Ascend 910B4-1邏輯npu:0操作系統(tǒng)openEuleraarch64CANN8.5.1torch / torch_npu2.9.0transformers4.57.6Python3.11.14注意交付腳本通過torch.npu.is_available()強校驗 NPU 可用不降級到 CPUCPU_FALLBACKfalse保證了精度對比的雙方確實是NPU 真實計算而非 CPU 回退。端到端適配工作流 從模型下載、源碼安全審計、CPU/NPU 精度對比到性能評測與最終交付整個過程被記錄為可追溯的適配工作流。下圖展示了各階段的執(zhí)行記錄整個流程的關(guān)鍵結(jié)論模型是純 PyTorch 實現(xiàn)、無 CUDA 專屬 API通過torch_npu注冊的 NPU 后端即可運行無需打遷移補丁這也是精度對比結(jié)果如此干凈的前提之一。如何復(fù)現(xiàn) CPU 與 NPU 精度對比 ?如果你想親手復(fù)現(xiàn)這份精度對比結(jié)果操作非常簡單git clone https://gitcode.com/atlasleong/timer-s1-npu cd timer-s1-npu python inference.py倉庫內(nèi)的核心文件inference.py交付推理腳本自包含、無外部依賴執(zhí)行權(quán)重完整性校驗CHECK_WEIGHTS_OK4/4→ warmup 前向 → 計時前向 → 證據(jù)落盤校驗ASSETS_VERIFIEDtruemodel/完整模型快照4 個 safetensors 分片 配置文件 定制建模代碼assets/推理證據(jù)數(shù)組與摘要inference_summary.json 記錄了median_forecast、forecast_mean、inference_wall_ms等真實結(jié)果requirements.txt交付運行依賴torch / torch_npu 由昇騰 worker 鏡像固定不從 PyPI 安裝復(fù)現(xiàn)完成后你可以對比position_logits.npy與 CPU 參考輸出自行計算max_abs_error——預(yù)計你會得到與本文一致的結(jié)論約 0.0125。總結(jié) ?通過這次 CPU 與 NPU 精度對比實戰(zhàn)我們可以確認(rèn)Timer-S1 在昇騰 NPU 上以 bf16 精度推理與 CPU float32 參考結(jié)果的最大絕對誤差僅 0.0125平均誤差 0.0031離散分類輸出完全一致完全滿足大模型推理的數(shù)值一致性要求。這套固定種子 同一權(quán)重 雙端對比 閾值判定的精度驗證方法論同樣適用于其他大模型在昇騰 NPU 上的遷移驗證。如果你正在做 NPU 推理適配建議把max_abs_error作為每次發(fā)布的必查指標(biāo)——數(shù)據(jù)會告訴你遷移是否真正無損。【免費下載鏈接】timer-s1-npu項目地址: https://ai.gitcode.com/atlasleong/timer-s1-npu創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考