Suzume Llama 3 8B Multilingual
Suzume 8B是基于Llama 3的多语言微调版本,在近90,000个多语言对话上进行训练,增强了多语言交流能力,同时保持了Llama 3的智能水平。
下载量 9,494
发布时间 : 4/23/2024
模型简介
该模型在Llama 3基础上进行了多语言微调,解决了原版Llama 3仅擅长英语的问题,使其能够用多种语言进行交流,同时保持了原模型的智能水平。
模型特点
多语言支持
在Llama 3基础上增加了对德语、法语、日语、俄语和中文的支持,能够用多种语言进行交流
保持英语能力
在增强多语言能力的同时,英语能力仅有轻微下降,保持了Llama 3的高水平表现
高质量训练数据
使用了近90,000个多语言对话进行微调,包括GPT-4生成的数据和人工编辑的数据集
模型能力
多语言文本生成
对话系统
指令跟随
使用案例
多语言聊天助手
多语言客服机器人
可用于支持多种语言的客户服务场景
在MT-Bench测试中表现优于同类7B模型
语言学习助手
帮助用户练习不同语言的对话
🚀 铃雀模型(Suzume)
铃雀模型(Suzume)是基于Llama 3微调的多语言模型,旨在解决Llama 3在多语言场景下响应语言单一的问题,提升模型在多种语言上的交互能力,为用户提供更广泛语言支持的对话体验。
🚀 快速开始
本地使用
在本地计算机上使用此模型的最简单方法是使用 GGUF版本的模型 (lightblue/suzume-llama-3-8B-multilingual-gguf),搭配 jan.ai 或 LM Studio 等程序。
Python环境使用
如果想在Python中直接使用该模型,建议使用vLLM以获得最快的推理速度。
from vllm import LLM, SamplingParams
sampling_params = SamplingParams(temperature=0.0, max_tokens=100)
llm = LLM(model="lightblue/suzume-llama-3-8B-multilingual")
messages = []
messages.append({"role": "user", "content": "Bonjour!"})
prompt = llm.llm_engine.tokenizer.tokenizer.apply_chat_template(conversation=messages, add_generation_prompt=True, tokenize=False)
prompts = [prompt]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
✨ 主要特性
- 多语言能力:对Llama 3进行微调,在近90,000条多语言对话数据上训练,使模型在保留Llama 3英语能力的同时,具备出色的多语言对话能力。
- 性能表现:在多种语言的MT-Bench评分中表现优异,与顶级7B模型相比,在多语言能力上达到了同类最佳水平,同时英语能力的下降幅度极小。
📊 评估分数
语言 | meta-llama/Meta-Llama-3-8B-Instruct | lightblue/suzume-llama-3-8B-multilingual | Nexusflow/Starling-LM-7B-beta | gpt-3.5-turbo |
---|---|---|---|---|
德语 🇩🇪 | NaN | 7.26 | 6.99 | 7.68 |
法语 🇫🇷 | NaN | 7.66 | 7.29 | 7.74 |
日语 🇯🇵 | NaN | 6.56 | 6.22 | 7.84 |
俄语 🇷🇺 * | NaN | 8.19 | 8.28 | 7.94 |
中文 🇨🇳 | NaN | 7.11 | 6.97 | 7.55 |
英语 🇺🇸 | 7.98 | 7.73 | 7.92 | 8.26 |
*(注意:由于这些问题没有翻译后的参考答案,俄语分数不包括代码、推理和数学问题。)
我们在 Chatbot Arena排行榜 上观察到,与顶级7B模型(Nexusflow/Starling-LM-7B-beta)相比,该模型在实现同类最佳多语言能力的同时,Llama 3的英语能力仅有极小的下降。
📦 训练数据
我们使用三个数据源的数据来训练此模型:
- lightblue/tagengo-gpt4 - 76,338条对话
- 这是一个多样化的数据集,其初始输入样本来自 lmsys/lmsys-chat-1m,然后用于提示
gpt-4-0125-preview
。
- 这是一个多样化的数据集,其初始输入样本来自 lmsys/lmsys-chat-1m,然后用于提示
- megagonlabs/instruction_ja - 669条对话
- 这是一个手工编辑的数据集,包含近700条日语对话,最初来自 kunishou/hh-rlhf-49k-ja 数据集的翻译。
- openchat/openchat_sharegpt4_dataset - 6,206条对话
- 人类与GPT - 4对话的多语言对话数据。
我们的数据准备方式如下:
import pandas as pd
from datasets import Dataset, load_dataset, concatenate_datasets
### Tagengo
gpt4_dataset = load_dataset("lightblue/tagengo-gpt4", split="train")
gpt4_dataset = gpt4_dataset.filter(lambda x: x["response"][1] == "stop")
####
### Megagon
megagon_df = pd.read_json(
"https://raw.githubusercontent.com/megagonlabs/instruction_ja/main/data/data.jsonl",
lines=True,
orient="records"
)
role_map = {"user": "human", "agent": "gpt"}
megagon_df["conversations"] = megagon_df.utterances.apply(lambda x: [{"from": role_map[y["name"]], "value": y["text"]} for y in x])
megagon_df["language"] = "Japanese"
megagon_df = megagon_df[["conversations", "language"]]
megagon_dataset = Dataset.from_pandas(df)
###
### Openchat
openchat_df = pd.read_json("https://huggingface.co/datasets/openchat/openchat_sharegpt4_dataset/resolve/main/sharegpt_gpt4.json?download=true")
openchat_df["conversations"] = openchat_df["items"]
openchat_dataset = Dataset.from_pandas(openchat_df)
###
dataset = concatenate_datasets([gpt4_dataset, megagon_dataset, openchat_dataset])
dataset = dataset.filter(lambda x: not any([y["value"] is None for y in x["conversations"]]))
dataset.select_columns(["conversations"]).to_json("/workspace/llm_training/axolotl/llama3-multilingual/tagengo_openchat_megagon.json")
📚 详细文档
模型信息
该模型是 meta-llama/Meta-Llama-3-8B-Instruct 在上述数据集上的微调版本。它在评估集上取得了以下结果:
- 损失:0.6595
训练过程
查看Axolotl配置
Axolotl版本:0.4.0
base_model: meta-llama/Meta-Llama-3-8B-Instruct
model_type: LlamaForCausalLM
tokenizer_type: AutoTokenizer # PreTrainedTokenizerFast
load_in_8bit: false
load_in_4bit: false
strict: false
datasets:
- path: /workspace/llm_training/axolotl/llama3-multilingual/tagengo_openchat_megagon.json
ds_type: json # 查看以下其他选项
type: sharegpt
conversation: llama-3
dataset_prepared_path: /workspace/llm_training/axolotl/llama3-multilingual/prepared_tagengo_openchat_megagon
val_set_size: 0.01
output_dir: /workspace/llm_training/axolotl/llama3-multilingual/output_tagengo_openchat_megagon_8B_llama3
sequence_len: 8192
sample_packing: true
pad_to_sequence_len: true
use_wandb: true
wandb_project: wandb_project
wandb_entity: wandb_entity
wandb_name: wandb_name
gradient_accumulation_steps: 2
micro_batch_size: 2
num_epochs: 1
optimizer: paged_adamw_8bit
lr_scheduler: cosine
learning_rate: 1e-5
train_on_inputs: false
group_by_length: false
bf16: auto
fp16:
tf32: false
gradient_checkpointing: true
gradient_checkpointing_kwargs:
use_reentrant: false
early_stopping_patience:
resume_from_checkpoint:
logging_steps: 1
xformers_attention:
flash_attention: true
warmup_steps: 10
evals_per_epoch: 5
eval_table_size:
saves_per_epoch: 1
debug:
deepspeed: /workspace/axolotl/deepspeed_configs/zero2.json
weight_decay: 0.0
special_tokens:
pad_token: <|end_of_text|>
注意 - 由于在训练此模型时不支持Llama 3聊天模板,我们直接将此Llama 3模板添加到FastChat中。
from fastchat.conversation import Conversation
from fastchat.conversation import register_conv_template
from fastchat.conversation import SeparatorStyle
register_conv_template(
Conversation(
name="llama-3",
system_template="<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n{system_message}",
roles=("<|start_header_id|>user<|end_header_id|>\n", "<|start_header_id|>assistant<|end_header_id|>\n"),
sep_style=SeparatorStyle.ADD_NEW_LINE_SINGLE,
sep="<|eot_id|>",
stop_token_ids=[128009],
stop_str="<|eot_id|>",
)
)
训练超参数
该模型使用4个A100(80GB)GPU训练了大约2.5小时。
训练期间使用了以下超参数:
- 学习率:1e - 05
- 训练批次大小:2
- 评估批次大小:2
- 随机种子:42
- 分布式类型:多GPU
- 设备数量:4
- 梯度累积步数:2
- 总训练批次大小:16
- 总评估批次大小:8
- 优化器:Adam,β=(0.9, 0.999),ε = 1e - 08
- 学习率调度器类型:余弦
- 学习率调度器热身步数:10
- 训练轮数:1
训练结果
训练损失 | 轮数 | 步数 | 验证损失 |
---|---|---|---|
1.1894 | 0.0 | 1 | 1.0110 |
0.8493 | 0.2 | 73 | 0.7057 |
0.8047 | 0.4 | 146 | 0.6835 |
0.7644 | 0.6 | 219 | 0.6687 |
0.7528 | 0.8 | 292 | 0.6615 |
0.7794 | 1.0 | 365 | 0.6595 |
框架版本
- Transformers 4.38.2
- Pytorch 2.2.1+cu121
- Datasets 2.18.0
- Tokenizers 0.15.0
📄 许可证
本模型使用的许可证为 llama - 3。
📝 引用方式
引用此模型时,请引用 这篇论文。
@article{devine2024tagengo,
title={Tagengo: A Multilingual Chat Dataset},
author={Devine, Peter},
journal={arXiv preprint arXiv:2405.12612},
year={2024}
}
👨💻 开发者
Peter Devine - (ptrdvn)
Phi 2 GGUF
其他
Phi-2是微软开发的一个小型但强大的语言模型,具有27亿参数,专注于高效推理和高质量文本生成。
大型语言模型 支持多种语言
P
TheBloke
41.5M
205
Roberta Large
MIT
基于掩码语言建模目标预训练的大型英语语言模型,采用改进的BERT训练方法
大型语言模型 英语
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基础模型的蒸馏版本,在保持相近性能的同时更轻量高效,适用于序列分类、标记分类等自然语言处理任务。
大型语言模型 英语
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一个多语言大语言模型,针对多语言对话用例进行了优化,在常见的行业基准测试中表现优异。
大型语言模型 英语
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基于100种语言的2.5TB过滤CommonCrawl数据预训练的多语言模型,采用掩码语言建模目标进行训练。
大型语言模型 支持多种语言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基于Transformer架构的英语预训练模型,通过掩码语言建模目标在海量文本上训练,支持文本特征提取和下游任务微调
大型语言模型 英语
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI发布的开放预训练Transformer语言模型套件,参数量从1.25亿到1750亿,旨在对标GPT-3系列性能,同时促进大规模语言模型的开放研究。
大型语言模型 英语
O
facebook
6.3M
198
1
基于transformers库的预训练模型,适用于多种NLP任务
大型语言模型
Transformers

1
unslothai
6.2M
1
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多语言大语言模型系列,包含8B、70B和405B参数规模,支持8种语言和代码生成,优化了多语言对话场景。
大型语言模型
Transformers 支持多种语言

L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基础版是由Google开发的文本到文本转换Transformer模型,参数规模2.2亿,支持多语言NLP任务。
大型语言模型 支持多种语言
T
google-t5
5.4M
702
精选推荐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