Category Archives: AI

CyberAgentLM3-22B-Chat (CALM3-22B-Chat)の機械翻訳性能

公式のニュースリリースや論文発表はされていない気がするが[1]、HuggingFaceリポジトリでCALM3 22Bが公開されていた(cyberagent/calm3-22b-chat · Hugging Face

いつもの設定で機械翻訳性能を検証してみた。性能評価に使用したデータは以前(DAMO PolyLM-13Bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp))と同じ。検証環境は環境はColab Pro+ (A100)を用いリポジトリの推奨設定[2]でロードしている。

前回のGemma 2 9Bと同様に余計なトークンが入ることが少なく[3] GPT-4oを用いた回答部分の特定は行っていない。評価指標はBLEU、使用したツールやtokenizerは以前と同じ(sacrebleu –tokenize ja-mecab)である。「0 shot」と「1 shot」の比較でICLやRAGなどプロンプト内にデータを与えた時の性能をザックリとみる事ができる。いつもの通り非常に限定された機械翻訳ベンチマークであることに注意が必要である。

モデル0 shot1 shot
cyberagent/calm3-22b-chat · Hugging Face24.738.9
CALM3-22B-Chatの機械翻訳性能(BLEU)

結果と所感

Gemma 2 9Bと比べると評価が難しいが性能はかなり高い。Gemma 2 9Bとのスコア差は今使っているベンチマークが機能していない可能性高く要再検証であると思う[4]。

日本の会社による高性能LLMがApache 2ライセンスで公開されている意義は大きい。他のベンチマークでの検証結果も気になるところ[5]。

脚注

[1] Xでは話題になっている。
[2] model = AutoModelForCausalLM.from_pretrained(“cyberagent/calm3-22b-chat”, device_map=”auto”, torch_dtype=”auto”)
[3] <|im_start|>assistant ~ <|im_end|>をとる方針で十分だった。
[4] 外務省のページが自動取得不可になったようで他の省庁のデータでベンチマークを再構成中
[5] Nejumi LLMリーダーボード3 | llm-leaderboard3 – Weights & Biases (wandb.ai) はかなり参考になる

Gemma 2 9Bの機械翻訳性能

GoogleからGemma2がリリースされた[1]。9B[2]と27Bが公開されている。Llama3を超える性能とのことで検証してみた。性能評価に使用したデータは以前(DAMO PolyLM-13Bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp))と同じ。検証環境は環境はColab Pro+を用いた。 量子化によって性能が変わるという話もあり、量子化方針を変えて実験している。

Gemma2は回答に余計なトークンが入ることが少なく[3]、本件の検証ではGPT-4oを用いた回答抽出は行っていない。評価指標はBLEU、使用したツールやtokenizerは以前と同じ(sacrebleu –tokenize ja-mecab)である。「0 shot」と「1 shot」の比較でICLやRAGなどプロンプト内にデータを与えた時の性能をザックリとみる事ができる。いつもの通り非常に限定された機械翻訳ベンチマークであることに注意が必要である。

モデルと量子化0 shot1 shot
google/gemma-2-9b-it · Hugging Face / 16bit [4]29.143.5
google/gemma-2-9b-it · Hugging Face / 8bit [5]29.342.5
google/gemma-2-9b-it · Hugging Face / 4bit [6]25.440.2
Gemma 2 9BのBLEU

結果と所感

Gemma2 9Bの機械翻訳は非常に高く商用モデルに匹敵している[7]。訳抜けなど若干の問題はあるとはいえ1 shotであれば機械翻訳モデルとしても実用に達していそうな性能。この品質が公開モデルで達成できることに正直驚いた[8]。

量子化による性能劣化は8bitまでは大きくなさそうに見えるが、4bitまで落とすとさすがに影響が出ている。

蒸留を介している構築方針も興味深くNemotron-4 340B – arXiv最新論文の紹介 (devneko.jp)のような合成データ構築にフォーカスしたLLMも併せて特化型・独自LLMの可能性を感じる。

脚注

[1] Google launches Gemma 2, its next generation of open models (blog.google)
[2] 9Bモデルはより大規模なモデルから蒸留によって構築されているとのこと(「We also train the 2B and 9B models with knowledge distillation (Hinton et al , 2015) instead of next token prediction. The resulting models deliver the best performance for their size, and even offer competitive alternatives to models that are 2-3× bigger.」(gemma-2-report.pdf (storage.googleapis.com)より引用)。
[3] <bos><eos><end_of_turn>は機械的に除去している。
[4] torch.bfloat16
[5] BitsAndBytesConfig(load_in_8bit=True)
[6] BitsAndBytesConfig(load_in_4bit=True)
[7] leakageの疑いはあるが…
[8] ベンチマークがベンチマークとして成立しているか若干疑問が出てきたため、より実用的なデータセットを構築しようかと考えている最近。

Qwen2-7B, GLM-4-9Bの機械翻訳性能

中国からもWeightを公開している or オープンなモデルの発表が続いている。いつもの通り機械翻訳性能を検証してみた。性能評価に使用したデータは以前(DAMO PolyLM-13Bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp))と同じ。検証環境は環境はColab Pro+を用いた。基本的にfp16で扱っている。

本件の検証でもGPT-4oを用いて回答抽出を行った結果を併記しているが、基本的に指示への対応は安定していた。評価指標はBLEU、使用したツールやtokenizerは以前と同じ(sacrebleu –tokenize ja-mecab)である。「0 shot」と「1 shot」の比較でICLやRAGなどプロンプト内にデータを与えた時の性能、「出力そのまま」と「GPT-4で回答抽出」の比較で指示のしやすさをザックリとみる事ができる。いつもの通り非常に限定された機械翻訳ベンチマークである[1]ことに注意が必要である。

モデル0 shot /
出力そのまま
0 shot /
GPT-4oで回答抽出
1 shot /
出力そのまま
1 shot /
GPT-4oで回答抽出
Qwen/Qwen2-7B-Instruct · Hugging Face20.520.429.730.0
THUDM/glm-4-9b · Hugging Face25.525.530.430.6
Qwen2, GLM4の機械翻訳性能

結果と所感

Qwen2 7B、GLM 4 9Bとも機械翻訳性能は高い。さすがマルチリンガル利用を想定され構築されたモデルである。Qwen2とGLM4の性能差はパラメータサイズによるものに見える。

今までの検証結果を振り返ると、同様に構築されたAya-23 8B [2]と比べると出力の安定性(使いやすさ)はQwen, GLMが優れ、絶対性能は競合的またはややAya-23が優位といえそう [3]。

サイズが近く有名なモデルにはMistral 7B v0.3やGemma 7B、Llama 3 8Bがある。これらと比べると0 shot性能ではQwen, GLMが優れ、1 shot性能はほぼ互角である。0 shot性能はLLM内の知識に依存し、日本語での継続学習・SFTを行うと性能拡張の余地も大きそう。

Qwen2 7BはApache-2ライセンスと完全なOSSであることも重要。絶対性能が高く、命令追従性が良い、かつ、周辺ツールもよく整備されている強力で使いやすいモデルであるように思う。

脚注

[1] このあたりのザックリ感はいつもと同じ。
[2] Aya-23はCC-BY-NCと商業利用が禁止されているため使いどころは限られる。
[3] BLEUで測れるのかという話はあるが…

Mistral 7B v0.3, Phi-3 small/medium, Aya 23 8Bの機械翻訳性能

オープンなモデルの発表が続いている。ローカル環境での動作がやりやすい7B, 8B, 14Bのモデルについて機械翻訳性能を検証してみた。性能評価に使用したデータは以前(DAMO PolyLM-13Bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp))と同じ。検証環境は環境はColab Pro+を用いた。基本的にfp16で扱っている。

本件の検証でも出力形式が一定しないことが多かったためGPT-4oを用いて回答抽出を行った結果を併記した。評価指標はBLEU、使用したツールやtokenizerは以前と同じ(sacrebleu –tokenize ja-mecab)である。「0 shot」と「1 shot」の比較でICLやRAGなどプロンプト内にデータを与えた時の性能、「出力そのまま」と「GPT-4で回答抽出」の比較で指示のしやすさをザックリとみる事ができる[1]。ただし、非常に限定された機械翻訳ベンチマークである[2]ことに注意が必要である。

モデル0 shot /
出力そのまま
0 shot /
GPT-4oで回答抽出
1 shot /
出力そのまま
1 shot /
GPT-4oで回答抽出
mistralai/Mistral-7B-Instruct-v0.3 · Hugging Face10.714.427.029.7
microsoft/Phi-3-small-8k-instruct · Hugging Face (7B)17.918.426.826.9
CohereForAI/aya-23-8B · Hugging Face11.323.511.034.7
microsoft/Phi-3-medium-128k-instruct · Hugging Face (14B)23.523.434.536.2
各種小規模モデルのBLEU

結果と所感

Mistral 7B v3は日本語性能がかなり向上しているようでv2と比べて大幅にスコアが上がっている。Apache-2ライセンスと正真正銘のOSSであり活躍の機会が多そう。Phi-3は小型高性能の名に恥じない結果になっており、以前検証したmini、今回検証したsmall、mediumで順当にスコアが上がっている。こちらもMITライセンスと正真正銘のOSS。FuguMTの性能が0 shotで32前後であることを考えると、Phi-3 medium(14B)は用途によっては実用レベルに達しているかもしれない。

AYA 23は上記のモデルと印象が異なり、命令への追従はあまりできていないがモデルの絶対性能はとても高い。「1 shot / GPT-4oで回答抽出」の性能はプロンプトの工夫で達成できると思われ、AYA 23のように多言語想定で作られたモデルであれば8Bでも実用レベルの性能が出せるかもしれない。より大規模なASA 23 35Bも試してみたいところ[3][4]。

脚注

[1] 毎度のことながら本当にザックリとしか見れない。
[2] 日本語・英語の文書ともにデータがインターネット上で公開されているため、潜在的なLeakの可能性がある。BLEUではそもそも性能を測れないなど注意点は多い。(ぼちぼち改善しようと思ってはいるが……)
[3] 35Bだと8bit以下に量子化しないと実行が厳しい。
[4] ライセンスはCC-BY-NC、併せてCohere For AI Acceptable Use Policyも守る必要がある。ざっくりとは商用利用不可。

GPT-4o, Gemini Pro, Gemini Flashの機械翻訳性能

5月上旬はGPT-4o, Gemini Flashと商用MLLMの発表が相次いだ(Hello GPT-4o | OpenAIGoogle Gemini updates: Flash 1.5, Gemma 2 and Project Astra (blog.google))。公式、非公式を問わず検証結果が発表されており、いつものデータセットで性能を検証してみた。

性能評価に使用したデータは以前(DAMO PolyLM-13Bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp))と同じ。なお、GPT-4oのoでもあるテキスト以外の情報は使っていないため性能評価としては参考程度である[1]。

評価指標はBLEU、使用したツールやtokenizerは以前と同じ(sacrebleu –tokenize ja-mecab)である。「0 shot」と「1 shot」の比較でin context learningの有効性をザックリとみる事ができる[2]。

モデル0 shot1 shotコスト(USD) [3]
1Mトークン、入力/出力別
GPT-4o31.842.55 / 15
GPT-4 Turbo29.435.410 / 30
【参考】 GPT-3.5 Turbo27.137.10.5 / 1.5
Gemini 1.5 Pro / gemini-1.5-pro-preview-051426.843.43.5 – 7.0 / 10.5 – 21.0 [4]
Gemini 1.5 Flash / gemini-1.5-flash-preview-051429.434.80.35 – 0.70 / 1.05 – 2.10 [4]
【参考】Gemini 1.5 Pro / gemini-1.5-pro-preview-040934.450.13.5 – 7.0 / 10.5 – 21.0 [4]
各種APIのBLEU、コストは2024-05-18時点

結果

GPT-4oは高速・低コストであるにもかかわらず以前のGPT-4 Turboより高い性能を示した。tokenizerもGPT-4 Turboより日本語に適しているためGPT-4 Turboからの置き換えが進むだろう。

Gemini Proは以前よりもスコアが低くなっているが、「出力にMarkdownの装飾が混ざる」「一文毎に訳する形になる」など出力形式が揺れていることが原因である。プロンプトを調整すれば性能は向上すると思われる[5]。Gemini Flashは高い性能を持つが安価と発表の通りコストパフォーマンスが非常に高い。

GPT-3.5 TurboとGemini 1.5 Flash、GPT-4oとGemini 1.5 Proは競合しており、それぞれに特色がある。用途によって選定することになるのではないかと思う。

その他

今使っているデータ・評価指標ともに完璧なものだとは思っていないが、複数のモデルを同じように比較できるのは便利。間違いの分析やモデル特性の変化を検知できることも重要である。

検証に使っているデータは外務省(GPT-4を用いた翻訳の検証(vs GPT-3.5 vs FuguMT) | ぷるーふおぶこんせぷと (staka.jp)MPT-30B-Chat + In-Context Learningの性能 | ぷるーふおぶこんせぷと (staka.jp))のものでライセンス的な問題はないため、データ構築過程を自動化し公開しようかと思わなくもない[6]。時系列変化や(Leakageが入らないと思われる)最新データでの比較なども可能など、便利なデータであるはず[6]。

脚注

[1] 評価指標が色々と問題あるBLEUであり、Leakageの心配もあって本当に参考の参考
[2] こちらもざっくりとしか見れない
[3] tokenizerが異なるため一律比較はできない、2024-05-18時点の情報で「Pricing | OpenAI」「Gemini API の料金  |  Google AI for Developers  |  Google for Developers」から取得。
[4] Gemini 1.5はプロンプトの長さで価格が異なる
[5] 適切な評価データを持つ、出力の分析をすることが重要
[6] 1年以上前にも同じことを言っていて結局公開しない可能性もあるが…