LibreTranslate のモデルデータのダウンロード

先日新しい端末を入手したので，Debian を入れて使っています．これに LibreTranslate を Docker 経由で入れたのですが，モデルのダウンロードに失敗して再ダウンロードしてくれなかったのをダウンロードし直しさせたメモです．

Note

HP t430 thin client CPU Intel N4000/RAM 4GB/eMMC 32GB，ヤフオクにて 1,000円 + 送料 1,680円

LibreTranslate は Argos Translate に web インターフェイスや API を付けたような感じのもので，セルフホストして回線無しでも使うことが出来ます．

LibreTranslate/LibreTranslate: Free and Open Source Machine Translation API. Self-hosted, offline capable and easy to setup.

LibreTranslate については 鹿児島らぐの 鹿児島Linux勉強会 2022.12 で発表しました．このときは pip で導入，今回は Docker で導入しました．

機械翻訳をローカルマシンで( ArgosTranslate/LibreTranslate )

https://gitlab.com/matoken/kagolug-2022.12/-/blob/master/slide/slide.adoc

https://speakerdeck.com/matoken/libretranslate

Docker 利用時は， ./run.sh を実行すると導入されていなければ導入，そして起動してくれます．
モデルがない場合，モデルのダウンロードもしてくれます．

しかし，回線が不安定だとモデルのダウンロードが途中で失敗してしまうことがあります．

$ ./run.sh
:
Downloading English → Czech (1.9) ...
(IncompleteRead(15249408 bytes read, 56611648 more expected),)
:
^c

再度実行するとダウンロードされなかったモデルが使えない状態で起動します．今回は一番使いたい日本語のモデルがない状態です……

$ ./run.sh
Checking for docker... found
Running on http://*:5000

run.sh を確認すると，最後の行で，libretranslat を run.sh の引数付きで呼んでいるようです．

docker run -ti --rm -p $LT_PORT:$LT_PORT $DB_VOLUME -v lt-local:/home/libretranslate/.local libretranslate/libretranslate ${ARGS[@]}

ということで libretranslat の usage や README.md の Arguments を見ると --update-models が使えそうです．このオプションを付けて起動すると足りないモデルのダウンロードをしてくれました．

$ ./run.sh --update-models
Checking for docker... found
Updating language models
Found 88 models
Downloading English → Danish (1.3) ...
:

しかし，やはり回線が駄目なのでよく転けるし時間がかかります． --load-only オプションを指定し，一番使う英語と日本語を使うように指定すると，英語と本語のモデルだけをダウンロードしてくれて，英語<→日本語相互翻訳が可能になりました．

$ ./run.sh --load-only 'ja,en' --update-models
Checking for docker... found
Updating language models
Found 88 models
Keep 2 models
Downloading English → Japanese (1.1) ...
Downloading Japanese → English (1.1) ...
Loaded support for 13 languages (2 models total)!
Running on http://*:5000

残りのモデルはおいおいダウンロードしようと思います．

Note

usage を見ると --force-update-models というオプションもありました．未確認ですが，モデルファイルが壊れている場合などに使えそうです．