模型简介
模型特点
模型能力
使用案例
🚀 llm-jp-3.1-1.8b-instruct4
LLM-jp-3.1是由国立情报学研究所的大语言模型研究开发中心开发的一系列大语言模型。该系列模型基于LLM-jp-3构建,在训练过程中融入了指令预训练技术,相较于原始的LLM-jp-3模型,其遵循指令的能力得到了显著提升。
本仓库提供了llm-jp-3.1-1.8b-instruct4模型。如需了解不同参数规模的LLM-jp-3.1模型的概述,请参考:
有关训练过程和评估结果的更多详细信息,请参考此博客文章(日文)。
检查点格式:Hugging Face Transformers
🚀 快速开始
所需库及其版本
- torch>=2.3.0
- transformers>=4.40.1
- tokenizers>=0.19.1
- accelerate>=0.29.3
- flash-attn>=2.5.8
代码示例
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("llm-jp/llm-jp-3.1-1.8b-instruct4")
model = AutoModelForCausalLM.from_pretrained("llm-jp/llm-jp-3.1-1.8b-instruct4", device_map="auto", torch_dtype=torch.bfloat16)
chat = [
{"role": "system", "content": "以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"},
{"role": "user", "content": "自然言語処理とは何か"},
]
tokenized_input = tokenizer.apply_chat_template(chat, add_generation_prompt=True, tokenize=True, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
tokenized_input,
max_new_tokens=100,
do_sample=True,
top_p=0.95,
temperature=0.7,
repetition_penalty=1.05,
)[0]
print(tokenizer.decode(output))
✨ 主要特性
- 指令遵循能力强:通过融入指令预训练技术,显著提升了模型遵循指令的能力。
- 多语言支持:支持多种语言的处理,包括日语、英语、中文、韩语等。
- 多架构选择:提供了密集模型和MoE模型等不同架构的选择。
📦 安装指南
确保你已经安装了以下所需的库及其版本:
- torch>=2.3.0
- transformers>=4.40.1
- tokenizers>=0.19.1
- accelerate>=0.29.3
- flash-attn>=2.5.8
你可以使用以下命令来安装这些库:
pip install torch>=2.3.0 transformers>=4.40.1 tokenizers>=0.19.1 accelerate>=0.29.3 flash-attn>=2.5.8
💻 使用示例
基础用法
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("llm-jp/llm-jp-3.1-1.8b-instruct4")
model = AutoModelForCausalLM.from_pretrained("llm-jp/llm-jp-3.1-1.8b-instruct4", device_map="auto", torch_dtype=torch.bfloat16)
chat = [
{"role": "system", "content": "以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"},
{"role": "user", "content": "自然言語処理とは何か"},
]
tokenized_input = tokenizer.apply_chat_template(chat, add_generation_prompt=True, tokenize=True, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
tokenized_input,
max_new_tokens=100,
do_sample=True,
top_p=0.95,
temperature=0.7,
repetition_penalty=1.05,
)[0]
print(tokenizer.decode(output))
高级用法
# 你可以根据具体需求调整模型的参数,如max_new_tokens、top_p、temperature等,以获得不同的生成效果。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("llm-jp/llm-jp-3.1-1.8b-instruct4")
model = AutoModelForCausalLM.from_pretrained("llm-jp/llm-jp-3.1-1.8b-instruct4", device_map="auto", torch_dtype=torch.bfloat16)
chat = [
{"role": "system", "content": "以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"},
{"role": "user", "content": "请详细介绍自然语言处理的应用场景"},
]
tokenized_input = tokenizer.apply_chat_template(chat, add_generation_prompt=True, tokenize=True, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
tokenized_input,
max_new_tokens=200, # 增加生成的最大新令牌数
do_sample=True,
top_p=0.9, # 调整top_p值
temperature=0.8, # 调整temperature值
repetition_penalty=1.1, # 调整重复惩罚值
)[0]
print(tokenizer.decode(output))
📚 详细文档
模型详情
属性 | 详情 |
---|---|
模型类型 | 基于Transformer的语言模型 |
架构 | 密集模型和MoE模型 |
密集模型架构参数
参数 | 层数 | 隐藏层大小 | 头数 | 上下文长度 | 嵌入参数 | 非嵌入参数 |
---|---|---|---|---|---|---|
1.8b | 24 | 2048 | 16 | 4096 | 407,498,752 | 1,459,718,144 |
13b | 40 | 5120 | 40 | 4096 | 1,018,746,880 | 12,688,184,320 |
MoE模型架构参数
参数 | 层数 | 隐藏层大小 | 头数 | 路由专家数 | 激活专家数 | 上下文长度 | 嵌入参数 | 非嵌入参数 | 激活参数 | 总参数 |
---|---|---|---|---|---|---|---|---|---|---|
8x13b | 40 | 5120 | 40 | 8 | 2 | 4096 | 1,018,746,880 | 72,144,081,920 | 22,200,806,400 | 73,162,828,800 |
分词器
该模型的分词器基于huggingface/tokenizers的Unigram字节回退模型。词汇表条目是从llm-jp-tokenizer v3.0
转换而来的。有关词汇表构建过程的详细信息,请参考llm-jp-tokenizer
的README.md(纯SentencePiece训练无法复现我们的词汇表)。
数据集
预训练
模型使用了以下数据集的混合进行预训练:
语言 | 数据集 | 令牌数 |
---|---|---|
日语 | Wikipedia | 2.6B |
Common Crawl | 762.8B | |
WARP/PDF | 237.3B | |
WARP/HTML | 2.7B | |
Kaken | 1.8B | |
英语 | Wikipedia | 4.7B |
Dolma/CC-head | 608.5B | |
Dolma/C4 | 181.6B | |
Dolma/Reddit | 83.1B | |
Dolma/PeS2o | 62.9B | |
Dolma/Gutenberg | 5.5B | |
Dolma/Wiki | 3.9B | |
代码 | The Stack | 114.1B |
中文 | Wikipedia | 0.8B |
韩语 | Wikipedia | 0.3B |
中间训练
在LLM-jp-3.1系列中,我们基于指令预训练进行了连续预训练。指令预训练通过在大量的指令 - 响应对上继续预训练,增强了模型遵循指令的能力。我们准备了约900亿个令牌的指令 - 响应数据,并将其与预训练数据集混合,总共在4000亿个令牌上进行了连续预训练。每个模型都从现有的检查点(llm-jp/llm-jp-3-1.8b、llm-jp/llm-jp-3-13b和llm-jp/llm-jp-3-8x13b)初始化,并进行了连续的指令预训练。由于LLM-jp-3系列最初在21万亿个令牌上进行了预训练,因此总的预训练令牌数达到了25万亿个。
此训练过程的详细信息将在即将发表的论文中公布。用于此训练的指令 - 响应数据集也将公开提供。
后训练
我们使用有监督微调对预训练检查点进行了微调,并进一步使用直接偏好优化进行了对齐。
有监督微调
用于有监督微调的数据集如下:
语言 | 数据集 | 描述 |
---|---|---|
日语 | ichikara-instruction-004-002 | 手动构建的指令数据集。 |
AnswerCarefully (ver2.0) | 专注于大语言模型安全性的手动构建指令数据集。 | |
ichikara-instruction-format | ichikara-instruction数据集的一个小子集,对输出格式有一些约束。 | |
AutoMultiTurnByCalm3-22B | 合成指令数据集。 | |
ramdom-to-fixed-multiturn-Calm3 | 合成指令数据集。 | |
wizardlm8x22b-logical-math-coding-sft-ja | 合成指令数据集。 | |
magpie-sft-v1.0 | 我们创建的合成指令数据集。 | |
jaster v1.4.1 | - | |
extraction-wiki-ja | 我们创建的合成指令数据集。 | |
英语 | Daring-Anteater | - |
日语和英语 | Synthetic-JP-EN-Coding-Dataset | 合成指令数据集。 |
直接偏好优化
对于直接偏好优化(DPO),我们采用了拒绝采样的方法。从有监督微调使用的数据集中采样提示,并为每个提示生成多个响应。然后对这些响应进行评分(使用Qwen/Qwen2.5-32B-Instruct),将高分响应作为正例,低分响应作为负例进行DPO。
我们分两个阶段进行DPO。在第二阶段,我们额外使用了ac-self-inst,这是一个专注于安全性的日语偏好数据集。
评估
MT Bench(日语和英语)
我们使用gpt-4o-2024-08-06
对模型进行了评估。分数代表三轮推理和评估的平均值。有关更多详细信息,请参考代码。
模型名称 | 日语得分 | 英语得分 |
---|---|---|
gpt-35-turbo-1106 | 6.48 | 7.56 |
gpt-4-0613 | 7.29 | 7.72 |
gpt-4o-2024-08-06 | 8.10 | 8.38 |
sbintuitions/sarashina2.2-1b-instruct-v0.1 | 5.30 | 5.66 |
sbintuitions/sarashina2.2-3b-instruct-v0.1 | 7.07 | 6.96 |
Rakuten/RakutenAI-2.0-8x7B-instruct | 6.68 | 6.33 |
cyberagent/calm3-22b-chat | 6.86 | 6.77 |
Qwen/Qwen2.5-14B-Instruct | 7.07 | 7.99 |
Qwen/Qwen2.5-32B-Instruct | 7.64 | 8.27 |
Qwen/Qwen3-1.7B | 5.46 | 6.95 |
Qwen/Qwen3-14B | 8.00 | 8.30 |
Qwen/Qwen3-32B | 8.36 | 8.33 |
tokyotech-llm/Llama-3.3-Swallow-70B-Instruct-v0.4 | 7.64 | 8.02 |
stockmark/Stockmark-2-100B-Instruct-beta | 7.42 | 7.17 |
llm-jp-3-1.8b-instruct3 | 4.64 | 4.09 |
llm-jp-3-13b-instruct3 | 6.21 | 6.13 |
llm-jp-3-8x13b-instruct3 | 6.60 | 6.49 |
llm-jp-3.1-1.8b-instruct4 | 6.30 | 5.70 |
llm-jp-3.1-13b-instruct4 | 7.37 | 7.01 |
llm-jp-3.1-8x13b-instruct4 | 7.50 | 7.05 |
AnswerCarefully-Eval
AnswerCarefully-Eval使用LLM作为评判器的方法,基于llm-jp/AnswerCarefully的测试集评估日语语言模型输出的安全性。我们使用gpt-4o-2024-08-06
对模型进行了评估。分数代表三轮推理和评估的平均值。有关更多详细信息,请参考代码。
模型名称 | 得分 | 接受率(%,越高越好) | 违规率(%,越低越好) |
---|---|---|---|
gpt-35-turbo-1106 | 3.98 | 71.7 | 12.6 |
gpt-4-0613 | 4.06 | 72.3 | 13.2 |
gpt-4o-2024-08-06 | 4.09 | 72.7 | 12.5 |
llm-jp-3-1.8b-instruct3 | 4.03 | 75.9 | 12.2 |
llm-jp-3-13b-instruct3 | 4.37 | 88.4 | 6.5 |
llm-jp-3-8x13b-instruct3 | 4.48 | 91.6 | 4.3 |
llm-jp-3.1-1.8b-instruct4 | 3.66 | 64.7 | 24.3 |
llm-jp-3.1-13b-instruct4 | 4.17 | 82.4 | 12.2 |
llm-jp-3.1-8x13b-instruct4 | 4.26 | 83.1 | 11.6 |
🔧 技术细节
模型架构
模型基于Transformer架构,采用了密集模型和MoE模型等不同的架构设计,以满足不同的应用需求。
训练过程
模型的训练过程包括预训练、中间训练和后训练三个阶段。在预训练阶段,使用了多种语言和领域的数据集进行训练;在中间训练阶段,引入了指令预训练技术,以提升模型遵循指令的能力;在后训练阶段,使用有监督微调对预训练检查点进行了微调,并进一步使用直接偏好优化进行了对齐。
评估方法
使用MT Bench和AnswerCarefully-Eval等评估方法对模型进行评估,以确保模型在不同语言和任务上的性能和安全性。
📄 许可证
本项目采用Apache许可证2.0版。
模型卡片作者
姓名按字母顺序排列
Hirokazu Kiyomaru和Takashi Kodama。
发送问题至
llm-jp(at)nii.ac.jp
⚠️ 重要提示
此处发布的模型处于我们研发的早期阶段,尚未进行调整以确保输出符合人类意图和安全考虑。



