AI compiler に向けたとりくみでは、PLaMo 3 31BをMN-Core L1000向けに全自動ポーティングした結果を報告しました。AI agentにHugging Faceにあるモデルをわれわれのコードベースを使って、人間の介入なく移植させ、エミュレータ上での推論で結果を確認するところまでをさせた試みです。その後、対象を広げ、移植すべきモデル群と優先順位を与え、各モデルの移植を手順も含めてAI agentに自律的に選択させて、大規模な移植作業をさせました。結果、同一アーキテクチャのモデルを1つとして数えた場合、Hugging Faceにある人気スコア (ダウンロード数といいね数を log10(30日ダウンロード数+1) + log10(いいね数+1) で混合し、片方だけ多いモデルが上に来づらく調整してあります) 上位の373モデルをふくむ、合計711モデルの移植に成功しました。Hugging Face上のdecoder-onlyでテキスト生成をするモデル約2300モデルのダウンロード数の99%をカバーしています。
Preferred Networksは大きな会社ではないこともあり、新しいモデルが発表されてから、自社チップで動かすまでの時間が、長年の課題でした。AI agentをフル活用して移植を自動化し、MN-Coreを導入してくださった方が、動かしたいモデルを動かせる環境が整いつつあります。
表1: 移植したテキスト生成モデル (画像入出力が可能なものはテキスト部分のみ) の一例
モデル | 規模 | 構造 |
2.8T | MoE | |
1.65T | MoE | |
561B | MoE | |
402B | MoE | |
379B | MoE | |
270B | MoE | |
237B | MoE | |
117B | MoE | |
128B | Dense | |
106B | MoE | |
33B | Dense | |
30B | Dense |
方針と今後の課題
今回は作業量が多く、3500ファイル以上を編集し、コード行数は100万行を超えました。当然のことながら詳細を人間が把握・管理することは現実的ではありません。おおざっぱな方針をAI agentと相談し、実行しながら進めかたを調整しました。前もって予想していなかった問題には、その都度ポリシーなどを定める、というようなことをしました。
移植難易度が高いアーキテクチャは、まずひとつのagentに集中して取り組ませ、成功したらそれを似たモデルに横展開する、というのを基本的な戦略としました。種々のリソース制約があるため、全てを並列でやると費用対効果が悪くなるからです。
作業は週末を中心に3,4週間ほどでした。試運転や最後の詰めの段階では並列性を落としていましたが、ピーク期間には100以上のagentが動作していました。そのあいだに、前もって予測しづらかった問題もいくつか出て、それらは人間が対処する必要が出てきました。たとえばコンポーネント種別ごとに使うべきdtypeを定めておいたのですが、その例外を許可すべきか、というようなものがあります。
今後の課題としては、最適化があります。今回の移植は、移植に成功すれば、ある程度速度を出す前提のコードベースでおこなわれていて、10倍を越えるような大幅な最適化の余地を残しているようなものはありません。しかし、数倍の最適化がありえるものも多く残っています。この後、AI agent中心で最適化をさせると、達成可能な最大性能の7割くらいは達成できることが多いものの、その後の職人芸的な最適化はまだまだ人間の介入が必要であることが多く、重要な課題として残っています。


