Honyaku 7b V2
Honyaku-7b-v2は前世代モデルの改良版で、多言語生成タグの遵守精度が向上しています。
ダウンロード数 17
リリース時間 : 4/7/2024
モデル概要
Honyaku-7b-v2は多言語翻訳モデルで、主に500から数千トークンのテキスト翻訳に使用され、特に日本語への翻訳に優れています。
モデル特徴
多言語生成精度向上
多言語生成タグの遵守精度が前バージョンより向上しました
日本語翻訳の安定性
ベースモデルの特性上、日本語への翻訳が最も安定しています
長文サポート
8kトークンまで微調整されていますが、ベースモデルの特性上、プロンプトを含めて最大4kトークンまでサポートします
モデル能力
テキスト翻訳
多言語サポート
長文処理
使用事例
言語翻訳
ドキュメント翻訳
技術文書やビジネス文書を対象言語に翻訳
比較的正確な翻訳結果を提供し、特に日本語翻訳に適しています
コンテンツのローカライズ
コンテンツクリエイターが作品を多言語にローカライズするのを支援
100以上の言語の翻訳ニーズをサポート
🚀 Honyaku-7b-v2
Honyaku-7b-v2は、前バージョンを改良したモデルです。多言語生成タグへの追従精度が向上し、翻訳品質も安定しています。主に500~数千トークンの翻訳を目的としており、日本語への翻訳が最も安定しています。
✨ 主な機能
- 多言語生成の精度向上:モデルは、多言語生成タグに対する追従の精度が向上しました。
- 翻訳品質の反映:Honyaku-7bの翻訳品質は、ベースモデルの事前学習に強く影響されます。翻訳品質は、元の言語モデルの学習量に比例して変わります。
- 特定トークン範囲の翻訳:500~数1000 tokenの翻訳を主目的としています。ただし、短すぎる文や長すぎる文では性能が低下することがあります。
- 日本語翻訳の安定性:Base modelの特徴から、日本語への翻訳が最も安定しています。
- トークン対応範囲:8k tokenまでファインチューニングしていますが、Base modelの特徴からprompt含めて4k tokenにまで対応とします。
⚠️ 注意事項
- マイナー言語の翻訳機能:マイナーな言語においては、翻訳がうまく機能しません。
- 7bレベルLLMの誤り:7bレベルの大規模言語モデル(LLM)の翻訳機能には誤りが多くみられます。未チェックの文章は、正式なコミュニケーションには使用しないでください。
💻 使用例
基本的な使用法
import gradio as gr
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, StoppingCriteria, StoppingCriteriaList, TextIteratorStreamer
from threading import Thread
# 言語リスト
languages = [
"English", "Chinese (Simplified)", "Chinese (Traditional)", "Spanish", "Arabic", "Hindi",
"Bengali", "Portuguese", "Russian", "Japanese", "German", "French", "Urdu", "Indonesian",
"Italian", "Turkish", "Korean", "Vietnamese", "Tamil", "Marathi", "Telugu", "Persian",
"Polish", "Dutch", "Thai", "Gujarati", "Romanian", "Ukrainian", "Malay", "Kannada", "Oriya (Odia)",
"Burmese (Myanmar)", "Azerbaijani", "Uzbek", "Kurdish (Kurmanji)", "Swedish", "Filipino (Tagalog)",
"Serbian", "Czech", "Hungarian", "Greek", "Belarusian", "Bulgarian", "Hebrew", "Finnish",
"Slovak", "Norwegian", "Danish", "Sinhala", "Croatian", "Lithuanian", "Slovenian", "Latvian",
"Estonian", "Armenian", "Malayalam", "Georgian", "Mongolian", "Afrikaans", "Nepali", "Pashto",
"Punjabi", "Kurdish", "Kyrgyz", "Somali", "Albanian", "Icelandic", "Basque", "Luxembourgish",
"Macedonian", "Maltese", "Hawaiian", "Yoruba", "Maori", "Zulu", "Welsh", "Swahili", "Haitian Creole",
"Lao", "Amharic", "Khmer", "Javanese", "Kazakh", "Malagasy", "Sindhi", "Sundanese", "Tajik", "Xhosa",
"Yiddish", "Bosnian", "Cebuano", "Chichewa", "Corsican", "Esperanto", "Frisian", "Galician", "Hausa",
"Hmong", "Igbo", "Irish", "Kinyarwanda", "Latin", "Samoan", "Scots Gaelic", "Sesotho", "Shona",
"Sotho", "Swedish", "Uyghur"
]
tokenizer = AutoTokenizer.from_pretrained("aixsatoshi/Honyaku-7b-v2")
model = AutoModelForCausalLM.from_pretrained("aixsatoshi/Honyaku-7b-v2", torch_dtype=torch.float16)
model = model.to('cuda:0')
class StopOnTokens(StoppingCriteria):
def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
stop_ids = [2]
for stop_id in stop_ids:
if input_ids[0][-1] == stop_id:
return True
return False
def predict(message, history, tokens, temperature, language):
tag = "<" + language.lower() + ">"
history_transformer_format = history + [[message, ""]]
stop = StopOnTokens()
messages = "".join(["".join(["\n<english>:"+item[0]+"</english>\n", tag+item[1]])
for item in history_transformer_format])
model_inputs = tokenizer([messages], return_tensors="pt").to("cuda")
streamer = TextIteratorStreamer(tokenizer, timeout=10., skip_prompt=True, skip_special_tokens=True)
generate_kwargs = dict(
model_inputs,
streamer=streamer,
max_new_tokens=int(tokens),
temperature=float(temperature),
do_sample=True,
top_p=0.95,
top_k=20,
repetition_penalty=1.15,
num_beams=1,
stopping_criteria=StoppingCriteriaList([stop])
)
t = Thread(target=model.generate, kwargs=generate_kwargs)
t.start()
partial_message = ""
for new_token in streamer:
if new_token != '<':
partial_message += new_token
yield partial_message
# Gradioインタフェースの設定
demo = gr.ChatInterface(
fn=predict,
title="Honyaku-7b webui",
description="Translate using Honyaku-7b model",
additional_inputs=[
gr.Slider(100, 4096, value=1000, label="Tokens"),
gr.Slider(0.0, 1.0, value=0.3, label="Temperature"),
gr.Dropdown(choices=languages, value="Japanese", label="Language")
]
)
demo.queue().launch()
高度な使用法
Textstreamer
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
model_name = "aixsatoshi/Honyaku-7b-v2"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Define the streamer
streamer = TextStreamer(tokenizer)
# Define the English prompt
english_prompt = """
Machine translation accuracy varies greatly across languages.
Key challenges include context understanding, idiomatic expressions, and syntactic differences.
Advanced models leverage AI to enhance translation quality, focusing on nuances and cultural relevance.
To address these challenges, developers employ neural networks and deep learning techniques, which adapt to linguistic variations and learn from vast amounts of text.
This approach helps in capturing the essence of languages and accurately translating complex sentences.
Furthermore, user feedback plays a crucial role in refining translation algorithms.
By analyzing corrections and suggestions, machine translation systems can evolve and handle nuanced expressions more effectively.
This iterative process ensures continuous improvement, making translations more reliable and understandable for a global audience.
"""
# Prepare the prompt for English to Japanese translation
prompt = f"<english>: {english_prompt} </english>\n\n<japanese>:"
# Tokenize the input text and move to CUDA device
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
# Generate the output using the model and streamer
output = model.generate(**inputs, max_new_tokens=4096, do_sample=True, top_k=20, top_p=0.95, streamer=streamer)
Gradio non - streaming generation
import gradio as gr
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
languages = [
"English", "Chinese (Simplified)", "Chinese (Traditional)", "Spanish", "Arabic", "Hindi",
"Bengali", "Portuguese", "Russian", "Japanese", "German", "French", "Urdu", "Indonesian",
"Italian", "Turkish", "Korean", "Vietnamese", "Tamil", "Marathi", "Telugu", "Persian",
"Polish", "Dutch", "Thai", "Gujarati", "Romanian", "Ukrainian", "Malay", "Kannada", "Oriya (Odia)",
"Burmese (Myanmar)", "Azerbaijani", "Uzbek", "Kurdish (Kurmanji)", "Swedish", "Filipino (Tagalog)",
"Serbian", "Czech", "Hungarian", "Greek", "Belarusian", "Bulgarian", "Hebrew", "Finnish",
"Slovak", "Norwegian", "Danish", "Sinhala", "Croatian", "Lithuanian", "Slovenian", "Latvian",
"Estonian", "Armenian", "Malayalam", "Georgian", "Mongolian", "Afrikaans", "Nepali", "Pashto",
"Punjabi", "Kurdish", "Kyrgyz", "Somali", "Albanian", "Icelandic", "Basque", "Luxembourgish",
"Macedonian", "Maltese", "Hawaiian", "Yoruba", "Maori", "Zulu", "Welsh", "Swahili", "Haitian Creole",
"Lao", "Amharic", "Khmer", "Javanese", "Kazakh", "Malagasy", "Sindhi", "Sundanese", "Tajik", "Xhosa",
"Yiddish", "Bosnian", "Cebuano", "Chichewa", "Corsican", "Esperanto", "Frisian", "Galician", "Hausa",
"Hmong", "Igbo", "Irish", "Kinyarwanda", "Latin", "Samoan", "Scots Gaelic", "Sesotho", "Shona",
"Sotho", "Swedish", "Uyghur"
]
tokenizer = AutoTokenizer.from_pretrained("aixsatoshi/Honyaku-7b-v2")
model = AutoModelForCausalLM.from_pretrained("aixsatoshi/Honyaku-7b-v2", torch_dtype=torch.float16)
model = model.to('cuda:0')
def predict(message, tokens, temperature, language):
tag = "<" + language.lower() + ">"
messages = "\n<english>:" + message + "</english>\n" + tag
model_inputs = tokenizer([messages], return_tensors="pt").to("cuda")
output = model.generate(
**model_inputs,
max_new_tokens=int(tokens),
temperature=float(temperature),
do_sample=True,
top_p=0.95,
top_k=20,
repetition_penalty=1.15,
num_beams=1,
eos_token_id=tokenizer.eos_token_id
)
translation = tokenizer.decode(output[0], skip_special_tokens=True)
return translation
# Gradioインタフェースの設定
inputs = [
gr.Textbox(label="Message", lines=20),
gr.Slider(100, 4096, value=1000, label="Tokens"),
gr.Slider(0.0, 1.0, value=0.3, label="Temperature"),
gr.Dropdown(choices=languages, value="Japanese", label="Language")
]
output = gr.Textbox(label="Translation", lines=35)
demo = gr.Interface(
fn=predict,
inputs=inputs,
outputs=output,
title="Honyaku-7b webui",
description="Translate using Honyaku-7b model",
live=False, # 明示的にボタンをクリックして翻訳を実行する
allow_flagging=False
)
demo.launch()
📚 ベースモデル
tokyotech-llm/Swallow-MS-7b-v0.1
📄 ライセンス
Apache-2.0
M2m100 418M
MIT
M2M100は100言語に対応した9900の翻訳方向をサポートする多言語エンコーダーデコーダーモデルです
機械翻訳 複数言語対応
M
facebook
1.6M
299
Opus Mt Fr En
Apache-2.0
Transformerベースのフランス語から英語への神経機械翻訳モデルで、Helsinki-NLPチームによって開発され、OPUS多言語データセットを用いて訓練されました。
機械翻訳 複数言語対応
O
Helsinki-NLP
1.2M
44
Opus Mt Ar En
Apache-2.0
OPUSデータを基に訓練された、transformer-alignアーキテクチャを採用したアラビア語から英語への機械翻訳モデル
機械翻訳 複数言語対応
O
Helsinki-NLP
579.41k
42
M2m100 1.2B
MIT
M2M100は100言語をサポートする多言語機械翻訳モデルで、9900の翻訳方向間で直接翻訳できます。
機械翻訳 複数言語対応
M
facebook
501.82k
167
Indictrans2 Indic En 1B
MIT
25のインド言語と英語の相互翻訳をサポートする1.1Bパラメータ規模の機械翻訳モデル、AI4Bharatプロジェクトによって開発
機械翻訳
Transformers 複数言語対応

I
ai4bharat
473.63k
14
Opus Mt En Zh
Apache-2.0
Transformerアーキテクチャに基づく英語 - 中国語多方言翻訳モデルで、英語から13種類の中国語バリエーションへの翻訳タスクをサポートします。
機械翻訳 複数言語対応
O
Helsinki-NLP
442.08k
367
Opus Mt Zh En
ヘルシンキ大学によって開発された、OPUSコーパスに基づく中国語から英語への機械翻訳モデル
機械翻訳 複数言語対応
O
Helsinki-NLP
441.24k
505
Mbart Large 50 Many To Many Mmt
mBART-large-50をファインチューニングした多言語機械翻訳モデルで、50言語間の相互翻訳をサポート
機械翻訳 複数言語対応
M
facebook
404.66k
357
Opus Mt De En
Apache-2.0
opus-mt-de-enは、transformer-alignアーキテクチャに基づくドイツ語から英語への機械翻訳モデルで、Helsinki-NLPチームによって開発されました。
機械翻訳 複数言語対応
O
Helsinki-NLP
404.33k
44
Opus Mt Es En
Apache-2.0
これはTransformerアーキテクチャに基づくスペイン語から英語への機械翻訳モデルで、Helsinki - NLPチームによって開発されました。
機械翻訳
Transformers 複数言語対応

O
Helsinki-NLP
385.40k
71
おすすめAIモデル
Llama 3 Typhoon V1.5x 8b Instruct
タイ語専用に設計された80億パラメータの命令モデルで、GPT-3.5-turboに匹敵する性能を持ち、アプリケーションシナリオ、検索拡張生成、制限付き生成、推論タスクを最適化
大規模言語モデル
Transformers 複数言語対応

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-TinyはSODAデータセットでトレーニングされた超小型対話モデルで、エッジデバイス推論向けに設計されており、体積はCosmo-3Bモデルの約2%です。
対話システム
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
RoBERTaアーキテクチャに基づく中国語抽出型QAモデルで、与えられたテキストから回答を抽出するタスクに適しています。
質問応答システム 中国語
R
uer
2,694
98