bilingual-gpt-neox-4b:基于GPT-NeoX的英日双语文本生成项目

可用于英日双语场景下的文本生成任务。该项目提供38亿参数的英日双语GPT-NeoX模型,采用36层、2816隐藏维度的Transformer架构,在英日语任务上表现优于同规模模型。【此简介由AI生成】

分支1Tags0

license: mit language:

  • en
  • zh pipeline_tag: text-generation frameworks:
  • PyTorch hardwares:
  • NPU library_name: openmind

bilingual-gpt-neox-4b

rinna-icon

概述

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


基准测试

  • 日语基准测试

    我们的评估实验表明,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-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
  • 英语基准测试

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

    • 平均准确率基于Arc-Challenge、Arc-Easy、BoolQ、COPA、HellaSwag、OpenBookQA、PIQA、PROST、SWAG和WinoGrande的结果。
    模型 平均准确率
    mpt-7b 59.30
    llama-7b 57.35
    bloom-7b 51.51
    xglm-7.5b 50.96
    xglm-4.5b 50.15
    bilingual-gpt-neox-4b 49.49
    bloom-3b 48.56
    xglm-2.9b 47.44
    bloom-1.7b 46.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,以确保上述功能正确运行。

项目介绍

可用于英日双语场景下的文本生成任务。该项目提供38亿参数的英日双语GPT-NeoX模型,采用36层、2816隐藏维度的Transformer架构,在英日语任务上表现优于同规模模型。【此简介由AI生成】

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新