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