FuguMT : 英語から日本語への翻訳を行う機械学習モデル
ailia SDKで使用できる機械学習モデルである「FuguMT」のご紹介です。エッジ向け推論フレームワークであるailia SDKとailia MODELSに公開されている機械学習モデルを使用することで、簡単にAIの機能をアプリケーションに実装することができます。
FuguMTの概要
FuguMTはMicrosoftの開発した機械翻訳向けフレームワークのMarianMTをベースに、日本語の翻訳に対応した言語モデルです。英語から日本語への翻訳が可能です。ライセンスはCC-BY-SA-4.0です。
FuguMTの学習データ
FuguMTの学習データは下記のBLOGに記載されています。使用したデータ量は約660万対訳ペア(日本語:690MB 英語:610MB、約1億words)で、 AWS p3.2xlarge 上で Marian-NMT + SentencePieceを用い約30時間の学習を行っています。
外部省のPress Releaseを使用したBLEUスコアは31.65と、GPT3.5の27.04、GPT4の29.66よりも高い性能を持っています。
FuguMTのアーキテクチャ
FuguMTはTransformerベースのSequence2Sequenceのモデルです。デコーダを繰り返し回すことで、1トークンずつ出力を得ることができます。
デコーダの入力は、input_ids、attention_mask、decoder_input_ids、past_key_values[25]となります。input_idsには入力トークン列、attention_maskは1のベクタ、decoder_input_idsは前回のトークンID(初回はpad=32000)、past_key_valuesは(beam_size, 8, 0, 64)の内部ステートです。past_key_valuesの0のところは推論ごとに増えていきます。
デコーダの出力は、logits、past_key_values[25]となります。logitsは32001次元で、各トークンの確率が入っています。logitsを元にビームサーチでテキストを決定します。
Python版では、beam_size=12がデフォルトになっています。
トークナイザにはMarianTokenizerを使用しており、SentencePieceです。入力用の英語のSourceモデルと、出力用の日本語のTargetモデルを使用しています。
ailia SDK (Python) から使用する
ailia SDKからFuguMTを使用するには下記のようにします。
$ python3 fugumt-en-ja.py --input "This is a cat."
出力は下記となります。英語を日本語に翻訳することができます。
translation_text: これは猫です。
ailia SDK (C++)から使用する
ailia Tokenizerを使用してC++からFuguMTを使用するサンプルも下記に公開しています。
ビルドは下記のように行います。
cd fugumt
export AILIA_LIBRARY_PATH=../ailia/library
export AILIA_TOKENIZER_PATH=../ailia_tokenizer/library
cmake .
make
./fugumt.sh
実行例です。
env_id : 0 type : 0 name : CPU
env_id : 1 type : 1 name : CPU-AppleAccelerate
env_id : 2 type : 2 name : MPSDNN-Apple M1 Max (Warning : FP16 backend is not worked this model)
you can select environment using -e option
selected env name : CPU-AppleAccelerate
Input : This is a cat.
Input Tokens :
183 30 15 11126 4 0
Output : これは猫です
Output Tokens :
517 6044 68 0
Program finished successfully.
ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。