原文:
huggingface.co/docs/transformers
LLaMA
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/llama
概述
Hugo Touvron、Thibaut Lavril、Gautier Izacard、Xavier Martinet、Marie-Anne Lachaux、Timothée Lacroix、Baptiste Rozière、Naman Goyal、Eric Hambro、Faisal Azhar、Aurelien Rodriguez、Armand Joulin、Edouard Grave、Guillaume Lample 在LLaMA: Open and Efficient Foundation Language Models中提出了 LLaMA 模型。它是一个包含从 7B 到 65B 参数的基础语言模型的集合。
该论文的摘要如下:
我们介绍 LLaMA,这是一个包含从 7B 到 65B 参数的基础语言模型的集合。我们在数万亿标记上训练我们的模型,并展示了可以仅使用公开可用的数据集训练最先进的模型,而无需使用专有和不可访问的数据集。特别是,LLaMA-13B 在大多数基准测试中优于 GPT-3(175B),而 LLaMA-65B 与最佳模型 Chinchilla-70B 和 PaLM-540B 竞争。我们向研究社区发布了所有我们的模型。
此模型由zphang贡献,BlackSamorez也有贡献。 Hugging Face 中的实现代码基于 GPT-NeoX 这里。作者的原始代码可以在这里找到。
使用提示
- LLaMA 模型的权重可以通过填写此表格获得。
- 下载权重后,需要使用转换脚本将其转换为 Hugging Face Transformers 格式。可以使用以下(示例)命令调用脚本:
python src/transformers/models/llama/convert_llama_weights_to_hf.py
--input_dir /path/to/downloaded/llama/weights --model_size 7B --output_dir /output/path
- 转换后,可以通过以下方式加载模型和分词器:
from transformers import LlamaForCausalLM, LlamaTokenizer
tokenizer = LlamaTokenizer.from_pretrained("/output/path")
model = LlamaForCausalLM.from_pretrained("/output/path")
请注意,执行脚本需要足够的 CPU RAM 来托管整个模型的 float16 精度(即使最大版本分为几个检查点,它们每个都包含模型的每个权重的一部分,因此我们需要将它们全部加载到 RAM 中)。对于 65B 模型,因此需要 130GB 的 RAM。
- LLaMA 分词器是基于sentencepiece的 BPE 模型。sentencepiece 的一个特点是,在解码序列时,如果第一个标记是单词的开头(例如“Banana”),分词器不会在字符串前添加前缀空格。
此模型由zphang贡献,BlackSamorez也有贡献。 Hugging Face 中的实现代码基于 GPT-NeoX 这里。作者的原始代码可以在这里找到。实现的 Flax 版本由afmck贡献,实现中的代码基于 Hugging Face 的 Flax GPT-Neo。
基于原始 LLaMA 模型,Meta AI 发布了一些后续作品:
- Llama2:Llama2 是 Llama 的改进版本,具有一些架构调整(Grouped Query Attention),并且在 2 万亿标记上进行了预训练。请参考可以在这里找到的 Llama2 的文档。
资源
一系列官方 Hugging Face 和社区(由