
本仓库提供一个参数量为38亿的英日双语GPT-NeoX模型。
该模型基于rinna/bilingual-gpt-neox-4b-instruction-sft构建,并已对齐为一个遵循指令的对话代理。
模型架构
一个拥有36层、2816隐藏维度的基于Transformer的语言模型。
RLHF
遵循OpenAI InstructGPT论文,基于人类反馈的强化学习(RLHF)已被用于使模型行为与输入指令对齐。具体而言,模型训练分为两个阶段,即有监督微调(SFT)和基于PPO的强化学习(RL)。
rinna/bilingual-gpt-neox-4b-instruction-sft。强化学习
我们在RL阶段使用了[CarperAI/trlx]及其PPO算法实现。
RL数据是以下数据集的子集,并已被翻译成日语。
模型系列
| 变体 | 链接 |
|---|---|
| 双语4B MiniGPT4 | |
| 双语4B PPO | https://modelers.cn/models/FuJianAscend/bilingual-gpt-neox-4b-instruction-ppo |
| 双语4B SFT | https://modelers.cn/models/FuJianAscend/bilingual-gpt-neox-4b-instruction-sft |
| 双语4B 8K | |
| 双语4B | https://modelers.cn/models/FuJianAscend/bilingual-gpt-neox-4b |
| 日语3.6B PPO | |
| 日语3.6B SFT-v2 | |
| 日语3.6B SFT | |
| 日语3.6B |
贡献者
[Tianyu Zhao] 和 [Kei Sawada]
我们的评估实验表明,与双语GPT-NeoX 4B SFT相比,PPO并未显著提升模型在日语LLM基准测试中的性能,但我们观察到PPO模型的对话体验优于其SFT版本。
| 模型 | 4任务平均准确率 | 6任务平均准确率 |
|---|---|---|
| bilingual-gpt-neox-4b-instruction-ppo | 61.01 | 61.16 |
| bilingual-gpt-neox-4b-instruction-sft | 61.02 | 61.69 |
| bilingual-gpt-neox-4b | 56.12 | 51.83 |
| japanese-gpt-neox-3.6b-instruction-ppo | 59.86 | 60.07 |
| japanese-gpt-neox-3.6b | 55.07 | 50.32 |
import argparse
from openmind import AutoModel, AutoTokenizer
from openmind import is_torch_npu_available
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--model_name_or_path",type=str,help="Path to model",default=None,)
args = parser.parse_args()
return args
if __name__ == '__main__':
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
args = parse_args()
model_path = args.model_name_or_path
# Note: CodeSage requires adding eos token at the end of
# each tokenized sequence to ensure good performance
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True, add_eos_token=True)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True).to(device)
inputs = tokenizer.encode("def print_hello_world():\tprint('Hello World!')", return_tensors="pt").to(device)
embedding = model(inputs)[0]
print(f'Dimension of the embedding: {embedding[0].size()}')
print(embedding)
该模型使用基于[sentencepiece]的分词器。
<UNK>标记。_Hello)。
use_fast=False,以确保上述功能正确运行。