模型概述
模型特點
模型能力
使用案例
🚀 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
⚠️ 重要提示
此處發佈的模型處於我們研發的早期階段,尚未進行調整以確保輸出符合人類意圖和安全考慮。



