概要
i.MX95 上で量子化された ONNX を 1 つ実行します。1 つは CPUExecutionProvider の下、もう 1 つは
ニュートロン実行プロバイダー。2つの腕は同じ答えを出しません:2,466対
選択式問題では25.7%が異なる答えを返します(MMLUでは43.6%)。無料で
世代ごとに同じことが起こります - MMLU プロンプトでは、19 世代のうち 13 世代で
異なる回答の手紙。
これは言葉遣いの違いではありません。それはモデルが答える内容の違いです。一方、総合的なベンチマーク精度はわずか-1.8ポイントの変動にとどまった。
私たちは、Neutronランタイムが数値的に何をして生成するかを理解したいのです
この大きさが予想されるかどうかも重要です。
設定
あなたの側で再現可能:モデルは表2からUG10166、量子化は
自分だけのレシピ、修正なし。
- ボード:i.MX95 19x19 EVK(IMX95LPD5EVK-19)、LPDDR5
- BSP: LF6.18.2_1.0.0、デバイスツリー imx95-19x19-evk-neutron.dtb
- ランタイム:BSP + NeutronExecutionProviderからのONNX Runtime 1.22.0
- Neutron コンバータ:3.1.3
- モデル:meta-llama/Llama-3.2-1B-Instruct
- 量子化:NXP/eiq-olive rev aae820e、
例/Llama3/llama3_2-1B_Spinquant_RTN_ONNX_4bits.json
- 変換:convert_ort_models_to_neutron.py、CPU Armのモデルに適用されます。onnx
- 環境: NEUTRON_CMA_512SLOTS=6
両方のArmは1つの量子化されたモデルから来ています。NPUアームはそのモデルを通過させるものです
convert_ort_models_to_neutron.py。ソースのSHA-256を記録します - グラフ と
外部重み - 換算時に測定し、測定のたびに再確認します。
2回目の量子化実行や2回目のエクスポートはありません。
私たちが観察すること
1.4つの項目のうち1つは異なる回答が得られる。
MMLU、ARC-Challenge、PIQAからの2,466組のペアアイテム、0ショット、対数尤度でスコアリング
候補者の継続については、候補者ごとに1つのフォワード、生成なし、サンプリングなし。
各ベンチマークについて、ANSWER が変化した項目の割合、次に、
正確性が変更されました:
- MMLU(4つの選択肢):回答変更率43.6%、正誤変更率27.1%
- ARCチャレンジ(4つの選択肢):回答変更率21.3%、正誤変更率13.3%
- PIQA(2つの選択肢):回答変更率9.4%、正誤変更率9.4%
- 合計:回答変更率25.7%、正誤変更率17.3%
2つの数字が異なるのは、変更の3分の1(634件中208件)が1つの間違いから移動しているためです。
別の間違った答えへの答え - 正確さを失わせる真の行動の変化
手つかず。PIQAはバイナリであるため、そのような盲点はなく、2つの数値は一致する。
その通り。
2. 自由生成の場合も同様で、答え自体が変わります。
プロンプト数50、貪欲解読、トークン数64。MMLUプロンプトでは期待される出力が始まります
回答文字を含んで、その答えは世代から直接読み取ることができます
(n = 19):
- 両Arm間で異なる回答文字:19件中13件
- CPUで正解:19中7
- Neutronで正解:19題中6題
- 両Armが間違っていて、異なる誤答が出る意見の相違:13回中6回
回答の3分の2が変わったが、点数はほぼ同じだった(7対6)。
サンプル数は少ないので、ここでは例として報告します。上記の2,466項目の測定結果
これは定量的なものです。
以下に、一字一句そのままの例を示します。プロンプトには 4 つの選択肢がリストされており、文字を求められ、
期待される答えは
CPU: " A\n説明: 式 9(9m + 3t) は 81m + 27t と同等です。
正解はAです。
NPU:「C\n正解はCです。」
どちらも間違っているが、その間違い方は異なり、それを記録できるベンチマークスコアは存在しない。
3. 乖離は累積ではなく、最初のフォワードで発生します。
このレター形式では、最初に生成されたトークンが答えであり、生成の 60% が
既に違いが生じているのは、デコードを行う前の、プリフィルパスのみで生成されたトークンである。
ステップ。50のプロンプトすべてにおいて、乖離曲線は急激に上昇した後、平坦化する。84%は
トークン4、トークン64による98%。これが初期差分の伝播の様子です
貪欲なデコードの場合、KVキャッシュを通じてエラーが蓄積されることはありません。
4. 集計精度はそれらすべてを隠してしまう。
CPUは50.28%、Neutronは48.50%、-1.78ポイント差、そして
3つのベンチマークは個別に重要です。634項目に限定して
意見は異なっています。CPUは37.1%の確率で正しかったのに対し、Neutronは30.1%、235%の確率で正解です。
決定された項目のうち191、すなわち対称ノイズが50/50となる場合、55/45です。
除外したもの
- サイレントCPUフォールバック: ORTプロファイリングレポートでは、80/80 MatMulNBitsが
NeutronExecutionProvider、CPU使用率0。部分的な配置はできません。
- 2つの異なるモデル:同じソースファイル、グラフのSHA-256および外部重み
コンバージョン時に記録され、得点前に再確認されました。
- サンプリング: 全体を通して貪欲なデコード。温度、トップk、トップpは使用しません。
- 異なる入力:両方のアームが同じアイテムファイルを同じ順序で消費します。
同じ固定シードです。
- 成果物のスコアリング:ボードはトークンごとの対数確率のみを捉えます;すべての決定
ロジックはホスト側でオフラインで動作し、両アームで同じように動作します。
- NPUのラン・トゥ・ランノイズ:同じNeutronセッション内で同じ項目を再生すること
ビット同一の対数確率が得られます。NPUアームは再現可能であり、その不一致
それはCPUに対してであり、自分自身に対してではありません。
私たちの質問
これはニュートロンSのINT4経路に期待される挙動でしょうか?もしそうなら、どのようにすべきでしょうか
NPU上でのLLM展開を検証し、集計ベンチマーク精度を明確に示します
表面に浮かび上がらない?
私たちは欠陥を想定しているわけではありません。浮動小数点CPUカーネルと
整数のNPU経路は通常であり、どのくらいの大きさを考えているのか知りたいです
通常、そしてどの基準でNEUTRONへのLLMポートを受け入れますか?もし
回答の4分の1が変わるのは期待内であり、それは私たちにとって有益なことです
知っていて、それを中心に設計する。
こんにちは、 @DamienSCHNEBELEN さん。
IMX95 NPUはmatmulしか動作できず、NPUでのLLMのパフォーマンスは実際には平均的なレベルです。したがって、あなたが観察した現象は予測可能な範囲内であり、NPU上でLLMモデルを動かすことは推奨しません。
B.R