Tag Archives: gpt-3.5-turbo

Gemma 7B, Llama 3 8B, Phi-3 mini, recurrent gemma 2B 等の機械翻訳性能

小規模でも性能が良いと主張するモデルが次々と発表されている(OSS – arXiv最新論文の紹介 (devneko.jp))。7Bから8BのモデルはGPU 1つでも実行でき使い勝手が良い。一方で過去の検証では十分な機械翻訳性能を出すことが難しそうである [1]

最新モデルで上記制約が解消しているのか機械翻訳性能を検証してみた。性能評価に使用したデータは以前(DAMO PolyLM-13Bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp))と同じ。検証環境は環境はColab Pro+を用いた。基本的にfp16で扱っている。

本件の検証では手で回答抽出をする代わりにGPT-4 Turboを用いて回答抽出を行った結果を併記した。評価指標はBLEU、使用したツールやtokenizerは以前と同じ(sacrebleu –tokenize ja-mecab)である。

「0 shot」と「1 shot」の比較でICLやRAGなどプロンプト内にデータを与えた時の性能、「出力そのまま」と「GPT-4で回答抽出」の比較で指示のしやすさをザックリとみる事ができる[2]。

モデル・条件param0 shot /
出力そのまま
0 shot /
GPT-4で回答抽出
1 shot /
出力そのまま
1 shot /
GPT-4で回答抽出
google/gemma-1.1-7b-it · Hugging Face8.54B17.117.132.532.2
meta-llama/Meta-Llama-3-8B-Instruct · Hugging Face8.03B11.916.220.630.2
Qwen/Qwen1.5-7B-Chat · Hugging Face7.72B17.817.918.919.0
microsoft/Phi-3-mini-128k-instruct · Hugging Face3.82B12.612.720.020.3
google/recurrentgemma-2b-it · Hugging Face2.68B7.98.720.320.9
(参考)gpt-3.5-turbo27.126.937.137.0
各種小規模モデルのBLEU

より大規模なモデルについても検証を行った。こちらはollamaを用いて検証を行っている。

実は上記表のモデルも当初ollamaを用いて検証を行っていたが性能が悪かった。4bit量子化の影響ではないかと考えている[3]が詳細は不明である。下表の結果もfp16で実行した場合、より良い結果になる可能性がある。

モデル・条件param0 shot /
出力そのまま
0 shot /
GPT-4で回答抽出
1 shot /
出力そのまま
1 shot /
GPT-4で回答抽出
command-r-plus (ollama.com)104B27.429.437.136.8
llama3:70b-instruct (ollama.com)71B17.316.521.032.3
(参考)gpt-3.5-turbo27.126.937.137.0
各種大規模モデルのBLEU

結果と結論

Llama 3 8B, Gemma 7Bはパラメータ数の割に機械翻訳性能が高い。特にGemmaは日本語対応、命令の理解共に性能が高い。Llama 3 8B Instructは出力に不要な部分(今から翻訳しますなどのリード文)が出る事が多くそれが見た目のBLEUに影響していた。主たる文章のみを抜き出せば性能は悪くない。日本語を継続学習したバージョンや日本語の命令セットでSFTしたバージョンに期待である。

より小型のPhi-3、reccurent gemma 2Bは実用には厳しそうだが期待のできる結果を出しているように思う。特にreccurent gemmaのように新たなアーキテクチャ[4]には期待大である。機械翻訳ではSSMのような状態を扱えるモデルだと利点が多い。例えば「単語対応の辞書」や「訳調」、「定型文」などを状態に押し込んでおくことで、欲しいスタイルの機械翻訳を実行可能になる。FuguMT ver 2はこのような機能で構築する予定である。

より大規模なモデルとしてはCohereのCommand R+はさすがの性能である[5]。Llama 3 70Bについては量子化の影響を受けていそうなのでfp16での性能を試してみたいところ。

FuguMT ver2(辞書・翻訳スタイル指定可能なLLMベースの機械翻訳モデル)公開に合わせて、これら検証データの最新化やベンチマークの公開もしたい[6]。

脚注

[1] 以前の検証では7Bクラスと14Bクラスで大きな差が出ていた。PaLM2 / ELYZA-japanese-Llama-2-7bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp)
[2] モデルに合わせたプロンプトチューニングは行っていないため、特に後者は本当にザックリとである。
[3] Llama3の量子化の影響についての検証は GitHub – Macaronlin/LLaMA3-Quantization が詳しい。
[4] Fugu-MT 論文翻訳(概要): RecurrentGemma: Moving Past Transformers for Efficient Open Language Models (fugumt.com)、GriffinアーキテクチャFugu-MT 論文翻訳(概要): Griffin: Mixing Gated Linear Recurrences with Local Attention for Efficient Language Models (fugumt.com)
[5] Command R+ (cohere.com)Introducing Command R+: A Scalable LLM Built for Business (cohere.com)、研究目的用にCC-BY-NC-4.0で公開されている商用モデルであるので当たり前かもしれないが。。
[6] だが、時間の余裕がない状況が続く。既存FuguMTの問題修正もいい加減やりたい。。。

PLaMo-13B, Qwen-14Bの機械翻訳性能

日本語が扱える大規模言語モデルの発表が相次いでいる。以前取り上げたQwenについても前回検証時より大規模なモデルが公開されていた。

今までと同様、上記の機械翻訳性能を検証してみた。性能評価に使用したデータは以前(DAMO PolyLM-13Bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp))と同じ。検証環境は環境はColab Pro+を用いた。PLaMo-13Bが8bitで読み込み[1]、Qwen-14Bはfloat16で読み込んだ。前回同様、日本語を多く含むPLaMoについて指示を日本語にしたプロンプトも試している[2]。

本件の検証ではQwen-14Bは回答部分を手で抽出はしておらず、PLaMo-13Bは手で回答を抽出した。PLaMo-13Bはinstruction tuning前なこともあり制御が難しい事、PLaMo-13Bの回答部分をルール抽出するコードを書く時間が無かった事が理由である。

モデル・条件zero shot1 shot [3]
GPT-3.5 [4]26.737.0
PLaMo-13B [5] / 8bit読み込み / 日本語指示4.823.1
PLaMo-13B [5] / 8bit読み込み / 英語指示 5.218.3
Qwen-14B-Chat [6]22.935.1
【参考】 Qwen-7B-Chat [7]14.523.3
PLaMo-13B(事前学習済みモデル・未チューニング), Qwen-14B-Chat, GPT-3.5-TURBO-16KのBLEU

結果

PLaMo-13Bはチューニング前の状態であるからか制御が難しい。特に長文で回答部分のみを出力させる事が簡単ではない。日本語指示、英語指示の差や出力からは「機械翻訳」というタスクを十分に認識させられていないように見受けられた。これはモデルの問題ではなくプロンプト作成側(筆者側)の問題であるように思う。チューニングされたモデルが公開されたら再度試してみたいところ。タスク認識がうまくいっている事例ではまずまずの翻訳文が出てきていたので表の数値は参考程度。個人的には期待大。

Qwen-14Bの機械翻訳性能は高くLlama-2 13B(回答そのままだと33.1、手での抽出を行って35.1)以上である。Qwen-7Bと比べて大きくスコアを伸ばしており機械翻訳タスクにおけるパラメータサイズの重要性が示唆される結果になっている[8]。

PLaMo-13BはApache License v2.0と非常に使いやすいライセンス。今後の発展に期待したい。おそらく早期にinstruction tuning後バージョンが公開されると思われるため、その時にまた試行を行いたい[9]。

Qwenは独自ライセンスではあるが「Our code and checkpoints are open to research purpose, and they are allowed for commercial purposes. Check LICENSE for more details about the license. If you have requirements for commercial use, please fill out the form to apply.」と研究目的での制約は強くない。周辺ツールが整備されており使いやすい印象を受ける[10]。

脚注

[1] PLaMo-13Bの処理時間が非常に長かったため16bitでの読み込みをあきらめた。
[2] 前回と異なり相応の効果が見えた。
[3] 以前と同じでOpenICL、TopkRetrieverにより取得
[4] gpt-3.5-turbo-16k-0613
[5] pfnet/plamo-13b · Hugging Face
[6] Qwen/Qwen-14B-Chat · Hugging Face
[7] Qwen/Qwen-7B-Chat · Hugging Face
[8] Llama-2-7b-chat-hf: 20.1 (回答を手動抽出して 23.9)、Llama-2-13b-chat-hf: 33.1 (回答を手動抽出して 35.1)とLlama-2もほぼ同傾向となっている。
[9] 機械翻訳を重視したバージョンを自分でやるかもしれない(やりたい)が、時間がとれなさそう。。。
[10] 開発チームはモデルの評価や周辺ツールの開発などにもかなりのリソースを投入している。研究だけでなく実用化でも非常に競争が激しくなっている。

Weblab-10B, Qwen-7Bの機械翻訳性能

最近、日英対応大規模言語モデルや日本語が扱える多言語な大規模言語モデルが複数の会社・研究機関から公開された。

今までと同様、上記の機械翻訳性能を検証してみた。性能評価に使用したデータは以前(DAMO PolyLM-13Bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp))と同じ。検証環境は環境はColab Pro+を用いfloat16で読み込んだ。Promptも以前と近いものを使っているが日本語が主体のLLMと思われるrinna、StableLM Alpha、Weblabについては指示を日本語にしたプロンプトも試している[1]。

上記4種類のモデルを検証してみたがJapanese StableLM Alphaシリーズの「Japanese-StableLM-Base-Alpha-7B」[2]「Japanese-StableLM-Instruct-Alpha-7B」[3]、rinna社の日英バイリンガル大規模言語モデル「bilingual-gpt-neox-4b-instruction-sft」[4]は十分な品質が達成できなかったため表には入れていない。

本件の検証ではLLMの出力から手動で回答を抽出することは行っていない。多くの場合ルールベースで十分だった事と手動抽出が必要な場合はそもそもの翻訳品質が悪く回答抽出に意味がなかった。

モデル・条件zero shot1 shot [5]
GPT-3.5 [6]26.737.0
Qwen-7B-Chat [7]14.523.3
Weblab-10B
weblab-10b-instruction-sft [8]
11.529.6
Qwen-7B, Weblab-10B, GPT-3.5-TURBO-16KのBLEU

結果

以前の検証でほぼ同条件&1 shotの性能はLlama-2-7b-chat-hf: 20.1、Llama-2-13b-chat-hf: 33.1、PolyLM-13B: 21.5だった[9]。パラメータ数を考えるとQwen-7B、Weblab-10Bともに相応の機械翻訳性能を持っていそうである。

目検してみるとQwen-7Bは日本語の語彙が不足している印象、Weblab-10Bはhallucinationが多めの印象を受けた。機械翻訳はパラメータサイズで性能が大きく変わるので13B程度のサイズに合わせた検証を行ってみたいなと思わなくはない。

ライセンスはQwen-7BがLlama 2に近い独自ライセンス(Qwen-7B/LICENSE at main · QwenLM/Qwen-7B · GitHub)、Weblab-10BはCC BY-NCと研究用には問題なく使えるものとなっている[10]。

様々な研究機関がモデルを公開してくれるとその差異から分かることもあり非常にありがたい。Qwen-7BはMMLUはじめ様々なベンチマークの結果、Weblab-10BはGitHub – Stability-AI/lm-evaluation-harness: A framework for few-shot evaluation of autoregressive language models.を用いたJGLUEでの評価結果を載せてくれているのがうれしい。様々なタスクにおける性能はパラメータサイズや最大シーケンス長より重要な情報で可能な限り公開してもらえるとありがたいなと思う[11]。

脚注

[1] 正直、大幅な性能向上という効果は見られなかった。1 shotではほぼ効果が無く、zero shotでは日本語で指示を与えた方が良いようにも見えたがそもそものBLEUが低いため参考にはならない印象。なお、Weblab-10Bについてはfew shot部分を公式の「\n\n### 指示:\n{} \n\n### 応答:\n{}」に合わせるのは効果がありそうだった。
[2] stabilityai/stablelm-base-alpha-7b · Hugging Face
[3] stabilityai/japanese-stablelm-instruct-alpha-7b · Hugging Face
[4] rinna/bilingual-gpt-neox-4b-instruction-sft · Hugging Face
[5] 以前と同じでOpenICL、TopkRetrieverにより取得
[6] gpt-3.5-turbo-16k-0613
[7] Qwen/Qwen-7B-Chat · Hugging Face
[8] matsuo-lab/weblab-10b-instruction-sft · Hugging Face
[9] 回答を手動抽出した場合の性能はLlama-2-7b-chat-hf: 23.9、Llama-2-13b-chat-hf: 35.1、PolyLM-13B: 25.8
[10] Qwenは商用利用可能そうだが「If you are commercially using the Materials, and your product or service has more than 100 million monthly active users」や「You can not use the Materials or any output therefrom to improve any other large language model (excluding Tongyi Qianwen or derivative works thereof).」との記載がある。また、HuggingFaceのページには「If you have requirements for commercial use, please fill out the form to apply.」というフォームが用意されている。Weblab-10BはCC BY-NCなので商用利用不可
[11] モデルが公開されていれば検証はできるが正しく検証できているかは謎な部分がある。特に「それぞれのモデルで最適なプロンプト」「Few shot事例の与え方」は使ったデータにも依存するわけで開発元の公式な情報があると良いなとは思う。

Llama 2(7B, 13B chat)の機械翻訳性能

Llama 2が発表された(公式サイトはLlama 2 – Meta AI huggingfaceへはmeta-llama (Meta Llama 2) (huggingface.co))ので機械翻訳性能を検証してみた。論文によると日本語データは0.1%程度しか含まれていない[1]とのことだが機械翻訳性能はかなり高い。

性能評価に使用したデータは前回(DAMO PolyLM-13Bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp))と同じ。同様の条件でサンプリングして使っている。他のフリーなモデルに比べて回答部分の抽出は容易になっているがそれでも失敗することがある[2]。そのためルールベースで回答部分を抽出した結果と手動抽出した結果の2通りでBLEUを算出している。

環境はColab Pro+を用いfloat16で読み込んだ。A100 VRAM 40GBではメモリ制約が厳しいのも前回同様。結果は下表の通り。13Bモデルの性能は高く(特に最大の構成70Bであれば)ChatGPT(GPT-3.5)相当という評価は過大というわけではなさそう。

モデル・条件zero shot1 shot [3]
GPT-3.5 [4]26.737.0
Llama-2-7b-chat-hf11.620.1
Llama-2-7b-chat-hf
※手で回答抽出
13.423.9
Llama-2-13b-chat-hf19.133.1
Llama-2-13b-chat-hf
※手で回答抽出
19.135.1
Llama 2 7B/13B, GPT-3.5-TURBO-16KのBLEU

結果

話題のLlama 2を試してみた。13Bかつ1 shot設定でうまく回答が抽出できればChatGPT(GPT-3.5)に迫るレベル。プロンプトを工夫すればもう少しスコアを出せそうとも感じる。

Llama 2の事前学習トークン量は2Tとされていて日本語データはそのうち0.1%とのこと。日本語データの割合が少なくても一定の性能が出せることに驚き。絶対量としても2TB×0.1%=2G tokensであり多いと言えば多いが大量というほどでもない。7Bと13Bで大きな性能差がある事も興味深い。MPTの検証でも感じたが機械翻訳を行う場合7Bでは厳しいのかもしれない。70Bでどうなるか、特にzero shotでの性能が改善するか非常に気になるところ[5]。

Llama 2を用いた派生モデルは今後出てくるはずで日本語能力の強化バージョンも開発されるはず。すでにMeet FreeWilly, Our Large And Mighty Instruction Fine-Tuned Models — Stability AIが発表されている。(前回の感想と同じだが)フリーのLLMに期待したい。

脚注

[1] Llama 2: Open Foundation and Fine-Tuned Chat Models | Meta AI Research 論文の22ページ目
[2] 特にICL利用時に意図しない出力が続くことが多かった。公式にも書かれている通りllama/llama/generation.py at main · facebookresearch/llama · GitHubを参考にプロンプトを組み立てると改善するものと思われる。(時間が無いこともあってプロンプトチューニングは十分ではない…)
[3] OpenICL、TopkRetrieverにより取得
[4] gpt-3.5-turbo-16k-0613
[5] 4bit量子化してもA100(40GB)だと推論時にOut of Memoryになる…

DAMO PolyLM-13Bの機械翻訳性能

Alibaba、DAMO ACADEMYよりApache-2ライセンスでマルチリンガルなLLM、[2307.06018v1] PolyLM: An Open Source Polyglot Large Language Model (arxiv.org)が出ており、機械翻訳性能を評価してみた。

HuggingFaceから利用可能でDAMO-NLP-MT/polylm-13b · Hugging Faceの他、DAMO-NLP-MT/polylm-multialpaca-13b · Hugging Faceも提供されている。

論文にデータセットや構築方法の詳細な情報があるのが非常にありがたい。13Bモデル構築に要した計算リソースは32 A100 GPU (8×80G) serversで29 daysとのこと。今後の拡張として下記が予定されているとのことで非常に楽しみである。

We are continuously enhancing the capabilities of PolyLM by focusing on the following aspects:

  1. Replacement of absolute position embeddings with RoPE, as outlined in the research paper here.
  2. Expansion of window size to more than 10,000.
  3. Verification of lightweight techniques to quickly enhance multilingual quality, especially for low-resource languages.
https://huggingface.co/DAMO-NLP-MT/polylm-13b

論文ではpolylm-multialpaca-13bの方が機械翻訳性能が高そうであったが制御が難しく[1]本件試行はpolylm-13bで行っている。環境はColab Pro+を用いた。bfloat16で読み込むこととGPU側で計算[2]させないとエラーになる点に注意が必要。また、A100 VRAM 40GBではメモリ制約が厳しいため特に長いコンテキストではエラーが発生する事がある[3]。本件でもOut of memory発生時はnum_beamsなどのパラメータを調整している。

性能評価に使用したデータは前回(MPT-30B-Chat + In-Context Learningの性能 | ぷるーふおぶこんせぷと (staka.jp))と同じであり50件をサンプリングして使っている。MPT-30B同様、回答部分の抽出が難しいことがありルールベースで回答部分を抽出した結果と手動抽出した結果の2通りでBLEUを算出している。

結果は下表の通り。OSSなマルチリンガルモデルとしてはかなり性能が高い。

モデル・条件zero shot1 shot [4]
GPT-3.5 [5]26.737.0
PolyLM-13B10.621.5
PolyLM-13B
※回答部を手動抽出
14.125.8
PolyLM-13B, GPT-3.5-TURBO-16KのBLEU

BLEU的には1 shotで回答をうまく抽出できればGPT-3.5のゼロショットと同レベルの品質となっている。目検すると重要部分での訳ミスが多くGPT-3.5と比較してもBLEU以上に差が大きい印象。

パラメータ数13Bと1 GPUで動作可能&マルチリンガル&日本語対応のモデルがApache-2で利用可能というのはとてもありがたい。LLaMA v2の噂も出ていてオープンなLLM開発は盛り上がっている。この状況が続き良いものが出てほしいと強く思う。

脚注

[1] プロンプトをうまく調整できれば良いのかもだが、中国語の出力がされる、hallucinationが凄いなど正しい翻訳への誘導が難しいことが多かった。。
[2] 本件ではset_default_tensor_typeを使用したが、to.(‘cuda’)みたく明示的に飛ばしてもよいはず。
[3] torch.cuda.empty_cache()も呼びまくっている。
[4] OpenICL、TopkRetrieverにより取得
[5] gpt-3.5-turbo-16k-0613