Falcon AI:全新的开源大型语言模型
Falcon AI New Open Source Large Language Model.
介绍
自从Open AI推出GPT(生成型预训练)以来,生成型人工智能已经风靡全球。从那时起,许多生成模型开始出现。随着新的生成型大型语言模型的发布,人工智能与人类智能越来越接近。然而,Open AI社区将强大的大型语言模型GPT系列设为了闭源。幸运的是,Falcon AI是一种功能强大的生成模型,超越了许多其他的LLM,并且现在是开源的,任何人都可以使用。
学习目标
- 了解为什么Falcon AI在LLM榜单上名列前茅
- 了解Falcon AI的能力
- 观察Falcon AI的性能
- 在Python中设置Falcon AI
- 使用自定义提示在LangChain中测试Falcon AI
本文是数据科学博文马拉松的一部分。
Falcon AI是什么?
Falcon AI,主要是Falcon LLM 40B,是由阿联酋技术创新研究院(TII)发布的大型语言模型。40B表示这个大型语言模型使用了40亿个参数。TII还开发了一个7B模型,即使用1500亿个标记进行训练的70亿个参数模型。相比之下,Falcon LLM 40B模型是在1万亿个RefinedWeb标记上进行训练的。这个LLM与其他模型的不同之处在于,它是透明且开源的。
Falcon是一个自回归的仅解码模型。Falcon AI的训练是在AWS云上持续进行了两个月,使用了384个GPU。预训练数据主要包含公共数据,还包括少量来自研究论文和社交媒体对话的数据源。
为什么选择Falcon AI?
大型语言模型受其训练数据的影响,它们对数据的敏感性随着数据的变化而变化。我们定制了用于训练Falcon的数据,其中包括从网站(RefinedWeb数据集)中提取的高质量数据。我们对这些数据进行了各种过滤和去重处理,除了使用现成的数据源。Falcon的架构使其在推理方面进行了优化。Falcon在OpenLLM榜单上明显优于Google、Anthropic、Deepmind、LLaMa等最先进的模型。
除此之外,最大的不同之处在于它是开源的,因此可以无限制地进行商业使用。因此,任何人都可以使用自己的数据对Falcon进行微调,从这个大型语言模型创建自己的应用程序。Falcon还提供了称为Falcon-7B-Instruct和Falcon-40B-Instruct的指导版本,这些版本已经在对话数据上进行了微调。可以直接使用这些版本来创建聊天应用程序。
首次接触:Falcon大型语言模型
在本节中,我们将尝试使用Falcon的一个模型。我们选择的是Falcon-40B模型,该模型在OpenLLM榜单上排名第一。我们将专门使用Falcon-40B的指导版本,即Falcon-40B-Instruct,该版本已经在对话数据上进行了微调,因此我们可以快速开始使用。与Falcon Instruct模型进行交互的一种方式是通过HuggingFace Spaces。HuggingFace为Falcon-40B-Instruct模型创建了一个名为Falcon-Chat演示的Space。点击这里访问该网站。
打开网站后,向下滚动即可查看与上图类似的聊天部分。在“输入并按Enter键”字段中,输入您要向Falcon模型提问的查询,并按Enter键开始对话。让我们向Falcon模型提一个问题,看看它的输出。
在图1中,我们可以看到生成的回复。这是Falcon-40B模型对查询的良好回复。我们已经了解了如何在HuggingFace Spaces中使用Falcon-40B-Instruct的工作方式。但是,如果我们想在特定的代码中使用它怎么办?我们可以使用Transformers库来实现这一点。现在我们将逐步介绍必要的步骤。
下载包
!pip install transformers accelerate einops xformers
我们安装transformers包来下载和使用预训练的最先进模型,例如Falcon。accelerate包使我们能够在任何系统上运行PyTorch模型,目前我们在使用Google Colab。einops和xformers是支持Falcon模型的其他包。
现在我们需要导入这些库来下载并开始使用Falcon模型。代码如下:
from transformers import AutoTokenizer, AutoModelForCausalLM
import transformers
import torch
model = "tiiuae/falcon-7b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
device_map="auto",
max_length=200,
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id
)
步骤
- 首先,我们需要提供我们将要测试的模型的路径。在这里,我们将使用Falcon-7B-Instruct模型,因为它在GPU上占用的空间较小,并且可以在Google Colab的免费套餐中使用。
- Falcon-7B-Instruct大型语言模型的链接存储在model变量中。
- 要下载此模型的分词器,我们使用transformers中的AutoTokenizer类的from_pretrained()方法。
- 我们向其提供LLM路径,然后它将下载适用于此模型的分词器。
- 现在我们创建一个pipeline。在创建pipeline时,我们提供必要的选项,例如我们正在使用的模型以及模型的类型,即我们的用例中的”text-generation”。
- 分词器的类型和其他参数提供给pipeline对象。
让我们尝试通过向模型提供一个查询来观察Falcon 7B instruct模型的输出。为了测试Falcon模型,我们将编写以下代码。
sequences = pipeline(
"列出3个减少全球变暖的重要事项的列表"
)
for seq in sequences:
print(f"结果:{seq['generated_text']}")
我们要求Falcon大型语言模型列出三个减少全球变暖的重要事项。让我们看看这个模型生成的输出。
我们可以看到Falcon 7B Instruct模型产生了一个很好的结果。它指出了导致全球变暖的根本问题,甚至提供了应对这些问题的适当解决方案,从而减少了全球变暖。
Falcon AI与LangChain
Langchain是一个帮助构建具有大型语言应用程序的Python库。LangChain具有一个名为HuggingFacePipeline的流水线,用于托管在HuggingFace中的模型。因此,理论上可以使用Falcon与LangChain一起使用。
安装LangChain包
!pip install langchain
这将下载最新的langchain包。现在,我们需要为Falcon模型创建一个流水线,我们将通过以下方式完成:
from langchain import HuggingFacePipeline
llm = HuggingFacePipeline(pipeline = pipeline, model_kwargs = {'temperature':0})
- 我们调用HuggingFacePipeline()对象并传递流水线和模型参数。
- 在这里,我们使用了来自“首次了解:Falcon大型语言模型”的流水线。
- 对于模型参数,我们将温度设为0,这使得模型不会产生太多的幻觉(创造自己的答案)。
- 所有这些,我们传递给一个名为llm的变量,它存储了我们的大型语言模型。
现在我们知道LangChain包含PromptTemplate,它允许我们修改大型语言模型生成的答案。而且我们有LLMChain,它将PromptTempalte和LLM链接在一起。让我们使用这些方法编写代码。
from langchain import PromptTemplate, LLMChain
template = """
你是一个智能聊天机器人。你的回答应该是有趣的。
问题:{query}
回答:"""
prompt = PromptTemplate(template=template, input_variables=["query"])
llm_chain = LLMChain(prompt=prompt, llm=llm)
步骤
- 首先,我们为Prompt定义一个模板。该模板描述了我们的LLM应该如何行为,即它应该如何回答用户提出的问题。
- 然后将其传递给PromptTemplate()方法并存储在一个变量中。
- 现在我们需要将大型语言模型和Prompt链在一起,通过将它们提供给LLMChain()方法来实现。
现在我们的模型已经准备好了。根据Prompt,模型必须以有趣的方式回答一个给定的问题。让我们用一个示例代码来试试。
query = "如何到达月球?"
print(llm_chain.run(query))
所以我们将查询“如何到达月球?”提供给模型。答案如下:
Falcon-7B-Instruct模型生成的回答确实很有趣。它遵循了我们给出的提示并生成了给定问题的适当答案。这只是我们可以用这个新的开源模型实现的少数事情之一。
结论
在本文中,我们讨论了一个名为Falcon的新的大型语言模型。该模型通过击败Llama、MPT、StableLM等顶级模型,在OpenLLM榜单上名列前茅。这个模型最好的地方在于它是开源的,意味着任何人都可以用Falcon开发商业用途的应用程序。
主要观点
- Falcon-40B目前位于OpenLLM榜单的榜首
- Flacon已经开源了40亿和70亿模型
- 你可以使用Falcon的Instruct模型,这些模型已经在对话中进行了预训练,以便快速入门。
- 优化Falcon的推理架构。
- 微调这个模型以构建不同的应用程序。
常见问题
本文中显示的媒体不是Analytics Vidhya所有,而是根据作者的自由裁量使用的。