HuggingFace镜像/bilingual-gpt-neox-4b
模型介绍文件和版本分析
下载使用量0

bilingual-gpt-neox-4b

rinna-icon

概述

本仓库提供了一个参数量为38亿的英日双语GPT-NeoX模型。

  • 库

    该模型使用基于[EleutherAI/gpt-neox]的代码进行训练。

  • 模型架构

    一个拥有36层、2816隐藏维度的基于Transformer的语言模型。

  • 预训练

    该模型在约5240亿个tokens上进行训练,训练数据来自以下语料库的混合:

    • [Japanese CC-100]
    • [Japanese C4]
    • [The Pile]
    • [Redpajama]
    • [Wikipedia]
  • 模型系列

    变体链接
    双语4B MiniGPT4
    双语4B PPOhttps://modelers.cn/models/FuJianAscend/bilingual-gpt-neox-4b-instruction-ppo
    双语4B SFThttps://modelers.cn/models/FuJianAscend/bilingual-gpt-neox-4b-instruction-sft
    双语4B 8K
    双语4Bhttps://modelers.cn/models/FuJianAscend/bilingual-gpt-neox-4b
    日语3.6B PPO
    日语3.6B SFT-v2
    日语3.6B SFT
    日语3.6B
  • 贡献者

    • [Tianyu Zhao]
    • [Toshiaki Wakatsuki]
    • [Akio Kaga]
    • [Koh Mitsuda]
    • [Kei Sawada]

基准测试

  • 日语基准测试

    我们的评估实验表明,bilingual-gpt-neox-4b模型在日语任务上的表现略优于之前的[Japanese GPT-NeoX 3.6B]。

    • 4任务平均准确率基于JCommonsenseQA、JNLI、MARC-ja和JSQuAD的结果。
    • 6任务平均准确率基于JCommonsenseQA、JNLI、MARC-ja、JSQuAD、XWinograd和JAQKET-v2的结果。
    模型4任务平均准确率6任务平均准确率
    bilingual-gpt-neox-4b-instruction-ppo61.0161.16
    bilingual-gpt-neox-4b-instruction-sft61.0261.69
    bilingual-gpt-neox-4b56.1251.83
    japanese-gpt-neox-3.6b-instruction-ppo59.8660.07
    japanese-gpt-neox-3.6b55.0750.32
  • 英语基准测试

    使用[EleutherAI Language Model Evaluation Harness],我们发现bilingual-gpt-neox-4b的性能与相似规模的英语/多语言模型相当。

    • 平均准确率基于Arc-Challenge、Arc-Easy、BoolQ、COPA、HellaSwag、OpenBookQA、PIQA、PROST、SWAG和WinoGrande的结果。
    模型平均准确率
    mpt-7b59.30
    llama-7b57.35
    bloom-7b51.51
    xglm-7.5b50.96
    xglm-4.5b50.15
    bilingual-gpt-neox-4b49.49
    bloom-3b48.56
    xglm-2.9b47.44
    bloom-1.7b46.54

如何使用

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] 的分词器。

  • 分词器的词汇量为 65,536。
  • 它采用 字节回退 机制,将未知文本片段分解为 UTF-8 字节片段,以避免生成 <UNK> 标记。
  • 它能够识别 连续空格、换行符 和 制表符,从而更好地处理结构化文本。
  • 我们关闭了默认的前置空格行为,因为这对日语处理并无益处。
  • 具体而言,单个空格始终被处理为一个标记,这样任何英语单词都不会像许多其他分词器那样带有前导空格(例如 _Hello)。
    • 此决策以牺牲部分英语处理效率为代价,换取了统一的空格处理方式。
    • 由于空格易于预测,这显著降低了英语数据上的下一个标记预测损失。
  • 不要忘记设置 use_fast=False,以确保上述功能正确运行。