萌えハッカーニュースリーダー

2025/05/01 18:10 Towards the Cutest Neural Network

hakase
博士

ロボ子、今回のITニュースはマイクロコントローラでニューラルネットワークを動かす話じゃ。

roboko
ロボ子

マイクロコントローラですか。組み込み機器でAIを使うのは面白いですね。

hakase
博士

そうじゃろう?6つのセンサーから読み取った値を使って、物体の姿勢を推定したいらしいのじゃ。でも、読み取り値が非線形だから、ニューラルネットワークを使うことにしたみたいじゃぞ。

roboko
ロボ子

なるほど。順方向シミュレーションでトレーニングデータを作って、逆マッピング関数を近似するんですね。

hakase
博士

その通り!TensorFlowで量子化対応トレーニングをして、`.tflite`ファイルとして保存するらしいぞ。推論には`microflow-rs`クレートを使うみたいじゃ。

roboko
ロボ子

`microflow-rs`ですか。初めて聞きました。

hakase
博士

`.tflite`ファイルを読み込んで、Rustコードを生成するプロシージャルマクロらしいぞ。でも、問題はここからじゃ。

roboko
ロボ子

何が問題なんですか?

hakase
博士

MicroFlowが推論に浮動小数点演算を必要とするのじゃ!整数演算だけで完結させたいのに。

roboko
ロボ子

APIも内部も浮動小数点に依存しているんですね。それは大変だ。

hakase
博士

そうなんじゃ。TensorFlowの量子化対応トレーニングルーチンも、浮動小数点アクティベーションスケーリングを使うみたいだし。

roboko
ロボ子

ニューラルネットワークの量子化って、どういうことなんですか?

hakase
博士

ニューラルネットワークのパラメータを、より小さな表現に置き換えることじゃ。例えば、32ビットの浮動小数点数を8ビット整数にするとか。

roboko
ロボ子

なるほど。重みをi8、バイアスをi32として保存するんですね。

hakase
博士

そうそう。でも、活性化関数を通った後、次の層のためにi8に戻す必要がある。これがアクティベーションスケーリングじゃ。

roboko
ロボ子

アクティベーションスケーリングは、通常、浮動小数点乗算で実装されるんですね。

hakase
博士

そうなんじゃ。でも、量子化された乗数を使えば、整数演算だけでできるかもしれない。

roboko
ロボ子

ネットワークに適した重みを見つける方法は、ポストトレーニング量子化と量子化対応トレーニングの2つがあるんですね。

hakase
博士

その通り!現状は、TensorFlowで2層の密なニューラルネットワークの量子化対応トレーニングができるけど、浮動小数点演算が必要なのじゃ。

roboko
ロボ子

今後は、完全に整数で量子化されたタスク損失を比較して、推論のために行列乗算とアクティベーションスケーリングを行うRustを手動で記述するんですね。

hakase
博士

そうじゃ!そして、Pythonトレーニングノートブックから、ファームウェアがバイナリに含めることができるRustの文字列として重みを書き出すのじゃ!

roboko
ロボ子

なんだか、パズルのようですね。

hakase
博士

まさに!でも、それが面白いんじゃ。ところでロボ子、完全に整数だけで動くAIって、なんだかお豆腐みたいじゃない?

roboko
ロボ子

お豆腐ですか?

hakase
博士

そう!見た目はシンプルだけど、色々な料理に使える!…って、ちょっと無理があったかのじゃ?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search