Honyaku 7b V2
Honyaku-7b-v2是其前代模型的改進版本,在多語言生成標籤的遵循準確性上有所提升。
下載量 17
發布時間 : 4/7/2024
模型概述
Honyaku-7b-v2是一個多語言翻譯模型,主要用於500至數千標記的文本翻譯,特別擅長翻譯成日語。
模型特點
多語言生成精度提升
在多語言生成標籤的遵循精度上較前一版本有所提高
日語翻譯穩定性
基於基礎模型的特性,翻譯成日語最為穩定
長文本支持
已微調至8k標記,但基於基礎模型的特性,包括提示在內最多支持4k標記
模型能力
文本翻譯
多語言支持
長文本處理
使用案例
語言翻譯
文檔翻譯
將技術文檔或商業文件翻譯成目標語言
提供相對準確的翻譯結果,特別適合日語翻譯
內容本地化
幫助內容創作者將作品本地化為多種語言
支持100多種語言的翻譯需求
🚀 Honyaku-7b-v2
Honyaku-7b-v2是其前作的改進版本。與之前的版本相比,該模型在遵循多語言生成標籤方面表現出更高的準確性。
🚀 快速開始
Honyaku-7b-v2是一個強大的多語言翻譯模型,以下是使用它進行翻譯的不同示例代碼,你可以根據自己的需求選擇合適的方式。
✨ 主要特性
- 多語言生成精度提升:該模型在遵循多語言生成標籤方面的精度有所提高。
- 反映翻譯質量:Honyaku-7b的翻譯質量受基礎模型預訓練的影響很大。因此,翻譯質量與原始語言模型的訓練量成正比。
- 主要翻譯範圍:主要用於翻譯約500到數千個標記的文本。由於基礎模型的特性,翻譯成日語最為穩定。
- 標記支持範圍:該模型已針對最多8k個標記進行了微調,但基於基礎模型的特性,包括提示在內,最多支持4k個標記。
⚠️ 注意事項
⚠️ 重要提示
- 在小語種翻譯方面,該模型的表現不佳。
- 7b級別的大語言模型(LLM)的翻譯功能往往存在錯誤。請勿將未經檢查的文本用於社交溝通。
📦 安裝指南
文檔中未提及安裝步驟,故跳過此章節。
💻 使用示例
基礎用法
# Honyaku-7b-webui
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)
# 定義流處理器
streamer = TextStreamer(tokenizer)
# 定義英文提示
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.
"""
# 準備從英語到日語翻譯的提示
prompt = f"<english>: {english_prompt} </english>\n\n<japanese>:"
# 對輸入文本進行分詞並移動到CUDA設備
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
# 使用模型和流處理器生成輸出
output = model.generate(**inputs, max_new_tokens=4096, do_sample=True, top_k=20, top_p=0.95, streamer=streamer)
Gradio非流式生成
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()
📚 詳細文檔
文檔中未提及詳細說明內容,故跳過此章節。
🔧 技術細節
文檔中未提及技術實現細節,故跳過此章節。
📄 許可證
本項目採用 Apache-2.0 許可證。
📚 基礎模型
本模型基於 tokyotech-llm/Swallow-MS-7b-v0.1 構建。
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架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98