Mistral系を1から — 小型高性能の欧州勢
パリ発のMistral AIはなぜ「小さいのに強い」を実現できたのか。Mistral 7Bのスライディングウィンドウ注意、Mixtralの疎なMoE、Codestralなどコード系の派生、そしてApache 2.0から始まって揺れ動いたライセンス方針までを、前提知識ゼロから通しで解説する。
南フランスの風の名を持つ会社
ミストラル(mistral)は、南フランスを吹き下ろす冷たく強い風の名前です。2023年5月、その名を掲げたスタートアップがパリで生まれました。創業者はGoogle DeepMind出身のArthur Mensch氏と、Metaで初代Llamaを作ったGuillaume Lample氏・Timothée Lacroix氏の3人です。
この会社の最初のモデル発表は、記者会見でもブログ記事でもありませんでした。2023年9月、SNSに投げられたBitTorrentのマグネットリンク1本。それが Mistral 7B で、ライセンスは Apache 2.0——商用利用も改変も再配布も届け出なしで自由、という態度表明でした。
この記事は2つの軸で系譜を追います。技術の軸=「小さいのに強い」をどんな仕組みで実現したかと、事業の軸=「全部Apache 2.0」から始まった方針がその後どう変わったかです。後者は製品に組み込むときの事故の元なので、後半でまとめて扱います。
そもそも「小さい」が価値になる理由
モデルの大きさ(パラメータ数)は、そのまま必要なメモリに効きます。重みを16bitで持つならパラメータ1個あたり2バイト。70Bなら重みだけで140GB前後になり、業務用GPUを複数枚束ねないと載りません。7Bなら14GB程度、量子化で4bit級まで圧縮すれば4GB前後——手元のノートPCの領域です。
つまり「13B級の賢さが7Bで出せる」は見栄えの話ではなく、動かせる場所と、同時に捌ける人数が変わるという話です。Mistralが一貫して狙ってきたのはここでした。
Mistral 7B の中身: 注意機構を2箇所けずる
Mistral 7Bのアーキテクチャは、Llama系と同じデコーダ専用Transformerです。違いは注意機構まわりの2つの節約にあります。
1つ目が GQA(グループ化クエリ注意)。生成中はKeyとValueを過去のトークン分ぜんぶ保持し続ける必要があります(KVキャッシュ)。GQAは複数のQueryヘッドで1組のKVを共有させ、この保持量を数分の1に減らします。効くのは主に推論の速度とメモリです。
2つ目が SWA(スライディングウィンドウ注意)。通常の自己注意は各トークンが文中の全トークンを見るので、計算量とメモリは文の長さ の2乗で増えます。SWAは各トークンの視野を直前 個(Mistral 7Bでは4096)に限定します。
言い換えると、「1トークンあたり 個ぜんぶ見る」のを「1トークンあたり 個だけ見る」に変えたので、総コストが の2乗ではなく に比例する形へ落ちる、ということです。 は固定値なので、文が伸びてもコストの増え方は直線的です。
「視野が4096しかないなら、それより遠い単語は無視されるのでは?」と思うところですが、層を重ねると視野が伸びます。1層目でトークンは直前4096個を吸い込み、2層目ではその「吸い込み済みのトークン」を見るので、実質8192個先まで届く。層数を とすれば、
つまり、届く距離は「窓の幅 × 層の数」でおおよそ決まる、ということです。CNNで層を重ねると受容野が広がるのと同じ理屈です。
GQAやSWAを含む改良版の全体像はAttentionの変種にまとめてあります。
Mixtral 8x7B: 8人の専門医、担当は2人だけ
2023年12月、Mistralはまたマグネットリンクを投げました。Mixtral 8x7B、これもApache 2.0です。
名前から「8×7=56Bのモデル」と読みたくなりますが、違います。総パラメータは 46.7B、そして1トークンを処理するときに実際に使われるのは 12.9B だけ。この数字は MoE(Mixture of Experts、専門家の混合) という構造から来ています。
比喩でいうと大きな病院です。院内に専門医が8人いても、患者1人に全員が付くわけではない。受付(ルータ)が症状を見て、合った2人だけを呼ぶ。だから病院としては8人分の給料が要る(メモリ)が、1人の診察にかかる時間は2人分で済む(計算)わけです。
具体的には、Transformerブロックの中の FFN(順伝播層)だけが8個に分裂しています。注意機構は8個とも共有です(だから総パラメータが56Bにならない)。各トークンに対し、ルータと呼ばれる小さな線形層が8個の専門家に点数をつけ、上位2個を選んで重み付きで足し合わせます。
コメント
コメントにはログインが必要です