Closed yuiseki closed 7 months ago
「この文書の日本語版を作りたいのだけど、話を繋いでくれるか」という問いですと、私あたりが繋いでいくということで貢献できそうです。
SMG で日本語版を作りましょう、ということになるとすれば、例えば Open-source LLM でサクサク翻訳しながら作っていきましょう、といったアプローチなら可能でしょうか。
私もこの文書の内容には多少興味があるので、翻訳作業への多少の参加についても興味があります。
作業量の見積もりや作業ルールの検討をしていくと前に進みそうですね。
Open-source LLM でサクサク翻訳しながら作っていきましょう、といったアプローチなら可能でしょうか
興味深いアイデアです!国連の関連文書の翻訳にOSS LLMを活用しました!(単純な全自動機械翻訳ではなく、人間による適切な校正をしています)!みたいに言えると、インパクトありますね!!
「ぜひ一緒にDWG-7 Smart Mapsでこの文書の日本語版を作りませんか!」と誘ってみるのもアリなのではないか?と思いました。
「OSS LLMを使って国連の関連文書の翻訳にチャレンジしよう!」というテーマだと、関心を持って貢献してくれる人も集まる予感がします。
ところで、 https://mappers.un.org/learning/login/index.php で、どうやったらログインできるのかサッパリわかりませんでした……(笑)
私は 2023-07 に https://mappers.un.org/learning/login/index.php のアカウントを作っていました。
フィージビリティを確認するために、open-source LLMs である程度翻訳ができるか試してみるとよさそうですね。 試した後で、大体どの程度の作業量になるのか見積もって、行けるということになりそうであれば、仲間を募ることと前後しながら、9月または10月のUN Open GIS Monthlyで報告することを目標にUN側の人のネットワークを辿ってみるということができればと思います。
私は今手元の Mac で ./server -m models/llama-2-13b-chat.Q5_K_M.gguf -c 2048
を動かしてみたりしています。この作業に最適なモデルはどれでしょう。その辺りも探っていければと思います。
加えて、作業量見積もりのために、対象コンテンツの概略見取りも進めてみますね。
本件、かなり有望な貢献候補であるように思えてきました。
作業形成の順序としては、次のような感じでしょうか。
上記のような調整作業を進めながら、正味の作業は上記の調整作業にあまり制約されることなく「できるところから進めていく」というような感じになるでしょうか。
https://twitter.com/voleneko/status/1683033439979851776
Llama-2-7B/13B-chatの機械翻訳性能を検証した https://staka.jp/wordpress/?p=983
(ほぼ)フリーのLLMの中では性能が高くICL利用時はGPT-3.5に迫る 13Bでこのスコアだと70BのLlama2がChatGPTに匹敵というのは過大評価ではない印象
7B→13Bで性能向上が大きく翻訳には一定のパラメータ数が必要そうで興味深い
https://twitter.com/voleneko/status/1683080723912335360
非常にシンプルでfew shot部分は 'Translate English to Japanese:\n{} \n -> \n {} \n\n'.format(en, ja) 最後に 'Translate English to Japanese:\n{} \n -> \n'.format(en) です
https://twitter.com/goto_yuta_/status/1683100467725996032
ありがとうございます! シンプルですね! ちなみに文末に「no explanation」とか「only translation result」とかつけるパターンとかも見かけます!
llama.cpp
を make
します(すでにやっているのならスキップ可):cd ~
git clone https://github.com/ggerganov/llama.cpp.git
cd ~/llama.cpp
git pull
make
make
します(GPUが無い場合は、無視して下さい)make LLAMA_CUBLAS=1
llama-2-7b.Q4_K_M.gguf
を入手しますllama-2-13b-chatである必要は無さそうでした llama-2-13bである必要すら無さそうでした
https://huggingface.co/TheBloke/Llama-2-7B-GGUF
cd ~/llama.cpp/models
wget https://huggingface.co/TheBloke/Llama-2-7B-GGUF/resolve/main/llama-2-7b.Q4_K_M.gguf
-t
の値は自分のCPUの論理プロセッサ数に応じて適切に指定してください。これを論理プロセッサ数と同一にするとOSまで巻き込んでクラッシュするリスクがあるので-2とかしておいたほうが無難です。--gpu-layers
の値は自分のGPUに応じて適切に指定してください。GPUが無い場合は、除去して下さい。./main -m models/llama-2-7b.Q4_K_M.gguf --gpu-layers 43 -t 14 --temp 0 --repeat_penalty 1.1 -p "
Translate English to Japanese:
English:Hello World
Japanese:こんにちは
Translate English to Japanese:
English:The United Nations is an international organization that promotes international cooperation and peacekeeping.
Japanese:国連は国際的な協力と平和維持を促進する国際機関です。
Translate English to Japanese:
English:Through the UN Maps Learning Hub, UN Mappers offers a self-training platform accessible to anyone discovering the OpenStreetMap project and wishing to participate in the improvement of this free geographic database as do many thousands of contributors each month.
Japanese:"
Translate English to Japanese:
English:Through the UN Maps Learning Hub, UN Mappers offers a self-training platform accessible to anyone discovering the OpenStreetMap project and wishing to participate in the improvement of this free geographic database as do many thousands of contributors each month.
Japanese:UNマップスラーニングハブは、国際連合地図学習ハブとして、オープンストリートマップの自主的な学習プラットフォームを提供する。
止まらないんです
MacBook Pro M2Proだと10秒ぐらいで出力されはじめました。 Metalがデフォルトで有効になっているので早いですね。 止まらないのは同じです。
macOSでサーバ試して見ました。
./server -m models/llama-2-7b.Q4_K_M.gguf -c 2048
https://gyazo.com/ce7d4d552c7fd0e5045eb33d34ee2ab6
https://gyazo.com/55571b62f3b0f125c8d0e6999ecec195
いい感じですね!
ちょうど下記リンク先で遊んでいて、「繰り返しが発生する場合は、 repetition_penalty を1.05〜1.20など調整する」という文章を読んでいました。 https://huggingface.co/spaces/elyza/ELYZA-japanese-Llama-2-7b-fast-instruct-demo
「この英語が言おうとしていることを、分かりやすい日本語で書き直してください。」という言い回しが、割と良いような気がしたりしています。
私も llama-2-7b.Q4_K_M.gguf に揃えて macOS でサーバモードで稼働することができました!
--repeat_penalty 1.20
にしたらピタッと止まりました!!ありがとうございます!
また、これまで外付けのUSBドライブにllama-2-7b.Q4_K_M.ggufを配置していたんですが、内臓のSSDにllama-2-7b.Q4_K_M.ggufを配置してみたら、爆速で推論してくれるようになりました。これはすごい。普通に無料でLLMs使い放題だ。
./main -m models/llama-2-7b.Q4_K_M.gguf --gpu-layers 50 -t 8 --temp 0 --repeat_penalty 1.20 -p "
# Translate English to Japanese
English: Hello World
Japanese: こんにちは
# Translate English to Japanese
English: The United Nations is an international organization that promotes international cooperation and peacekeeping.
Japanese: 国連は国際的な協力と平和維持を促進する国際機関です。
# Translate English to Japanese
English: Through the UN Maps Learning Hub, UN Mappers offers a self-training platform accessible to anyone discovering the OpenStreetMap project and wishing to participate in the improvement of this free geographic database as do many thousands of contributors each month.
Japanese: "
# Translate English to Japanese
English: Hello World
Japanese: こんにちは
# Translate English to Japanese
English: The United Nations is an international organization that promotes international cooperation and peacekeeping.
Japanese: 国連は国際的な協力と平和維持を促進する国際機関です。
# Translate English to Japanese
English: Through the UN Maps Learning Hub, UN Mappers offers a self-training platform accessible to anyone discovering the OpenStreetMap project and wishing to participate in the improvement of this free geographic database as do many thousands of contributors each month.
Japanese: 国連マップ学習ハブを通じて、UN Mappersは自己教育のためにオープンストリートマップ(OSM)という無料地理データベースへ参加することができます。
[end of text]
llama_print_timings: load time = 1783.41 ms
llama_print_timings: sample time = 42.87 ms / 75 runs ( 0.57 ms per token, 1749.56 tokens per second)
llama_print_timings: prompt eval time = 272.18 ms / 166 tokens ( 1.64 ms per token, 609.90 tokens per second)
llama_print_timings: eval time = 3538.57 ms / 74 runs ( 47.82 ms per token, 20.91 tokens per second)
llama_print_timings: total time = 3896.12 ms
Log end
4秒以下で終わってます
オフトピックですが、 llama-2-7b.Q4_K_M.gguf
にOverpass API Queryを書く能力があるか調べてみました
./main -m models/llama-2-7b.Q4_K_M.gguf --gpu-layers 50 -t 8 --temp 0 --repeat_penalty 1.20 -p "
You are an expert OpenStreetMap and Overpass API. You output the best Overpass API query based on input text.
You will always reply according to the following rules:
- Output valid Overpass API query.
- The query timeout MUST be 30000.
- The query will utilize a area specifier as needed.
- The query will search nwr as needed.
- The query MUST be out geom.
- The query MUST be enclosed by three backticks on new lines, denoting that it is a code block.
Examples:
===
Input text:
Area: Lebanon
Output:
\`\`\`
[out:json][timeout:30000];
relation[boundary="administrative"]["name"="Lebanon"];
out geom;
\`\`\`
Input text:
AreaWithConcern: Sudan, Hospitals
Output:
\`\`\`
[out:json][timeout:30000];
area["name"="Sudan"]->.searchArea;
(
nwr["amenity"="hospital"](area.searchArea);
nwr["amenity"="doctors"](area.searchArea);
);
out geom;
\`\`\`
===
Useful hints:
Embassies: nwr["office"="diplomatic"]
Hotels: nwr["tourism"="hotel"]
Input text:
AreaWithConcern: Lebanon, Embassies
Output: "
Output:
\`\`\`
[out:json][timeout:30000];
area[name=Lebanon]->.searchArea;
(
nwr[office=diplomatic](area.searchArea);
)
out geom;
\`\`\` [end of text]
llama_print_timings: load time = 7680.09 ms
llama_print_timings: sample time = 32.97 ms / 56 runs ( 0.59 ms per token, 1698.72 tokens per second)
llama_print_timings: prompt eval time = 487.00 ms / 337 tokens ( 1.45 ms per token, 692.00 tokens per second)
llama_print_timings: eval time = 2519.69 ms / 55 runs ( 45.81 ms per token, 21.83 tokens per second)
llama_print_timings: total time = 3077.76 ms
Log end
普通に書けるっぽいです!!しかも早い!
ただし、Llama 2はデフォルトはmax 508 tokenで、OpenAIのtext-davinci-003の4000 tokenよりもだいぶ厳しい。
-c 2048
と指定することで伸ばせるようですが。
翻訳の方でも、「そうだ、課金されないならどんどん長くなっていいじゃないか」という発想で、対訳を一個ずつ継ぎ足していく方法を試してみました。翻訳のクオリティとしては微妙で、翻訳作業のモチベーションを上げてくれるコパイロットとまではいかないかなと思っていますが、ご参考まで共有します。
Published under Creative Commons Attribution – ShareAlike 2.0 Generic https://creativecommons.org/licenses/by-sa/2.0/
If reusing and redistributing this material, you need to mention "source: UN Mappers" and keep the CC-BY-SA 2.0 license
English: OpenStreetMap (OSM) is a collaborative online mapping project which aims to build a free geographic database of the world. Anyone can contribute to it, with submitted contributions being instantly integrated into the database / appearing online; and anyone can use the data for free, due to the free data license.
Japanese: オープンストリートマップ(OSM)は世界全体について無料で使用可能な地理空間データベースの建設を目的とした協働ウェブ地図プロジェクトである。どんな人も参加することが出来、即時に掲載されるように提供される情報を基礎としていく。また、任意の者はそのデータをフリーかつ自由に利用することができる。
English: Considered to be the Wikipedia of cartography, this wiki project started in 2004 in the United Kingdom. A very large number of users have since joined this community, its geographic database sustaining a large ecosystem of actors and becoming a reference, especially in the humanitarian and development fields, where alternatives are limited.
Japanese: おおむね「地図版のウィキペディア」と言われているオープンストリートマップ(OSM)プロジェクトは、英国で2004年に始動したコラボレイティブ・ウェブマッピング・プロジェクトであり、多数のユーザーが参加して以来、世界的な地理空間データベースへの様々な関係者の貢献や、特に開発途上国における人道支援活動等において重要な情報源となってきた。また、このプロジェクトを利用する方も自由にフリーかつ無料で使う事が出来る。
English: Constantly updated, mostly from satellite imagery and field collection, the OSM data can be very detailed and of high quality, thanks to a flexible data and attribution model, a wiki documentary source, and numerous control tools. OSM is the source of many services available on the web or on mobile applications.
Japanese: 常時更新されていくように、OSMは主に衛星画像や現場集められた情報に基づいている。高品質だったり尺度が非常に明瞭であることは、ウィキドキュメンタリーソースや多数の制御ツールに起因している。OSMデータベースへの参加者も多く、その結果、様々なサービスがWeb上やモバイルアプリケーション向けに提供されている。
English: It is easy to join the OSM mapping community by creating an account (it takes only a few minutes!) and using one of the many existing ways of interaction.
Japanese: まずはオープンストリートマップ(OSM)コミュニティを作成する手段として、自分用のアカウント(登録時間はわずか5〜10分程度!)を設立し、それに関連付けられた何千通りもの交流方法を使う事が出来るようだ。
Translate English into Japanese.
English: From a technical point of view, OSM is not software or a website, but a database. The main one is hosted on a server in Amsterdam and replicated on different servers around the world under the name Planet.osm. The database is operated with the free software PostgreSQL/PostGIS. Currently, in 2022, it contains almost 9 billion point objects and nearly one billion lines or polygons, with a total compressed size of 130 GB.
Japanese: このデータベースは無料で利用可能なオープンソース・サーバーである。主要サーバーはオランダのアムステルダムに位置する。また、各地のOSMコミュニティメンバーによって様々な経路で複製されている。そして、このデータベースを管理するツールとしてはフリーソフトウェア(Free Software)のPostgreSQL/PostGISが使われている。現在2022年時点で、ほぼ9兆点以上の点情報と約千万本もの線や面、合計で大きくて約130GBのサイズで保存されている。
English: The data in the OSM database are free, both for access, modification, sharing and reuse to create derivatives. The content of the OSM database has always been subject to a free license: CC-BY-SA between 2004 and 2012, and ODbL (acronym for Open Database License) 1.0 afterwards. These two licenses allow all uses of OSM data, both commercial and non-commercial, on two conditions:
Japanese: オープンストリートマップ(OSM)データベースにある全てのデータは無料で利用可能なオープン・ソースだったりしており、その中身をアクセスすることが出来、変更することが出来、共有することが出来、新規作成物への使用も自由に行う事が出来る。また、このデータベース内容は常にフリーライセンスによって保障されている。特定の年月から現在まで、CC-BY-SA やODbL(Open Databse Licence) 1.0の二つの権利が含められている。どちらも商業的活動及び非商業的活動双方で、同時に二つの条件が必要:
English: - Attribution. Because the data belongs to its contributors, any product derived from OSM (such as a map using its data) must bear the mention © OpenStreetMap contributors
Japanese: - 帰属。データは貢献者に属することから、OSMから作られたあらゆるプロダクト(例えばそのデータを使った地図)は (c) OpenSteetMap contributors という言及をしなければならない。
上記の実験結果は https://hackmd.io/@hfu/rkVeNdK0h に置いています。
翻訳の叩き台としては充分なのではないかと思いました!
そもそも、Llama 2だけで超正確に翻訳することは、かなり難しいと私は考えています。 それでも、「英語をざっくりと日本語に翻訳する」という作業はLlama 2にやらせて、「日本語の不自然さやニュアンスなどを校閲する」という作業を人間がやれば良いというのは、大幅な作業負担の軽減になるはずです。 オープンライセンスの辞書もあるはずなので、プロンプトで「この単語はこう訳すといいかもよ」のような軽いヒントを与えれば、カタカナに変換するだけというのも防げそうに思いました。
噂によると70Bにすると翻訳性能含め一気に「賢さ」が上がるらしいのですが、70Bのモデルを動かすためには膨大なメモリが必要で、OpenMPIによって複数台のマシンで分散処理するという機能は主にこの問題のために開発されている様子です。
国連憲章について、実験用に入力してみました。これを llama2 にプロンプトとして入れると、意訳的な何かを出力してくれます。
UN Maps Learning Hubのお話は非常に興味深かったですね!私もUNのCertificateほしいと思いましたw
ソウルで Diego Gonzalez と本件打合せができるかもしれませんね。打合せの材料を我々のプロジェクトとして積み上げていく、ということは試してみることができるかも知れません。
この件、実施に至る結果にならなさそうな雰囲気がありますね...。 いったんクローズしてもいいかも。
いったんクローズしてもいいかも。
+1です
クローズします!
From: https://twitter.com/K_Sakanoshita/status/1699200323779461160
ja (Original):
en (by DeepL):