😃

BigTrans で日本語翻訳を味見(翻訳精度あまりよくありませんでした)

2023/06/19に公開

LLM で日本語いい感じに扱いたい...
LLM で翻訳処理させたい...

BigTrans 試します!

https://github.com/ZNLP/BigTrans

model ライセンスは GPL 3.0 です.
GPL ですと商用利用自体は可能ですが(基本, ソース開示義務と GPL 汚染が発生するだけであって, 対価を取ったりなどの商用利用は可能), github では商用利用禁止と書いてあります...
そのうち CC-BY-NC あたりにリライセンスされるかもしれません.

概要

LLM の能力を中国語データセット + 多言語データセットで拡張し, 中国語対応および翻訳タスクをこなせるようにする

  • llama 13B をベースに, 多量の中国語データセットで追加学習
  • 102 言語の多言語データセットでさらに llama を学習
  • 翻訳 instruct でファインチューンして BigTrans 錬成

ここで追加学習は, LoRA みたいなのではなく, フルに学習を継続するになります(llama の checkpoint データから学習継続?).
単純に学習継続ではなく, 中国語対応のために tokenizer 周りをいじったりする.

英日翻訳させてみる

https://github.com/ZNLP/BigTrans

で, translate.sh を参考に英日翻訳させてみます.

とりあえずは transformers ベースで動かします.
3090 x 2 で CUDA はなんかうまく動かなかったので, とりあえずは CPU で動かしました. 50 文の翻訳に 20 時間くらいかかりました...
(何回か繰り返し処理していい結果だけ抜き出しているっぽいので時間かかっている?)

The find also grants insight into the evolution of feathers in birds.
この発見も鳥のフィンガーの進化に関する知識をもたらしました。

フィンガーに間違って翻訳されてますネ...

The governor's office said nineteen of the injured were police officers.
知事のオフィスによると 傷つけた者中は 警官が19人だ

負傷者傷つけた者中とへんな訳.
The governor's officeは日本語ではあんまりつかわれない言い回しのような? 直訳および DeepL 翻訳では知事室であるが, 知事の広報局(?)あたりが日本語訳が自然なようなきもする.
(ので今回はとりあえずは知事のオフィスでもヨシ!)

During his trip, Iwasaki ran into trouble on many occasions.
イワサキは旅行中にたくさんの場合に問題を見つけた。
He did not set a figure for the cuts, saying they will be made based on China's economic output.
中国の经济成長の程度に対して削除の程度を決めていない。

なんかこれは翻訳ダメだね...
中国語の漢字になったりするし...

あと, Tibet の単語は, 検閲されているのか翻訳がティベートとかになりました :-)

llama.cpp 版

llama.cpp 版が

https://huggingface.co/TheBloke/BigTrans-13B-GGML

にあります. ctranslate2 版もあるので, 実務で利用する場合は llama.cpp or ctranslate2 がよいでしょうか.

日本語で学習させたら...?

既存の llama pre-train モデル(optimizer state とかついた checkpoint データから?)に追加学習しています.
中国語は 42.8B tokens, 多言語データは 47 B tokens のデータ量です.
(オリジナルの llama 65B が 1T tokens なので, 追加学習ぶんの token 量はそれぞれおよそ 4%, 5% というかんじでしょうか)

論文によれば(追加)学習とファインチューンは A100(80GB) x 16 で行っているため, すごい計算リソースが必要というわけではないです(何日かけたとかの記述がないですが...)

ここで中国語のデータセットを日本語でいい感じに置き換えれば日本語性能上がるきも... するカモ.

llama.cpp のトレーニング処理が安定するようになってきたら, 128 GB CPU mem な CPU クラスタでぺろっと(追加)学習がやりやすくなりそう...?

まとめ

全体的に翻訳結果はよくありませんでした...

ただ, 日本語データセットで, フルの追加学習をしたら日本語いい感じになるかも, の望みはありそうです!

TODO

  • llama.cpp + 日本語データセット(40B tokens くらい. バイト数でいえば 100 GB くらいかしらん)でフルの追加学習にチャレンジしてみる. ミニ CPU クラスタ(16 x Ryzen9 7950 とか)で学習いけるやも.

Discussion