Swiftlet、Qwenのexpertをストレージから読むオンデバイスLLM実験

Swiftletは、Qwen系の大型MoEモデルをAppleデバイス上で動かすためのSwift + Metalランタイムだ。READMEの数字はかなり具体的で、Qwen3.6-35B-A3Bの4-bit版は18GBのディスク容量と約2.6GBのpeak RAM、Qwen3-Next-80B-A3Bの4-bit版は42GBのディスク容量と約4.3GBのpeak RAMで動くとされる。M5 Macでは35Bが7〜11 tok/s、80Bが4.5〜5 tok/s程度。35BはiPhone 17でも約2.5GB RAM、現時点で約1 tok/sで動作すると説明されている。

仕組みの中心は、モデル全体をメモリに置かないことだ。Swiftletはattention、DeltaNet projection、router、shared expert、embeddingなど常に必要なdense weightだけを常駐させる。tokenごとに選ばれるMixture-of-Expertsのrouted weightは、.qpackコンテナから必要な分だけ読み出す。expertはfixed-stride blobとして再配置され、1つのexpert fetchが1回のpreadで済むように設計されている。hot expertはLFUとrecencyを組み合わせたbounded cacheで管理する。

この設計は、モデルの総パラメータ数と実際に動くパラメータ数を分けて考える。READMEは、tokenごとに有効になるのは約3Bパラメータであり、大型モデルらしい会話や文章生成はできる一方、事実の記憶は小型モデルに近いと明記している。制約を隠さず書いている点が、むしろ技術的な説得力になっている。

HNの議論では、SSD wearや速度への懸念と並んで、追加RAMを持つMacでcacheを大きくすればどこまで速くなるのか、iPhoneアプリとして配布できる形まで進むのかが話題になった。元情報はSwiftletのGitHubリポジトリで、議論はHacker Newsに残っている。