最新开源!更擅长推理的LLaMA大模型,支持中文

news2024/11/20 0:45:33

256ddad992d72bbe1db98a76cd13cfe5.gif

©PaperWeekly 原创 · 作者 | 李忠利

研究方向 | 自然语言处理

跟大家介绍一下自己最近训练的 LLaMA 模型——BiLLa: A Bilingual LLaMA with Enhanced Reasoning Ability.

Github 地址: 

https://github.com/Neutralzz/BiLLa 

HuggingFace 模型: 

https://huggingface.co/Neutralzz/BiLLa-7B-LLM(语言模型 BiLLa-7B-LLM) 

https://huggingface.co/Neutralzz/BiLLa-7B-SFT(指令微调模型 BiLLa-7B-SFT) 

注:因 LLaMa 的使用限制,权重下载后不能直接使用,需通过脚本 [1] 转换

BiLLa 是开源的推理能力增强的中英双语 LLaMA 模型。模型的主要特性有: 

  • 较大提升 LLaMA 的中文理解能力,并尽可能减少对原始 LLaMA 英文能力的损伤; 

  • 训练过程增加较多的任务型数据,利用 ChatGPT 生成解析,强化模型理解任务求解逻辑;

  • 全量参数更新,追求更好的生成效果。

因个人精力有限,我未能将 BiLLa 与当前主流的开源大模型进行充分的对比评测。以下是经过有限的评测分析得出的结论: 

  • BiLLa-7B-LLM 中英语言建模能力显著优于 Chinese-LLaMA-7B [2];

  • BiLLa-7B-SFT 中文推理能力显著优于 BELLE-LLaMA-Ext-7B [3] 等模型;

  • 由 GPT4 打分,BiLLa-7B-SFT 在英文指令上得分显著高于 ChatGLM-6B [4],中文得分持平,但解题与代码得分更高。 

0d2fe2cb9c7582674e52951328736501.png

模型训练

该模型以原始 LLaMa 模型为基础,进行了如下三个阶段的训练。

  • 第一阶段:扩充中文词表,使用中文预训练语料 Wudao [5]、英文预训练语料 PILE [6]、翻译语料 WMT [7] 的中英数据进行二次预训练。 

  • 第二阶段:训练数据在第一阶段基础上增加任务型数据,训练过程中两部分数据保持 1:1 的比例混合。任务型数据均为 NLP 各任务的主流开源数据,包含有数学解题、阅读理解、开放域问答、摘要、代码生成等,利用 ChatGPT API 为数据标签生成解析,用于训练提升模型对任务求解逻辑的理解。 

  • 第三阶段:保留第二阶段任务型数据,并转化为对话格式,增加其他指令数据(如 Dolly 2.0 [8]、Alpaca GPT4 [9]、COIG [10] 等),进行对齐阶段的微调。

借鉴 BELLE 之前的工作 [11],三阶段的训练均为全量参数的更新,未使用 LoRA。

目前开源的模型,BiLLa-7B-LLM 是第二阶段训练完成的语言模型,BiLLa-7B-SFT 是第三阶段训练完成的指令微调模型。


6b98a9b3267a4cf28d1ffbb7c4236f25.png

模型评测

2.1 语言建模

通过 Conditional Generation 评估模型的语言建模能力,在纯英文和中英混合的测试集上计算模型的 Perplexity 指标。

纯英文测试集为 1000 条 PILE 语料,中英混合测试集为 1000 条 PILE 加 1000 条 WuDao 语料,测试集数据均未参与 BiLLa 的训练,评测指标如下(数值越低越好):

cc29d488a729df7750e7b8ec6cbc7ce2.png

2.2 GPT4打分

将 BiLLa-7B-SFT 和 ChatGLM-6B [4] 的模型结果放在一起,由 GPT4 对比两模型结果进行打分。该评测代码基本复用了 FastChat 的评测代码 [12]。

英文评测数据来源于 FastChat 的 80 条问题 [13],中文评测数据来源于 BELLE 的 1000 条问题 [14],评测指标如下(数值越高越好):

6f3a7f320998aa2a5f004b86216650e8.jpeg

▲ GPT4打分结果

2.3 中文复杂推理

这里非常感谢学弟锴锴(PandaLLM [15] 作者)协助完成复杂推理的评测工作!

评测集采用 LogiQA-v2 [16] 与 C3 [17],两数据集均未参与 BiLLa 的训练,评测指标如下(数值越高越好):

82ec27ef776c68cae535bc78811eb1b4.png

ff8c54dc7a7fc8160b12d76d543cf127.png

生成示例

4.1 Case 1

Human:女朋友对男朋友说,我都和你说了 200 次了,你也不长记性,又乱买东西。请问女生对男朋友说了多少次?


Assistant:我不知道具体的数量,但是我可以告诉你,当一个人多次向另一个人表达相同的想法或建议时,他们可能会感到沮丧或失望。如果你希望能够与你的女朋友建立良好的沟通,那么最好的方法可能是倾听她的想法和感受,并尽力理解她的立场。这样,你们就可以一起合作,解决问题,并且在未来更好地沟通。

4.2 Case 2

Human:鸡兔同笼,头共有 10,足共有 28,请问鸡和兔各多少只?


Assistant:设鸡的数量为 x,兔的数量为 y,则有以下两个方程式:

x+y=10(因为总数为 10)


2x+4y=28(因为每只鸡有 2 只脚,每只兔有 4 只脚)

将第一个方程式改写为 x=10-y,代入第二个方程式中:

2(10-y) + 4y = 28 

化简得 

-2y+20=28 

-2y=-8 

y=4

将 y 的值代入 x = 10-y,得到

x = 6

所以鸡的数量为 6 只,兔的数量为 4 只。

答案为 6、4。

4.3 Case 3

Human:用 Python 写一个冒泡排序算法


Assistant:这是一个简单的冒泡排序算法的 Python 实现:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]

arr = [3, 5, 2, 8, 1, 6]

bubble_sort(arr)
print("排序后的数组:")
for i in range(len(arr)):
    print("%d" %arr[i])

输出结果为:

排序后的数组:
1
2
3
5
6
8

上面的代码中,我们定义了一个名为 bubble_sort 的函数,它接受一个整数数组作为输入。函数中,我们首先定义了一个 n 变量,用于表示数组的长度。


然后我们使用一个嵌套循环来遍历数组中的每个元素。在每一次循环中,我们将当前元素与下一个元素进行比较,如果当前元素大于下一个元素,则交换这两个元素的位置。最后,我们返回排序后的数组。


在主程序中,我们定义了一个包含若干个整数的数组,然后调用 bubble_sort 函数来对这个数组进行排序。最后,我们将排序后的数组打印出来。

bea2631eef8d40a47f6b387335cd7189.png

模型局限性

当前 BiLLa 模型未经 RLHF 训练,泛化性有待观望。

BiLLa 训练过程中使用了较多的任务型数据,建议减少常识类的、时事类的提问。

BiLLa 训练数据中包含了多轮对话摘要数据,但未直接包含多轮对话的生成数据,因此模型多轮对话能力可能较差。

b0ca008d63177314532decbf6e8052ca.png


最后

欢迎各位 NLPers 试用 BiLLa,更希望能协助完善 BiLLa 评测!

outside_default.png

参考文献

outside_default.png

[1] https://github.com/Neutralzz/BiLLa/blob/main/embedding_convert.py

[2] https://github.com/ymcui/Chinese-LLaMA-Alpaca

[3] https://github.com/LianjiaTech/BELLE

[4] https://github.com/THUDM/ChatGLM-6B

[5] https://www.sciencedirect.com/science/article/pii/S2666651021000152

[6] https://arxiv.org/abs/2101.00027

[7] https://www.statmt.org/wmt22/translation-task.html

[8] https://github.com/databrickslabs/dolly

[9] https://github.com/Instruction-Tuning-with-GPT-4/GPT-4-LLM

[10] https://huggingface.co/datasets/BAAI/COIG

[11] https://arxiv.org/abs/2304.07854

[12] https://github.com/lm-sys/FastChat/tree/main/fastchat/eval

[13] https://github.com/lm-sys/FastChat/blob/main/fastchat/eval/table/question.jsonl

[14] https://github.com/LianjiaTech/BELLE/blob/main/eval/eval_set.json

[15] https://github.com/dandelionsllm/pandallm

[16] https://github.com/csitfun/LogiQA2.0

[17] https://dataset.org/c3/

更多阅读

f70ebf04b06178df2373e50a384c7590.png

2bbe4c32192f586afc766da6578b9855.png

04e0266e97e3342120d68f2ac941e9f6.png

cdc19e3a793a9aa68b2fd855f8f81cee.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

143c30751882e848885271489ab0ed22.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

728cce621684ee89a085b73f447e10c2.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/542901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】数据分析与可视化实践:收支日统计数据可视化的实现

Python数据分析与可视化实践:收支日统计数据可视化的实现 Author:萌狼蓝天 Date:2023-5-7 数据读入与基本处理 上图是原始数据的一部分,存放于excel中,首先使用pd读入数据。读入数据后,删除不是收入&#x…

chatgpt赋能Python-python3_8_3怎么用

Python 3.8.3:简介与使用 Python是一种高级编程语言,拥有许多库和框架,是Web开发、数据分析、机器学习、人工智能等领域的首选语言之一。而Python 3.8.3是Python的最新版本,在新功能、稳定性、安全性等方面都有很大提升。 Pytho…

Midjourney 创建私人画图机器人,共享账号如何设置独立绘画服务器

本教程收集于:AIGC从入门到精通教程 Midjourney 创建私人画图机器人,共享账号如何设置独立绘画服务器 你是不是遇到以下问题: 1.Midjourney会员怎么自建绘图服务器,不受其他人的打扰? 2.Midjourney会员共享账号如何自建服务器,供其他人使用? 3.在官方服务器作图,频…

gRPC-go参数功能介绍总结目录(专栏)

本篇文章是gRPC-go框架的参数功能介绍总结 本篇文章的目的: 查看快速方便查询gRPC-go都有哪些参数可用!可以快速的查询到相关案例!gRPC-go版本是v1.30.0 可以从下面的地址下载gRPC-go版本 链接: https://pan.baidu.com/s/1za02qnUII78n-XhlrLf7RA 密码: 3tok 1、grpc-go客…

深入浅出 OkHttp 源码解析及应用实践

作者:vivo 互联网服务器团队- Tie Qinrui OkHttp 在 Java 和 Android 世界中被广泛使用,深入学习源代码有助于掌握软件特性和提高编程水平。 本文首先从源代码入手简要分析了一个请求发起过程中的核心代码,接着通过流程图和架构图概括地介绍…

chatgpt赋能Python-python3_7_6怎么用

Python 3.7.6怎么用 – 简单易上手的编程语言 Python是一种简单易用的编程语言,已经成为了计算机科学领域中最受欢迎的语言之一。Python内置了许多库和工具,可以让用户轻松地完成各种任务。 作为Python的最新版本,Python 3.7.6带来了许多令…

Java Web项目中无效数据怎样处理?

最近在做一个java web项目(自己随便想的),遇到一个这个的需求,就是从后台数据库根据用户id数据查询用户信息给前端用作个人主页展示吧!,但是后台数据库中用户信息中是有密码字段(虽然进行了加密处理)的,对于这个密码数…

一个玩游戏的失足青年,转行做编程到教育的挣扎过程(3/4)

有一个人,从小的心愿是当一名飞行员,终于有一天他当上了飞行员。 但是,他第一次飞行时,飞机就出事了。 好在他能够跳伞。但是,降落却是坏的,打不开...... 突然,他看见了在正下方的地上&#xff…

声音生成——将Autoencoder修改成Variant Autoencoder在mnist训练

文章目录 概述VariantAutoencoder.py文件实现关闭eager execution修改bottlenectk组件修改loss损失函数VariantAutoencoder.py实现的全部代码 train.py文件实现load_mnist模块train模块完整代码执行效果 总结Analysis代码 概述 之前的一篇文章中,介绍了如何实现aut…

if

[rootes3 data]# cat ifaction.sh #!/bin/bash#********************************************************************read -p "请输入身高(m为单位): " HIGH if [[ ! "$HIGH" ~ ^[0-2](\.[0-9]{,2})?$ ]];then echo "输入错误的身高!" exit…

面试字节,简历做了点手脚,第三方背调公司查出来了,被撤销offer!

简历做了手脚被查出来,怎么办? 一位面试字节的程序员哀叹: 运气差,在简历上做了点手脚,被第三方背调查出来了,只能等着被通知撤销offer! 有人说,现在背调查的可严格了,字…

Robust 2.0:支持Android R8的升级版热修复框架

2016年,我们对美团Android热更新方案Robust的技术原理做了详细介绍。近几年,Google 推出了新的代码优化混淆工具R8,Android 热修复补丁制作依赖二次构建包和线上包对比,需要对Proguard切换到R8提前进行适配和改造,本文…

鄞州银行:符合中小银行质量提升的数据治理方案

案例简介 在数字化转型的驱动和数据治理“严监管”的推动下,为解决金融机构数据治理体系不健全、数据质量低下等问题,利用数据治理成熟度评估模型进行问题分析定位,重点围绕数据规划、组织机制、标准建设以及数据类平台建设等方面进行数据质…

springboot+jsp网上药品商城销售管理系统

本设计需要实现一套方便药品管理者轻松便捷的处理药品运营工作的药品销售管理系统。设计并实现了特殊药品管理系统。系统选用B/S模式,应用java开发语言, MySQL为后台数据库。系统主要包括主页、个人中心、用户管理、药品类别管理、药品信息管理、系统管理…

Boy,Slowly...

很多朋友问我为啥写的少了。我说很多东西都是常识,老生常谈无数遍了,不想不断重复写了。常识性的东西,不断强调是对的,但是不断重复写,这就不对了。 (1)朴素 早上看一位朋友发了一条王兴过去老生…

使用Python复制某文件夹下子文件夹名为数据文件夹下的所有以DD开头的文件夹到桌面...

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 楼阁玲珑五云起,其中绰约多仙子。 大家好,我是皮皮。 一、前言 前几天在Python最强王者群【魏哥】问了一个Python自动化办公处理…

macOS Ventura 13.4 (22F66) 正式版发布,ISO、IPSW、PKG 下载

本站下载的 macOS Ventura 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 请访问原文链接&#xff1a…

在 Python 中使用 OpenCV 构建 Color Catcher 游戏

介绍 你是否曾经想在 Python 中使用 OpenCV 创建自己的游戏? 今天我们将构建一个名为 Color Catcher 的游戏,该游戏挑战玩家使用手部跟踪机制接住从屏幕顶部掉落的彩球。 设置游戏窗口 构建游戏的第一步是使用 OpenCV 设置游戏窗口。我们将定义窗口大小、…

Swift静态代码检测工程实践

本文字数:22817字 预计阅读时间:58分钟 引言 随着App功能不断增加,工程代码量也随之快速增加,依靠人工CodeReview来保证项目的质量,越来越不现实,这时就有必要借助于自动化的代码审查工具,进行程…

【运维知识进阶篇】集群架构-Nginx七层负载均衡详解

为什么要使用负载均衡 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台Web服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现负载…