使用 LLaMA-Factory 对 LLM 进行微调

2024年5月4日 2760点热度 2人点赞 0条评论

LLaMA-Factory 简介

LLaMA-Factory 是一个开源项目,它提供了一套全面的工具和脚本,用于微调、服务和基准测试 LLaMA 模型。LLaMA(大型语言模型自适应)是 Meta AI 开发的一组基础语言模型,在各种自然语言任务上表现出色。

LLaMA-Factory 存储库提供以下内容,让您轻松开始使用 LLaMA 模型:

  • 数据预处理和标记化的脚本
  • 用于微调 LLaMA 模型的训练流程
  • 使用经过训练的模型生成文本的推理脚本
  • 评估模型性能的基准测试工具
  • 用于交互式测试的 Gradio Web UI

在本文中,我们将介绍使用 LLaMA-Factory 微调和部署 LLaMA 模型的关键步骤。

如何设置 LLaMA-Factory

LlaMA-Factory 是一个开源的项目,您可以从 github 直接拉取:

git clone https://github.com/hiyouga/LLaMA-Factory.git

首先,您需要设置具有所需依赖项的 Python 环境。建议使用虚拟环境来隔离软件包。

# Create and activate a virtual environment
python -m venv llama-env 
source llama-env/bin/activate

# Install required packages by LlaMA-Factory
pip install -r requirements.txt

LLaMA-Factory repo 中的文件requirements.txt指定了必要的 Python 包,包括 PyTorch、Transformers、Datasets 等。

您还需要访问预训练的 LLaMA 模型权重。权重不公开,但可以从 Meta 请求用于研究目的。将模型权重放在目录中llama_checkpoints

LLaMA-Factory 的数据准备

下一步是准备数据集以进行微调。LLaMA-Factory 要求训练数据采用特定的 JSON 格式:

[
  {
    "instruction": "What is the capital of France?",
    "input": "",
    "output": "Paris is the capital of France."
  },
  ...
]

每个 JSON 对象代表一个训练示例,其中包含以下字段:

  • instruction:任务指令或提示
  • input:任务的附加上下文(可以为空)
  • output:目标完成或响应

您可以以这种格式准备自己的数据集,或者使用目录中提供的示例数据集之一data,例如 Alpaca 数据集。

要标记并处理数据集,请运行:

python data_preprocess.py \
  --data_path data/alpaca_data.json \
  --save_path data/alpaca_data_tokenized.json

这将加载 JSON 数据集、标记文本字段并将标记数据保存到磁盘。使用的标记器来自LlamaTokenizerTransformers 库。

使用 LLaMA-Factory 微调LLM

准备好数据后,您现在可以使用脚本启动微调运行finetune.py

python finetune.py \
  --model_name llama-7b \
  --data_path data/alpaca_data_tokenized.json \
  --output_dir output/llama-7b-alpaca \
  --num_train_epochs 3 \
  --batch_size 128 \
  --learning_rate 2e-5 \
  --fp16

主要参数设置如下:

  • model_name:要微调的基础 LLaMA 模型,例如llama-7b
  • data_path:标记数据集的路径
  • output_dir:保存微调模型的目录
  • num_train_epochs:训练周期数
  • batch_size:训练的批次大小
  • learning_rate:优化器的学习率
  • fp16:使用 FP16 混合精度来减少内存使用量

该脚本将加载预训练的 LLaMA 模型,准备训练数据集,并使用指定的超参数运行微调过程。微调后的模型检查点将保存在 中output_dir

使用 LLaMA-Factory 进行推理

一旦你有了经过微调的 LLaMA 模型,你就可以使用它来根据提示生成文本补全。该generate.py脚本提供了如何加载模型和执行推理的示例:

python generate.py \
  --model_path output/llama-7b-alpaca \
  --prompt "What is the capital of France?"

这将从 加载经过微调的模型model_path,对提供的 进行标记prompt,并使用模型的generate()方法生成文本补全。您可以自定义生成参数,如 max_lengthnum_beamstemperature 等。

网页用户界面

为了进行交互式测试和演示,LLaMA-Factory 还提供了 Gradio Web UI。要启动 UI,请运行:

python web_ui.py

这将启动本地 Web 服务器并在浏览器中打开 UI。您可以输入提示并从经过微调的模型实时生成补全。

中的 Web UI 代码web_ui.py展示了如何将模型与 Gradio 集成以构建交互式演示。您可以根据具体用例扩展和自定义 UI。

使用 LLaMA-Factory 进行基准测试

最后,LLaMA-Factory 包含用于在各种评估数据集上对微调模型的性能进行基准测试的脚本。该benchmark.py脚本提供了一个示例:

python benchmark.py \
  --model_path output/llama-7b-alpaca \
  --benchmark_datasets alpaca,hellaswag

这将加载经过微调的模型并评估其在指定方面的表现benchmark_datasets。该脚本报告准确度、困惑度和 F1 分数等指标。

DatasetBuilder您可以通过实现一个类并将其注册到基准脚本来添加您自己的评估数据集。

结论

LLaMA-Factory 提供了一个强大的工具箱,用于处理 LLaMA 语言模型。借助其用于数据处理、微调、推理和基准测试的脚本,您可以快速训练和部署适合您的特定用例的 LLaMA 模型。

代码库的模块化设计还可以轻松扩展和自定义管道以实现高级工作流程。您可以尝试不同的模型架构、训练目标和推理策略。

要了解更多信息并为项目做出贡献,请查看 LLaMA-Factory GitHub 存储库:

https://github.com/hiyouga/LLaMA-Factory

予人玫瑰,手有余香。如果您觉得本文对您有帮助,请点赞或打赏。

文章评论

您需要 登录 之后才可以评论