跳到主要内容

XVERSE-65B

模型介绍

XVERSE-65B 是由深圳元象科技自主研发的支持多语言的大语言模型(Large Language Model),参数规模为 650 亿,本次开源的模型为底座模型 XVERSE-65B,主要特点如下:

  • 模型结构:XVERSE-65B 使用主流 Decoder-only 的标准 Transformer 网络结构,支持 16K 的上下文长度(Context Length),能满足更长的多轮对话、知识问答与摘要等需求,模型应用场景更广泛。
  • 训练数据:构建了 2.6 万亿 token 的高质量、多样化的数据对模型进行充分训练,包含中、英、俄、西等 40 多种语言,通过精细化设置不同类型数据的采样比例,使得中英两种语言表现优异,也能兼顾其他语言效果。
  • 分词:基于 BPE(Byte-Pair Encoding)算法,使用上百 GB 语料训练了一个词表大小为 100,534 的分词器,能够同时支持多语言,而无需额外扩展词表。
  • 训练框架:训练中采用 FlashAttention2 加速计算,3D 并行基础上采用虚拟流水线(virtual pipeline)技术,降低较长流水线和 16k 上下文窗口产生的过高气泡率,在千卡集群的峰值算力利用率达到业界前列。同时通过集群基础设施运营、资源调度、训练框架和调度平台协同等持续优化,打造出高稳定、低中断、强容错的训练系统,将每周有效训练率提升至 98.6%。

XVERSE-65B的模型大小、架构和学习率如下:

paramsd_modeln_headsn_layersd_fflearning rate
65B81926480220161.5e−4

底座数据介绍

在预训练阶段,XVERSE-65B 主要使用了 7 类不同的数据类型。以下表格展示了 XVERSE-65B 与其他一些知名模型在底座数据集方面的比较:

数据类别GPT3[^1]Llama[^2]BLOOM[^3]PaLM[^4]Chinchilla[^5]Gopher[^6]MT-NLG[^7]XVERSE-65B
网页类YYYYYYYY
代码类YYYYYYY
百科类YYYYYYY
书籍类YYYYYYY
论文类YYY
问答类YYYYY

注:'Y' 表示使用了该类数据。

在预训练阶段,不同类别数据的采样比例如下所示:

网页类代码类百科类书籍类论文类问答类其他类
比例(%)72.917.094.815.626.551.151.87

在预训练阶段,XVERSE-65B 主要使用了 41 种自然语言,以下表格展示了不同语种在底座数据中的占比:

语言比例(%)语言比例(%)语言比例(%)语言比例(%)语言比例(%)语言比例(%)
en54.91pl0.48hu0.19ar0.12fa0.07sl0.05
zh31.09it0.36ko0.18ro0.11hi0.07et0.04
ja3.22pt0.34sv0.15bg0.10no0.07lv0.03
ru3.15cs0.27el0.14th0.10ca0.06sr0.03
de1.52uk0.24fi0.14da0.09iw0.06ta0.03
es0.91tr0.23id0.13mr0.08lt0.05kk0.02
fr0.73nl0.20vi0.13sk0.08ms0.05

注:各种语言简称的对照可参考:ISO_639-1

对于代码类数据,以下表格展示了不同编程语言的占比:

语言比例(%)语言比例(%)语言比例(%)语言比例(%)语言比例(%)语言比例(%)
PHP17.06Go3.38Shell0.74PowerShell0.23Arduino0.13R0.04
JavaScript15.65Rust2.33Haskell0.46Groovy0.21Assembly0.13ABAP0.01
Java15.18Ruby1.61Common Lisp0.43Pascal0.20Clojure0.12COBOL0.0022
Python14.64Swift1.40Perl0.34FORTRAN0.19Cuda0.12Verilog0.0001
TypeScript6.55Kotlin1.40CSS0.32Elixir0.17VHDL0.09
C4.84Scala1.08Julia0.32Solidity0.16Emacs Lisp0.08
C++4.68Dart0.95Visual Basic0.25F#0.14Objective-C++0.08
C#3.44SQL0.76OCaml0.24Erlang0.14Crystal0.06

评测结果

为了综合评估模型的性能,我们在一系列标准数据集上进行了全面测试,包括C-Eval、CMMLU、Gaokao-Bench、MMLU、GAOKAO-English、AGIEval、RACE-M、CommonSenseQA、PIQA、GSM8K和HumanEval。这些评估覆盖了模型在多个领域的能力,具体包括中文问答、英文问答、语言理解、常识问答、逻辑推理、数学问题解答以及编程能力。评估结果如下:

能力维度数据集XVERSE-65B-2XVERSE-65BLlama1-65BLlama2-70BFalcon-180BGPT-3.5GPT-4
中文问答C-Eval5-shot72.468.638.849.954.254.468.7
CMMLU5-shot75.172.640.653.657.253.971.0
Gaokao-Bench15-shot76.973.938.951.450.5--
英文问答MMLU5-shot74.470.863.468.970.570.086.4
GAOKAO-English15-shot86.685.367.076.663.3--
中英文问答AGIEval15-shot66.261.842.451.451.3--
语言理解RACE-M0-shot90.790.667.981.587.685.693.7
常识问答CommonSenseQA7-shot81.179.874.078.582.480.288.3
推理PIQA0-shot79.480.482.882.885.381.789.2
数学GSM8K4-shot72.660.350.956.862.657.192.0
代码HumanEval0-shot37.826.823.729.9-48.167.0
1:只针对其中的单项选择题进行测试,即排除了填空题、开放性问题和多项选择题

对于上述所有比较模型,我们优先汇报其官方公布的结果。在缺少官方结果的情况下,我们采用了 OpenCompass 榜单的报告结果。其他结果则来自于我们自行执行的评估流程所获得的数据。
对于 MMLU ,我们采用作者提供的评测工具,C-Eval、AGIEval、GAOKAO-Bench、GAOKAO-English 与 MMLU 的评测方式相同,其余评测数据集使用 OpenCompass 评估框架进行评估。

使用方法

硬件需求

下表列出了在 XVERSE-65B 上进行推理和微调所需要的硬件资源:

类型方法内存GPU
XVERSE-65B训练LoRA with ZeRO-31500GB8*A800 80G
XVERSE-65B推理BF16/FP16500GB2*A800 80G

环境安装

  1. 下载本仓库:
git clone https://github.com/xverse-ai/XVERSE-65B
cd XVERSE-65B
  1. 使用 pip 安装依赖:
pip install -r requirements.txt

Transformers 加载方式

可通过以下代码加载 XVERSE-65B 模型来进行推理:

>>> import torch
>>> from transformers import AutoTokenizer, AutoModelForCausalLM
>>> tokenizer = AutoTokenizer.from_pretrained("xverse/XVERSE-65B")
>>> model = AutoModelForCausalLM.from_pretrained("xverse/XVERSE-65B", trust_remote_code=True, torch_dtype=torch.bfloat16, device_map='auto')
>>> model = model.eval()
>>> inputs = tokenizer('北京的景点:故宫、天坛、万里长城等。\n深圳的景点:', return_tensors='pt').input_ids
>>> inputs = inputs.cuda()
>>> generated_ids = model.generate(inputs, max_new_tokens=64, eos_token_id=tokenizer.eos_token_id, repetition_penalty=1.1)
>>> print(tokenizer.batch_decode(generated_ids, skip_special_tokens=True))

网页 Demo

可通过以下代码启动一个web server,在浏览器输入访问地址后,可使用 XVERSE-65B 模型进行推理:

python text_generation_demo.py --port='port' --model_path='/path/to/model/' --tokenizer_path='/path/to/tokenizer/'

模型微调

XVERSE-65B 支持开发者进行微调以实现更好的性能表现。在此我们尝试使用 LLaMA-Factory 与 XVERSE-65B 进行兼容性微调训练,并在 8 * Nvidia A800 80 GB + DeepSpeed 的环境下进行了测试。 下面我们给出了使用LoRA with ZeRO-3的微调方法。

环境准备

下载 LLaMA-Factory 项目并按其要求安装依赖

启动训练

训练启动脚本:

其中 model_path 请替换为自己的模型路径

XVERSE-65B 基于 bfloat16 训练的,建议选用 bfloat16 做微调训练。

deepspeed --num_gpus 8 src/train_bash.py \
--deepspeed deepspeed.json \
--stage sft \
--model_name_or_path model_path \
--do_train \
--dataset alpaca_gpt4_zh \
--template default \
--finetuning_type lora \
--lora_target q_proj,v_proj \
--output_dir output_model_path \
--overwrite_cache \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine \
--logging_steps 1 \
--save_steps 1000 \
--learning_rate 5e-5 \
--num_train_epochs 3.0 \
--plot_loss \
--bf16

deep_speed.json 参数配置:

{
"train_micro_batch_size_per_gpu":"auto",
"gradient_accumulation_steps":"auto",
"gradient_clipping":"auto",
"zero_allow_untested_optimizer":true,
"fp16":{
"enabled":false
},
"bfloat16":{
"enabled":true
},
"zero_optimization":{
"stage":3,
"allgather_partitions":true,
"reduce_scatter":true,
"overlap_comm":false,
"contiguous_gradients":true
}
}

局限性与免责申明

XVERSE-65B 与其他所有 LLM 一样,在某些情况下可能会产生不准确、有偏见或其他令人反感的内容。因此,请谨慎使用模型生成的内容,请勿将生成的有害内容进行传播,在部署任何 XVERSE-65B 的应用之前,开发人员应根据其具体应用对模型进行安全测试和调优。

我们强烈警告不要将 XVERSE-65B 模型用于制造或传播有害信息,或进行任何可能损害公众、国家、社会安全或违反法规的活动。如果使用 XVERSE-65B 模型产生任何问题,无论是数据安全问题、公共舆论风险,还是模型被误解、滥用、传播或不合规使用所引发的任何风险和问题,我们将不承担任何责任。