WirelessWire News Technology to implement the future

by Category

加熱するLLM開発競争に冷や水、オープンモデルの組み合わせだけでGPT-4o越えの事実

2024.06.21

Updated by Ryo Shimizu on June 21, 2024, 18:19 pm JST

世界中の企業や政府が狂ったようにNVIDIAのGPUを買い漁る流れはそろそろ潮時かもしれない。
いくつかの興味深い事象が起きているからだ。

昨日発表されたKarakuri社のLLM、「KARAKURI LM 8x7B Instruct v0.1」は、非常に高性能な日本語LLMだ。Karakuri社は今年の一月にも非常に高性能な70Bモデルを引っ提げて業界に旋風を巻き起こした。この最新のLLNは、日本語向けオープンLLMとしては初の「命令実行」チューニングを施されている。それだけでなく、RAGと呼ばれる、複数の知識を組み合わせてより正解に近い答えを導く技術や、Function Callingという、LLMが必要に応じて足りない知識や計算を補うために外部に対して情報収集命令を発行して能動的に情報を集めるといった機能が搭載されている。

ソフトバンクイントゥイションも先日65B規模のオープンソースLLMを発表したが、これと比べても今回の「KARAKURI LM 8x7B Instruct v0.1」は頭ひとつか二つ飛び抜けている。

特筆すべきことは、Karakuriの日本語最高性能を誇るLLMの開発にかかった計算費が、たったの75万円だと公表されていることである。750万円の間違いかもしれない(実際、1月に発表した70Bモデルは1000万程度という話だった)が、それにしても圧倒的な低コストだ。NVIDIAのGPU、H100は今500万円以上する。

ではどうしてKarakuriはこんな低予算で日本語最高性能のエージェントLLMを作ることができたのか。それはNVIDIAのGPUを使っていないからだ。
Karakuriが使用するのはAmazonが開発したAI学習専用チップ Trainium(トレイニウム)である。

おそろしくマイナーなチップで知る人は少ないが、Trainium用の学習ソフトウェアパッケージはAmazonが公開しており、Karakuri社のブログでも詳細に「LLMの作り方のレシピ」が公開されている。

いまLLMを作れという命令が世界中の企業で発令されているだろうが、それには大量のNVIDIAのGPUが絶対に必要であるというのが常識だった。
NVIDIAは独占企業であり、ついに時価総額世界一になった。しかし今この瞬間が彼らの栄華の頂点かもしれない。

さらにAmazonは、推論専用チップとしてInferentia2を開発しており、実際、Karakuri社のデモサイトで誰でもこのLLMとAmazonのInferentia2チップの性能を体験することができる。控えめに言ってGPT-4oと遜色ないスピードで結果が出てくるし、それなりに賢い。

さらに驚くべきことに、二週間ほど前に発表された「Mixture-of-Agents(エージェントの合成)」という論文がある。
この論文では、すでに公開されているオープンLLMを8つ組み合わせて使うだけで、GPT-4o単体の性能を上回るベンチマーク結果となったと主張している。

そのソースコードが公開され、筆者は大概のことで驚かなくなったものの、やはり驚いてしまった。

この論文を要約すると、オープンなLLMを4〜6個組み合わせ、一つの質問に対してそれぞれのLLMを「プロポーザー(提案者)」と「アグリゲーター(まとめ役)」に役割分担し、何度かディスカッションをすることで回答の品質が最終的にGPT-4oを上回るのだと言う。

しかも、LLMの組み合わせによってGPT-4oと同等の性能だが計算効率は圧倒的に高いMoA-Liteと、GPT-4oより計算量も少なくさらに高性能なMoAの二つが提案された。

組み合わせるLLMの種類によってプロポーザー向きのLLMとアグリゲーター向きのLLMがあり、それらの組み合わせに関する考察も論文には盛り込まれている。

しかし一番驚いたのは中身で、この驚異的なコストパフォーマンスと性能向上を実現するプログラムの本体は、わずかこれだけでしかない(https://github.com/togethercomputer/MoA/blob/より抜粋。コメントは筆者)


data = {
"instruction": [[{"role": "user", "content": instruction}]] #ユーザーからの入力
* len(reference_models),
"references": [""] * len(reference_models),
"model": [m for m in reference_models], #ここに全てのモデルを入れる
}

eval_set = datasets.Dataset.from_dict(data)

with console.status("[bold green]Querying all the models...") as status: #すべてのモデルに問い合わせ中
for i_round in range(rounds): # 何回か繰り返す
eval_set = eval_set.map(
partial(
process_fn, #process_fnはモデルに推論させてるだけ
temperature=temperature,
max_tokens=max_tokens,
),
batched=False,
num_proc=num_proc,
)
references = [item["output"] for item in eval_set]
data["references"] = references
eval_set = datasets.Dataset.from_dict(data)



def inject_references_to_messages(
messages,
references,
):

messages = copy.deepcopy(messages)

#このプロンプトで複数のLLMから得た意見を集約し、結論としている
system = f"""You have been provided with a set of responses from various open-source models to the latest user query. Your task is to synthesize these responses into a single, high-quality response. It is crucial to critically evaluate the information provided in these responses, recognizing that some of it may be biased or incorrect. Your response should not simply replicate the given answers but should offer a refined, accurate, and comprehensive reply to the instruction. Ensure your response is well-structured, coherent, and adheres to the highest standards of accuracy and reliability.

Responses from models:"""
"""日本語訳すると「最新のユーザー クエリに対するさまざまなオープンソース モデルからの一連の応答が提供されています。あなたの仕事は、これらの応答を 1 つの高品質な応答に合成することです。これらの回答で提供された情報には偏りや不正確なものがある可能性があることを認識し、批判的に評価することが重要です。回答は、与えられた回答を単に再現するだけでなく、指示に対する洗練された正確かつ包括的な回答を提供する必要があります。応答が適切に構成され、一貫性があり、最高の精度と信頼性の基準に準拠していることを確認してください。

モデルからの応答:」"""

for i, reference in enumerate(references):

system += f"\n{i+1}. {reference}"

if messages[0]["role"] == "system":

messages[0]["content"] += "\n\n" + system

else:

messages = [{"role": "system", "content": system}] + messages

return messages

たったこれだけなのだ。
先週発表されたSakana.aiのDiscoPOPも本体がほぼプロンプトで驚いたが、これはそれ以上にシンプルだ。

世界中の大企業が何千億、ひょっとしたら合計して何兆円という金額をGPUに浪費している間に、強かな人たちは既存の技術の手軽な組み合わせで大きな進歩を成し遂げようとしている。

面白い時代だ。
筆者も早速、日本語のオープンLLMをMixture-of-Agentsで組み合わせを試すつもりだ。
これとDiscoPOPを組み合わせて、日本語LLMの最適な組み合わせをGPTまたはLLM自身に評価させるというのも面白い。

いつの時代も、知恵のないものは金を浪費することしかできないのだ。

WirelessWire Weekly

おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)

登録はこちら

清水 亮(しみず・りょう)

新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。

RELATED TAG