Open1

NPUのコンテキスト・スイッチ

堀江誠一堀江誠一

MicrosoftのCopilot PCマーケティングによって、NPU搭載パソコンが1,2年のうちに街中にあふれかえることになる。そうなったとき、複数のAIタスクの切り替えはどうするのだろう。

20年前は「GPGPUなんか本当に必要か?」と思っていたのが、今ではバックグラウンドでGPUがちょこちょこ動いている。応用も画像どころか音声にまで広がり、複数の用途に使いまわすところまで来た。

「マルチコアなんか作られてもソフトが対応できない」と言われていたが、今は細かいスレッドをプログラミング言語レベルで気軽に作り出す時代だ。

「何に使うの?」と言われているNPUも、2,3年で複数のタスクが使いまわすことになるだろう。MSはそこまで見通しているはずだが、どう考えているのだろう。

Convolutional Neural Networkの頃なら話は簡単だった。画像認識が終わったらネットワーク内部のパイプラインをいったんフラッシュしてネットワークをスイッチし、別ネットワークのコンテキストを最初からやり直しても良かった。

Recurrent Neural Network以降は、パイプラインをフラッシュすると処理を再開しても結果が不連続になる。なので今時のみんなが欲しがるようなネットワークだと、タスクスイッチ時に内部状態を丸々保存しなければならない。つまり、コンテキストの退避と復帰が必要になる。

CPUのコンテキスト・スイッチは

  • Program Counterで処理の中断位置・再開位置を明示できる
  • Stackを使ってコンテキストを退避・復帰できる

点に強く依存している。

しかしNPUのうちいくつかは非ノイマン的なはずだ。そうでないものも非ノイマン・アーキテクチャに変化していくだろう。AIの処理構造がデータフロー的なので、アーキテクチャがそちらに向かっていくのは自然なことだ。だとすると、Program CounterやStackは無いと考えた方がいい。

AIの内部コンテキストはどのように退避・復帰するのだろう。膨大なサイズの内部状態を高速に扱えるよう、NPUの内部構造は非ノイマン的になっているだろう。それをシリアライズするだけでも頭が痛くなるし、外部のノイマン的なストレージに保存する時のオーバーヘッドはかなり苦痛を伴うはず。

AI分野では"Context"がプログラマの考えるそれとは別の領域を表す言葉として使われているので、検索汚染が発生して探しにくいのも困ったもの。