模型简介
模型特点
模型能力
使用案例
许可证:其他
许可证名称:llama-3
许可证链接:https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct/raw/main/LICENSE
基础模型:meta-llama/Meta-Llama-3-8B-Instruct
标签:
- 训练生成
模型索引: - 名称:lightblue/suzume-llama-3-8B-multilingual
结果:[]
Suzume
这是Suzume 8B,基于Llama 3(meta-llama/Meta-Llama-3-8B-Instruct)的多语言微调版本。
Llama 3在许多英语基准测试中表现出色。然而,它似乎主要在英语数据上进行了微调,这意味着即使用其他语言提示,它也会用英语回应。
我们在近90,000个多语言对话上对Llama 3进行了微调,因此该模型不仅具备Llama 3的智能,还增加了用更多语言交流的能力。
欢迎在社区选项卡中评论此模型并给我们反馈!
我们未来将发布一篇论文,描述我们如何制作训练数据、模型以及进行的评估。
使用方法
在您自己的计算机上使用此模型的最简单方法是使用此模型的GGUF版本(lightblue/suzume-llama-3-8B-multilingual-gguf),配合jan.ai或LM Studio等程序。
如果您想在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}")
评估分数
我们在6种语言上取得了以下MT-Bench分数:
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 |
*(注意俄语分数排除了代码、推理和数学问题,因为这些问题的翻译参考答案缺失。)
我们观察到Llama 3的英语能力仅有轻微下降,同时在多语言能力上达到了与Chatbot Arena排行榜上评分最高的7B模型(Nexusflow/Starling-LM-7B-beta)相比的最佳水平。
训练数据
我们使用三种数据源来训练此模型:
- 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")
workspace/llm_training/axolotl/llama3-multilingual/output_tagengo_openchat_megagon_8B_llama3
此模型是在上述数据集上对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 # see other options below
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模板添加到fastchat中,因为训练此模型时Llama 3聊天模板尚未支持。
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)训练了约2.5小时。
训练期间使用了以下超参数:
- 学习率:1e-05
- 训练批次大小:2
- 评估批次大小:2
- 随机种子:42
- 分布式类型:多GPU
- 设备数量:4
- 梯度累积步数:2
- 总训练批次大小:16
- 总评估批次大小:8
- 优化器:Adam,betas=(0.9,0.999),epsilon=1e-08
- 学习率调度器类型:cosine
- 学习率调度器预热步数: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
引用方式
引用此模型时请引用此论文。
@article{devine2024tagengo,
title={Tagengo: A Multilingual Chat Dataset},
author={Devine, Peter},
journal={arXiv preprint arXiv:2405.12612},
year={2024}
}
开发者
Peter Devine - (ptrdvn)


