跳至主要内容

Meta AI 的 LLaMA 简介

LLaMA 是一项具有革命意义的开源框架,旨在让大型语言模型研究更易获得。
Abid Ali Awan
Abid Ali Awan

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续继续即表示您接受我们的 使用条款,我们的 隐私政策 ,并且您的数据存储在美国。

我们正处在一个非凡的时代,由充满热情的社区推动的开源项目,已经能与大型公司昂贵的专有方案分庭抗礼。在众多突破中,涌现出一批更小但高效的语言模型,如 Vicuna、Koala、Alpaca 和 StableLM,它们在极少计算资源下即可产出不逊于 ChatGPT 的结果。它们的共同基础,正是 Meta AI 的 LLaMA 模型。

阅读 12 个 GPT-4 的开源替代方案,了解语言技术领域其他流行的开源进展。

在本文中,我们将了解 Meta AI 的 LLaMA 模型,探索其工作原理,通过 transformers 库进行访问,对其性能进行比较,并讨论挑战与局限。自本文最初撰写以来,LLaMA 2 和 LLaMA 3 相继发布,您可在我们的独立文章中获取各自的详细信息。

什么是 LLaMA?

LLaMA(Large Language Model Meta AI)是一组最先进的基础语言模型,参数规模从 7B 到 65B 不等。这些模型体量更小,却能提供卓越表现,显著降低实验新方法、复现他人工作与探索创新用例所需的算力与资源。

这些基础模型在大量未标注数据集上训练,非常适合在多种任务上进行微调。模型训练所用的数据来源包括:

  • 67.0% CommonCrawl
  • 15.0% C4
  • 4.5% GitHub
  • 4.5% Wikipedia
  • 4.5% Books
  • 2.5% ArXiv
  • 2.0% StackExchange

多样化的数据集使得这些模型取得了与顶尖模型(如 Chinchilla-70B 与 PaLM-540B)相媲美的最先进性能。

想系统了解 OpenAI 模型从 GPT-1、GPT-2、GPT-3 到当前 GPT-4 的发展脉络,请阅读:什么是 GPT-4,为什么重要?

Meta 的 LLaMA 如何工作?

LLaMA 是一种基于 Transformer 架构的自回归语言模型。与其他主流语言模型类似,LLaMA 通过接收词序列作为输入,预测下一个词,并递归生成文本。

LLaMA 的独特之处在于,其训练数据是公开可得的广泛文本,涵盖多种语言,如保加利亚语、加泰罗尼亚语、捷克语、丹麦语、德语、英语、西班牙语、法语、克罗地亚语、匈牙利语、意大利语、荷兰语、波兰语、葡萄牙语、罗马尼亚语、俄语、斯洛文尼亚语、塞尔维亚语、瑞典语和乌克兰语。截止 2024 年,LLaMA 2 已发布,在架构与训练方法上有所改进,进一步提升了多语言能力与效率。

LLaMA 提供多个规模:7B、13B、33B 和 65B 参数。您可以在 Hugging Face(针对 Transformers 转换后的 LLaMA 模型)或官方代码库 facebookresearch/llama 获取。

开始使用 LLaMA 模型

官方推理代码可在 facebookresearch/llama 仓库获取。为简化流程,我们将使用 Hugging Face 的 `transformers` 库模块 LLaMA 来加载模型并生成文本。

1. 安装运行该模块所需的全部 Python 库。

注意:我们使用 Google Colab 运行 LLaMA 推理。

%%capture
%pip install transformers SentencePiece accelerate

2. 加载 LLaMA 的分词器与模型权重。

注意:“decapoda-research/llama-7b-hf” 并非官方权重。Decapoda Research 将原始权重转换为可在 Transformers 中使用的格式。

import transformers, torch
from transformers import LlamaTokenizer, LlamaForCausalLM, GenerationConfig

tokenizer = LlamaTokenizer.from_pretrained("decapoda-research/llama-7b-hf")
model = LlamaForCausalLM.from_pretrained(
        "decapoda-research/llama-7b-hf",
        load_in_8bit=False,
        torch_dtype=torch.float16,
        device_map="auto",
    )

3. 编写问题。

4. 将文本转换为 token。

5. 创建模型生成配置。

6. 使用 token 与生成配置生成输出文本。

7. 解码并打印响应。

instruction = "How old is the universe?"
inputs = tokenizer(
    f"""Below is an instruction that describes a task. Write a response that appropriately completes the request.
### Instruction: {instruction}
### Response:""",
    return_tensors="pt",
)
input_ids = inputs["input_ids"].to("cuda")

generation_config = transformers.GenerationConfig(
    do_sample=True,
    temperature=0.1,
    top_p=0.75,
    top_k=80,
    repetition_penalty=1.5,
    max_new_tokens=128,
)

with torch.no_grad():
    generation_output = model.generate(
        input_ids=input_ids,
        attention_mask=torch.ones_like(input_ids),
        generation_config=generation_config,
    )
output_text = tokenizer.decode(
    generation_output[0].cuda(), skip_special_tokens=True
).strip()
print(output_text)

输出:

该模型不仅给出对宇宙年龄约 130 亿年的精确估计,还展示了其背后的推理过程。

Below is an instruction that describes a task. Write a response that 
appropriately completes the request.
### Instruction: How old is the universe?
### Response: The age of our Universe can be calculated by measuring 
how fast it expands and then using this information to calculate its
size at different points in time, which allows us determine when 
things happened relative to each other (evolutionary biology). This 
method has been used for many years now with great success; however 
there are still some uncertainties about what exactly we're seeing 
because light takes so long travel from distant galaxies back here on
Earth! So while scientists have determined roughly 13 billion 
year-old as being correct they don't know if their calculations were 
off or not due to these limitations mentioned above

此外,transformers 也可用于在多样任务与数据集上进行微调,从而显著提升准确性与性能。

如果您对开源开发的实操更感兴趣,不妨参考文章 用生成式模型可以构建的 5 个项目,获取灵感。

LLaMA 与其他 AI 模型有何不同?

该论文对 LLaMA 模型进行了全面评估,并与其他最先进的语言模型(如 GPT-3、GPT-NeoX、Gopher、Chinchilla 与 PaLM)进行比较。基准测试涵盖常识推理、知识问答、阅读理解、问答、数学推理、代码生成与通用领域知识等。

  1. 常识推理。LLaMA-65B 在 PIQA、SIQA 与 OpenBookQA 推理基准上超越了 SOTA 架构。即便是较小的 33B 模型,在 ARC(含简单与挑战集)上也全面领先。
  2. 闭卷问答与趣味问答。该测试衡量大模型理解并回答贴近人类的问题的能力。LLaMA 在 Natural Questions 与 TriviaQA 基准中,稳定优于 GPT-3、Gopher、Chinchilla 与 PaLM。
  3. 阅读理解。使用 RACE-middle 与 RACE-high 基准。LLaMA 超过了 GPT-3,且与 PaLM 540B 表现相近。
  4. 数学推理。LLaMA 未在数学数据上进行微调,与 Minerva 相比表现较弱。
  5. 代码生成。采用 HumanEval 与 MBPP 基准。LLaMA 在 HumanEval@100、MBP@1 与 MBP@80 上均优于 LAMDA 与 PaLM。

领域知识。与超大规模的 PaLM 540B 相比,LLaMA 表现较弱。PaLM 因参数量更大而具备更广的领域知识。

开放且高效的基础语言模型

LLaMA 的挑战与局限

与其他大型语言模型一样,LLaMA 也会产生幻觉,可能生成事实不准确的信息。

此外:

  1. 由于数据集中英语占比较高,需要注意模型在非英语语言上的表现可能相对较低。
  2. LLaMA 模型的主要用途为研究(非商业许可)。发布这些模型旨在帮助研究者评估并应对偏见、风险、有害内容生成与幻觉等问题。
  3. LLaMA 是基础模型,未经风险评估与缓解,不应直接用于构建应用。
  4. 在数学推理与领域知识方面表现一般。

若想了解闭源开发的最新动向,请阅读 关于 OpenAI、Google AI 的最新进展及其对数据科学的意义。文中探讨了颠覆性的语言、视觉与多模态技术如何提升我们的效率与产能。

随着 LLaMA 2 与 LLaMA 3 的发布,人们也识别出新的挑战与局限。在上下文长度限制等方面已有改进,通过微调等方法,模型正逐步克服对深度专业知识任务的困难。一如既往,社区正积极推进这些方面的改良,以提升模型的稳健性与适用性。

结语

LLaMA 模型在开源 AI 开发中掀起了革命性浪潮。较小的基础模型 LLaMA-13B 已超越 GPT-3 的能力,而 LLaMA-65B 则展现出与 Chinchilla-70B、PaLM-540B 等前沿模型相当的表现。这些进展表明,通过使用公开数据进行训练,并配合极少的计算资源,也能实现最先进的结果。

此外,论文还强调,通过基于指令对 LLaMA 进行微调,可获得潜在的性能提升。值得注意的是,Vicuna 与 Stanford Alpaca 等从 LLaMA 微调而来的“遵循指令”模型,已展现出与 ChatGPT 与 Bard 相近的效果。

如果您希望在数据科学项目中充分利用大型语言模型,请参阅 在数据科学项目中使用 ChatGPT 的指南。您也可以通过查看 数据科学版 ChatGPT 速查表 来提升您的提示工程技能。

Abid Ali Awan

作者

Abid Ali Awan

作为一名持证的数据科学家,我热衷于利用前沿技术打造创新的机器学习应用。凭借在语音识别、数据分析与报告、MLOps、对话式人工智能以及自然语言处理方面的扎实背景,我不断打磨构建智能系统的能力,力求带来切实影响。除技术专长外,我也擅长沟通,能够将复杂概念提炼为清晰、简明的表述。因此,我成为数据科学领域备受关注的博主,与不断壮大的数据专业人士社区分享洞见与实践经验。目前,我专注于内容创作与编辑,借助大语言模型打造有力且吸引人的内容,帮助企业与个人更好地发挥数据价值。

主题