Japanese Gpt Neox 3.6b Instruction Ppo
模型简介
基于rinna/japanese-gpt-neox-3.6b-instruction-sft-v2模型,通过PPO强化学习训练,优化了指令遵循能力,适用于日语对话生成任务。
模型特点
强化学习优化
通过PPO强化学习训练,相比SFT版本在人工评估中胜率提高至47%
日语指令优化
专门针对日语指令理解与生成进行优化
对话格式支持
支持用户-系统对话格式输入,适合构建对话系统
模型能力
日语文本生成
指令理解与响应
对话系统构建
使用案例
对话系统
客服对话系统
用于构建日语客服对话系统
能够理解用户问题并提供相关解答
个人助手
开发日语个人数字助手
能够理解并执行用户指令
内容生成
日语内容创作
生成日语文章、故事等内容
能够生成连贯的日语文本
🚀 日语GPT-NeoX 36亿参数指令PPO模型
本项目提供了一个具有36亿参数的日语GPT - NeoX模型。该模型基于人类反馈强化学习(RLHF)进行训练,能够更好地遵循指令,为用户提供高质量的对话回复。
🚀 快速开始
模型使用示例
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# 加载预训练的分词器和模型
tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt-neox-3.6b-instruction-ppo", use_fast=False)
model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt-neox-3.6b-instruction-ppo")
# 如果GPU可用,将模型移动到GPU上
if torch.cuda.is_available():
model = model.to("cuda")
# 示例输入提示
prompt = [
{
"speaker": "ユーザー",
"text": "コンタクトレンズを慣れるにはどうすればよいですか?"
},
{
"speaker": "システム",
"text": "これについて具体的に説明していただけますか?何が難しいのでしょうか?"
},
{
"speaker": "ユーザー",
"text": "目が痛いのです。"
},
{
"speaker": "システム",
"text": "分かりました、コンタクトレンズをつけると目がかゆくなるということですね。思った以上にレンズを外す必要があるでしょうか?"
},
{
"speaker": "ユーザー",
"text": "いえ、レンズは外しませんが、目が赤くなるんです。"
}
]
prompt = [
f"{uttr['speaker']}: {uttr['text']}"
for uttr in prompt
]
prompt = "<NL>".join(prompt)
prompt = (
prompt
+ "<NL>"
+ "システム: "
)
# 对输入提示进行编码
token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
# 生成输出
with torch.no_grad():
output_ids = model.generate(
token_ids.to(model.device),
do_sample=True,
max_new_tokens=128,
temperature=0.7,
repetition_penalty=1.1,
pad_token_id=tokenizer.pad_token_id,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id
)
# 对输出进行解码
output = tokenizer.decode(output_ids.tolist()[0][token_ids.size(1):])
output = output.replace("<NL>", "\n")
print(output)
"""それは、コンタクトレンズが目に合わないために起こることがあります。レンズが目の表面に長時間触れ続けることが原因となることがあります。また、コンタクトレンズが汚れている可能性もあります。コンタクトレンズケースを定期的に洗浄したり、コンタクトレンズを正しくフィットさせるようにしたりすることが役立ちます。</s>"""
✨ 主要特性
模型架构
这是一个基于Transformer的语言模型,具有36层,隐藏层大小为2816。
人类反馈强化学习(RLHF)
本模型遵循OpenAI的InstructGPT论文,采用人类反馈强化学习(RLHF)使模型行为与输入指令保持一致。具体分为两个阶段训练:
- 监督微调(SFT):产生了
rinna/japanese-gpt-neox-3.6b-instruction-sft-v2
。 - 基于PPO的强化学习(RL):产生了本模型。
PPO与SFT评估
我们对100个提示进行了人工评估和基于ChatGPT的自动评估,以评估强化学习带来的性能提升。
PPO vs. SFT | 胜 | 平 | 负 |
---|---|---|---|
人工评估 | 47% | 30% | 23% |
ChatGPT自动评估 | 63% | 3% | 34% |
强化学习
在强化学习阶段,我们使用了CarperAI/trlx及其实现的PPO算法。RL数据是以下数据集的子集,并已翻译成日语:
模型系列
变体 | 链接 |
---|---|
36亿参数PPO | https://huggingface.co/rinna/japanese-gpt-neox-3.6b-instruction-ppo |
36亿参数SFT - v2 | https://huggingface.co/rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 |
36亿参数SFT | https://huggingface.co/rinna/japanese-gpt-neox-3.6b-instruction-sft |
36亿参数预训练 | https://huggingface.co/rinna/japanese-gpt-neox-3.6b |
贡献者
发布日期
2023年3月31日
📚 详细文档
局限性
我们发现此版本的PPO模型比其SFT对应版本更容易生成重复文本,因此我们设置repetition_penalty = 1.1
以获得更好的生成性能。(在上述评估实验中,相同的生成超参数也应用于SFT模型。)你也可以探索其他超参数组合,以获得更高的生成随机性/多样性,从而提高生成质量,例如temperature = 0.9, repetition_penalty = 1.0
。
输入输出格式
采用了一种特殊的格式来构建输入:
- 输入提示被格式化为
ユーザー
和システム
之间的对话。 - 每个输入语句由以下部分组成:
- 说话者(
"ユーザー"
或"システム"
)。 - 冒号(
":"
)。 - 空格(
" "
)。 - 语句文本(例如
"世界で一番高い山は?"
)。
- 说话者(
- 输入提示应以
"システム: "
结尾,以告知模型生成响应。 - 由于模型的分词器不识别
"\n"
,因此使用特殊的换行符号"<NL>"
代替。 - 输入和输出语句中的所有换行符都应替换为
"<NL>"
。 - 输入提示中的所有语句都应用
"<NL>"
分隔。
以下是一个从对话构建输入的示例:
prompt = [
{
"speaker": "ユーザー",
"text": "コンタクトレンズを慣れるにはどうすればよいですか?"
},
{
"speaker": "システム",
"text": "これについて具体的に説明していただけますか?何が難しいのでしょうか?"
},
{
"speaker": "ユーザー",
"text": "目が痛いのです。"
},
{
"speaker": "システム",
"text": "分かりました、コンタクトレンズをつけると目がかゆくなるということですね。思った以上にレンズを外す必要があるでしょうか?"
},
{
"speaker": "ユーザー",
"text": "いえ、レンズは外しませんが、目が赤くなるんです。"
}
]
prompt = [
f"{uttr['speaker']}: {uttr['text']}"
for uttr in prompt
]
prompt = "<NL>".join(prompt)
prompt = (
prompt
+ "<NL>"
+ "システム: "
)
print(prompt)
# "ユーザー: コンタクトレンズを慣れるにはどうすればよいですか?<NL>システム: これについて具体的に説明していただけますか?何が難しいのでしょうか?<NL>ユーザー: 目が痛いのです。<NL>システム: 分かりました、コンタクトレンズをつけると目がかゆくなるということですね。思った以上にレンズを外す必要があるでしょうか?<NL>ユーザー: いえ、レンズは外しませんが、目が赤くなるんです。<NL>システム: "
分词
模型使用基于sentencepiece的分词器:
- 分词器的词汇量为32,000。
- 它使用sentencepiece的字节回退功能,将未知文本片段分解为UTF - 8字节片段,避免产生
<UNK>
标记。 - sentencepiece的
--add_dummy_prefix
选项已关闭,因此不会自动添加前导空格。
print(tokenizer.tokenize("吾輩は猫である"))
# ['吾', '輩', 'は', '猫', 'である']
# 而不是像rinna/japanese-gpt-1b那样的['▁', '吾', '輩', 'は', '猫', 'である']
- sentencepiece的
--remove_extra_whitespaces
选项已关闭,因此会保留前导、尾随及重复的空格。
print(tokenizer.tokenize(" 吾輩は 猫である "))
# ['▁', '▁', '吾', '輩', 'は', '▁', '▁', '猫', 'である', '▁', '▁', '▁']
# 而不是像rinna/japanese-gpt-1b那样的['▁', '吾', '輩', 'は', '▁猫', 'である']
- 别忘了设置
use_fast = False
,以使上述功能正常工作。
good_tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt-neox-3.6b", use_fast=False)
bad_tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt-neox-3.6b")
print(good_tokenizer.decode(good_tokenizer.encode("გამარჯობა 吾輩は 猫である ")))
# 'გამარჯობა 吾輩は 猫である </s>'
print(bad_tokenizer.decode(bad_tokenizer.encode("გამარჯობა 吾輩は 猫である ")))
# 'გამარ[UNK]ობა 吾輩は 猫である </s>'
引用方式
@misc{rinna-japanese-gpt-neox-3.6b-instruction-ppo,
title = {rinna/japanese-gpt-neox-3.6b-instruction-ppo},
author = {Zhao, Tianyu and Sawada, Kei},
url = {https://huggingface.co/rinna/japanese-gpt-neox-3.6b-instruction-ppo}
}
@inproceedings{sawada2024release,
title = {Release of Pre-Trained Models for the {J}apanese Language},
author = {Sawada, Kei and Zhao, Tianyu and Shing, Makoto and Mitsui, Kentaro and Kaga, Akio and Hono, Yukiya and Wakatsuki, Toshiaki and Mitsuda, Koh},
booktitle = {Proceedings of the 2024 Joint International Conference on Computational Linguistics, Language Resources and Evaluation (LREC-COLING 2024)},
month = {5},
year = {2024},
pages = {13898--13905},
url = {https://aclanthology.org/2024.lrec-main.1213},
note = {\url{https://arxiv.org/abs/2404.01657}}
}
📄 许可证
本项目采用MIT许可证。
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