Monthly Archives: 7月 2023

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