Home

Awesome

<div align="center"> <h1> XVERSE-65B </h1> </div> <p align="center"> <a href="https://huggingface.co/xverse">🤗 Hugging Face</a>&nbsp| <a href="https://modelscope.cn/organization/xverse" rel="nofollow"><img src="resources/modelscope.png" width="20px" style="max-width: 100%;"> ModelScope</a>&nbsp| <a href="https://openxlab.org.cn/models/hot/XVERSE">🧰 OpenXLab</a>&nbsp| <a href="resources/wechat.png">💬 微信社区</a> </p> <h4 align="left"> <p> <b>中文</b> | <a href="README_EN.md">English</a> <p> </h4>

更新信息

模型介绍

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

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

paramsd_modeln_headsn_layersd_fflearning rate
65B81926480220161.5e−4

底座数据介绍

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

数据类别GPT31Llama2BLOOM3PaLM4Chinchilla5Gopher6MT-NLG7XVERSE-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-Bench<sup>1</sup>5-shot76.973.938.951.450.5--
英文问答MMLU5-shot74.470.863.468.970.570.086.4
GAOKAO-English<sup>1</sup>5-shot86.685.367.076.663.3--
中英文问答AGIEval<sup>1</sup>5-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

<sup>1:只针对其中的单项选择题进行测试,即排除了填空题、开放性问题和多项选择题</sup>

对于上述所有比较模型,我们优先汇报其官方公布的结果。在缺少官方结果的情况下,我们采用了 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 模型产生任何问题,无论是数据安全问题、公共舆论风险,还是模型被误解、滥用、传播或不合规使用所引发的任何风险和问题,我们将不承担任何责任。

模型开源协议

使用本仓库的源码需要遵循 Apache-2.0 开源协议,使用 XVERSE-65B 的模型权重则需要遵循模型许可协议

XVERSE-65B 模型权重对学术研究完全开放,并且支持免费商用。如需申请商业许可证,请填写【申请表】,如有其他问题或合作,请联系 opensource@xverse.cn

Footnotes

  1. GPT3 Paper: Language Models are Few-Shot Learners

  2. LLaMA Paper: LLaMA: Open and Efficient Foundation Language Models

  3. BLOOM Paper: BLOOM: A 176B-Parameter Open-Access Multilingual Language Model

  4. PaLM Paper: PaLM: Scaling Language Modeling with Pathways

  5. Chinchilla Paper: Training Compute-Optimal Large Language Models

  6. Gopher Paper: Scaling Language Models: Methods, Analysis & Insights from Training Gopher

  7. MT-NLG Paper: Using DeepSpeed and Megatron to Train Megatron-Turing NLG 530B, A Large-Scale Generative Language Model