开源大语言模型介绍


当OpenAI在2022年11月向公众提供其聊天机器人ChatGPT时,它立即成为一个热门。然而,其底层算法并不开放。此外,ChatGPT用户需要连接到OpenAI的云服务,并面临使用限制。

现在,已经出现了几个开源或免费的替代品,其中一些甚至能够在消费者硬件上运行。

虽然它们的性能还不能与ChatGPT相提并论,但这个领域正在发生快速的进步,以至于开发这些人工智能(AI)模型的公司的一些人已经开始担心了。

ChatGPT是作为一个与用户互动的机器人出现的,它根据用户的输入生成类似人类的文本。OpenAI已经对它进行了微调,专门用于参与对话,并提供符合上下文的回应。它能够处理各种任务,如生成内容或想法,翻译语言,回答问题,甚至提供各种编程语言的代码建议。ChatGPT还能回应后续问题,挑战不正确的前提,并拒绝不适当的请求。

它是如何工作的?
在引擎盖下,ChatGPT使用一个在大量文本上训练的神经网络,根据它收到的输入生成新的内容。可以把它看作是一种高级形式的自动完成建议。

神经网络是一种学习算法,其灵感来自于我们的大脑如何运作:
它由大量的节点组成,被称为神经元,接收来自其他神经元的输入,并执行一个数学函数来计算它们的输出,然后再转给其他神经元。每个输入都有一个附加的权重,决定了该值对结果的贡献程度。神经网络的架构(各层神经元的连接方式)及其权重决定了其功能。

神经网络开始时权重是随机的;因此,当它接收文本作为输入时,其输出也是随机的。因此,网络必须使用训练数据进行训练:一个输入文本与一个相应的输出文本。每次训练数据输入进入网络时,其输出与训练数据的相应输出进行比较。然后调整权重以减少预测和正确输出之间的差异。通过这种方式,网络经历了一个学习过程,直到它能够熟练地预测文本。

这样一个能够生成类似人类文本的大型神经网络被称为大型语言模型(LLM)。它通常涉及数十亿到数千亿的权重,也被称为参数。

ChatGPT是基于OpenAI开发的一些大型语言模型,名称为GPT-3.5或(最新的版本)GPT-4。GPT是Generative Pre-trained Transformer的缩写,是一种特殊类型的大型语言模型,由OpenAI在2018年推出,并基于谷歌在2017年发明的Transformer架构。自GPT-3.5以来,OpenAI没有披露其模型的大小;GPT-3(2020年5月发布)有1750亿个参数,在570GB的文本上训练。

当大型语言模型在广泛的数据上训练时,就像GPT-3.5和GPT-4那样,它们也被称为基础模型。它们的广泛训练使它们能够适应各种任务。基础模型可以通过用特定任务或特定主题领域的新数据训练模型(或部分模型)来进行微调。这就是OpenAI在ChatGPT上所做的:它用人类同时扮演用户和人工智能角色的对话来微调其基础GPT模型。其结果是对模型进行了专门的微调,以遵循用户的指令并提供类似人类的反应。

BLOOM
开发大型语言模型的公司缺乏将其模型和运行代码开源的动力,因为训练模型需要大量的计算能力和资金投入。为了使这些模型的开发能够持续,公司需要能够围绕它建立一个有利可图的业务。OpenAI旨在通过提供付费的ChatGPT Plus订阅和其按使用量付费的API访问来实现这一目标。

去年,情况因BLOOM(BigScience Large Open-science Open-access Multilingual Language Model)而改变,该模型可免费使用。这个大型语言模型是一个全球合作的结果,来自250多个机构的一千多名科学家作为志愿者参与了BigScience集体。该项目由提供机器学习平台的Hugging Face公司发起,NVIDIA、微软和法国研究机构CNRS也提供了帮助。

BLOOM的开发完全是公开进行的。该模型在巴黎的Jean Zay超级计算机上训练了3个半月,使用了384个英伟达A100 Tensor Core GPU,每个GPU有80GB的内存。数据集包括46种人类语言和13种编程语言的1.6TB文本(3410亿字),模型有1760亿个参数,这与GPT-3相当。

BigScience开发了一个新的许可证来发布BLOOM:负责任的AI许可证(RAIL)。其主要目的是将不负责任地使用该模型所产生的风险降到最低。根据该许可证,用户不得使用该模型生成虚假信息,意图伤害他人;也不得忽视披露所生成的文本是机器生成的。RAIL不是一个开源许可证,没有出现在OSI批准的许可证列表中。开发者可以在自己的代码中使用BLOOM模型和Hugging Face的Apache-2许可的转化器库,但要遵守RAIL的条款。

较小的大型语言模型
BLOOM的一个缺点是,它仍然太大,无法在本地方便地使用。原则上,任何人都可以下载330GB的模型,但使用它需要大量的硬件。BigScience也发布了该模型的较小版本,这种较小模型的趋势被其他公司所延续。2月,Meta宣布了一个名为LLaMA的语言模型,它有70亿、130亿、330亿和650亿参数的版本。根据开发者的说法,130B版本的性能与OpenAI的GPT-3一样好,而体积却小了10倍。而且与GPT-3不同的是,GPT-3需要多个A100 GPU来运行,而LLaMA-13B只需要一个GPU就能达到同样的性能。

Meta在公开可用的数据集上训练LLaMA,如维基百科和Common Crawl。运行LLaMA的代码是GPLv3许可的,但为了获得模型的全部权重,用户需要填写一份表格并同意 "非商业性定制许可"。此外,事实证明,Meta在授予访问权方面是相当有选择性的。但在一个星期内,权重在BitTorrent上被泄露,LLaMA启动了许多衍生产品的开发。斯坦福大学推出了Alpaca 7B,它基于具有70亿个参数的LLaMA模型,并补充了基于OpenAI的GPT-3.5系列的text-davinci-003模型的指令。该数据集和模型都是在CC BY-NC 4.0许可下发布的,因此不允许商业使用。其原因之一是OpenAI的使用条款不允许开发与OpenAI竞争的模型。

随后,开放研究组织大型模型系统组织发布了Vicuna,这是一个基于LLaMA的模型,在用户与ChatGPT的7万次对话中进行了微调。这是用ShareGPT完成的,ShareGPT是谷歌浏览器的一个扩展,旨在轻松分享ChatGPT对话。根据研究人员的说法,Vicuna达到了ChatGPT质量的90%,并在90%的情况下超过了LaMA和Alpaca。代码(Apache 2许可证)和权重(130亿个参数受制于LLaMA的许可证)都已经公开了。然而,由于Vicuna是基于LLaMA和ChatGPT的输出,所以不允许商业使用。

这个问题促使美国软件公司Databricks开发了一个适合商业使用的开源的大型语言模型:Dolly 2.0。它基于EleutherAI的Pythia模型,有120亿个参数,在Pile文本数据集上进行了训练,然后在15000条有答案的指令上进行了微调。为了实现这一目标,该公司让其5000多名员工参与其中。Dolly在开放式问题、封闭式问题、从文本中提取事实信息、总结文本、头脑风暴、分类和创意写作任务上接受了训练,所有这些都只用英语。23.8GB的dolly-v2-12b模型可以从Databricks在Hugging Face的网页上下载。该模型使用的是MIT许可,而databricks-dolly-15k数据集是在CC BY-SA 3.0许可下发布的。

众包开放数据集
随着新的开源(或免费提供)语言模型的定期出现(其中许多可以在awesome-totally-open-chatgpt资源库中找到),各种组织已经开始考虑如何简化训练模型的数据集开发。其中一个组织是LAION(大规模人工智能开放网络),一个旨在使人工智能民主化的非营利研究组织。通过 Open Assistant开放助理,它计划开发能够在消费者硬件上运行的大型语言模型。

 Open Assistant,开放助理仍在开发中,目前主要侧重于在用户的帮助下收集数据集。该项目已经拥有一个由13,000名志愿者提供的60万次互动的数据集。正如文件中所解释的那样,每个人都可以在这一努力中伸出援手。

例如,用户的任务是根据质量或礼貌性等参数,对另一个人提供的答案进行评分。另一项任务是以聊天机器人的角色为用户的请求提供答案。志愿者也可能被要求从两个可能的答案中选择最好的回答。任务不仅有英语,也有许多其他语言。研究人员打算利用这些志愿者任务所产生的数据集来训练语言模型。值得注意的是,OpenAI对ChatGPT采取了类似的方法:该公司向(低工资)承包商支付费用,协助训练其语言模型,并帮助识别有毒内容。

在这之后,StableAI,即用于生成图像的稳定扩散开源模型的创建者,发布了自己的大型语言模型系列:StableLM,采用CC BY-SA 4.0许可。此外,MosaicML推出了它的MPT-7B系列开源商业可用的大型语言模型(其中一些是Apache 2授权)。

另一个有趣的发展是BigCode,这是一个由ServiceNow Research和Hugging Face启动的项目,旨在开发大型语言模型,用于从其他代码和自然语言描述中完成和编写代码。他们的第一个模型,StarCoder,已经在GitHub的许可数据上进行了训练,并且使用了OpenRAIL许可,即责任人工智能许可的更新版本。

在消费类硬件上运行语言模型
在消费者硬件上运行具有数百亿到数千亿参数的大型语言模型是不可行的。然而,随着由LLaMA发起的小型语言模型的趋势,在PC上运行类似ChatGPT的软件成为可能。运行这些模型的一个重要项目是Georgi Gerganov的MIT授权的llama.cpp。它使用户能够在他们的计算机上本地运行LLaMa、Alpaca和其他基于LLaMA的模型。它完全在CPU上运行,这是通过对模型进行4位量化实现的。这将权重的精确度降低到4位,以减少内存消耗和计算的复杂性。Llama.cpp支持Linux、macOS和Windows。用户可以通过一个命令行界面与模型聊天。

模型必须先下载,例如从Hugging Face的模型中心下载,然后转换为特定的格式。在llama.cpp的README文件中提供了这样的说明。

作为测试,我下载了8.14GB的模型 ggml-vic13b-q4_0.bin,,它已经是llama.cpp的正确格式。该程序在RAM中完全加载模型,所以确保计算机有足够的可用RAM是至关重要的。

$ ./main -m models/ggml-vic13b-q4_0.bin -i

在我那台有点过时的笔记本电脑上,采用四核英特尔酷睿i7-10510U 1.8GHz CPU和24GB内存,这需要20秒的时间来启动。在提出 "阿姆斯特丹最常见的交通方式是什么?"的问题后,Vicuna模型开始逐字生成它的回答,花了15分钟才完成任务。所得到的答案是模糊的,但不是错误的,类似于旅游指南的文字:

阿姆斯特丹,荷兰的首都,以其风景如画的运河和热闹的自行车文化而闻名。在阿姆斯特丹最常见的出行方式是骑自行车,这并不奇怪。然而,该市也有很多其他交通选择,包括公共汽车、有轨电车、火车,甚至船只。无论你喜欢两个轮子还是四个轮子,在阿姆斯特丹都有适合你的交通方式。

已经出现了各种项目,旨在使使用开源语言模型更类似于ChatGPT的体验。

例如,Nathan Sarrazin一直在研究Serge,一个基于网络的llama.cpp的界面。它在Docker容器中运行,允许用户从列表中下载一个模型,选择其设置,然后启动聊天。另一个类似的工作是oobabooga的文本生成-webui,它同时支持CPU和GPU来运行模型。使用GPU可以显著提高性能。

开源人工智能正在获得优势?
5月初,谷歌的卢克-塞尔瑙Sernau撰写的一份文件被泄露了:"我们没有护城河,OpenAI也没有"。

作者认为,开源社区一直在迅速追赶商业努力:"他们正在用100美元和130亿的参数做一些事情,而我们在1000万美元和540亿的参数上都很难做到。而且他们是在几周内完成的,而不是几个月"。

Sernau也清楚地认识到开源开发模式的优势。在详细介绍了LLaMA的权重被泄露后一个月内发生的众多创新后,他指出任何人都可以进行修补:"许多新的想法都来自于普通人"。为这些开源的大型语言模型做出贡献的门槛只是 "一个人、一个晚上和一台强大的笔记本电脑"。

Sernau继续为谷歌(和OpenAI)提供教训,重点是LoRA,这是一种加速模型微调的技术,已经被这个领域的很多开源项目所使用。

由于LoRA,几乎任何有想法的人都可以在一天之内生成一个微调的模型,而且价格在100美元左右。

"在这种速度下,所有这些微调的累积效应不需要很长时间就能克服开始时的规模劣势",他说,并补充说专注于维护地球上一些最大的模型实际上使谷歌处于不利地位。他认为Meta是这一切的明显赢家,因为大多数开源创新都发生在其LaMA模型架构之上。

如果Sernau是对的,这意味着语言模型可能成为一种商品,由开源人工智能社区的创新性质和快节奏的开发模式所推动。这将使研究人员、非营利组织和小型企业能够获得人工智能的能力,而无需依赖基于云的服务或昂贵的订阅费用。

回顾过去几个月发表的众多语言模型,我们可以想一想,在我们拥有一些可用的、完全开源的人工智能助手来帮助我们完成日常任务之前,需要多长时间。