ailia Tech BLOG

FuguMT : 英語から日本語への翻訳を行う機械学習モデル

ailia SDKで使用できる機械学習モデルである「FuguMT」のご紹介です。エッジ向け推論フレームワークであるailia SDKailia MODELSに公開されている機械学習モデルを使用することで、簡単にAIの機能をアプリケーションに実装することができます。

FuguMTの概要

FuguMTはMicrosoftの開発した機械翻訳向けフレームワークのMarianMTをベースに、日本語の翻訳に対応した言語モデルです。英語から日本語への翻訳が可能です。ライセンスはCC-BY-SA-4.0です。

FuguMT

staka/fugumt-en-ja · Hugging FaceEdit model card This is a translation model using Marian-NMT. For more details, please see my repository. source…huggingface.co

GitHub - s-taka/fugumtぷるーふおぶこんせぷと で公開した機械翻訳エンジンを利用する翻訳環境です。 フォームに入力された文字列の翻訳、PDFの翻訳が可能です。 あくまで検証用の環境・ソフトウェアであり、公開サーバ上での実行を想定したものではありません。…github.com

FuguMTの学習データ

FuguMTの学習データは下記のBLOGに記載されています。使用したデータ量は約660万対訳ペア(日本語:690MB 英語:610MB、約1億words)で、 AWS p3.2xlarge 上で Marian-NMT + SentencePieceを用い約30時間の学習を行っています。

ぷるーふおぶこんせぷと英文を日本語訳するニューラル機械翻訳モデルをCC BY-SA 4.0で公開した。 以前の記事 で紹介した手法を用い昨年11月に構築したモデルである 性能はそこそこ(後述)。構築手法は本格的(Marian-NMT[1]を用いた…staka.jp

外部省のPress Releaseを使用したBLEUスコアは31.65と、GPT3.5の27.04、GPT4の29.66よりも高い性能を持っています。

ぷるーふおぶこんせぷとGPT-4の翻訳性能を外務省WEBサイトのテキスト(日本語/英語)を用いて定量的[1]に測ってみた。…staka.jp

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-models/natural_language_processing/fugumt-en-ja at master · ailia-ai/ailia-modelsText (English) to translate This is a cat. Translated (Japanese) text translation_text: これは猫です。 This model requires…github.com

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.

ailia-models-cpp/fugumt at master · ailia-ai/ailia-models-cppC++ version of ailia models repository. Contribute to ailia-ai/ailia-models-cpp development by creating an account on…github.com


アイリア株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。アイリア株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。