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