Llama2模型微调

Llama 2 是由领先的 AI 研究公司 Meta 开发和发布的下一代大型语言模型 (LLM)。它基于 2 万亿个公共数据令牌进行预训练,旨在使开发人员和组织能够构建生成式 AI 驱动的工具和体验。Llama 2 在许多外部基准测试(包括推理、编码、熟练程度和知识测试)上优于其他开源语言模型。

Llama 2 可免费用于研究和商业用途,也可以从 Meta 的网站下载(目前不审批了下载不了,我们可以用chatGLM来替代这是清华开源的没有限制)。但是,如果要在Mac M2设备上运行Llama 1并使用自己的数据对其进行训练,则需要执行一些其他步骤。我们将指导你完成在Mac M2上设置Llama 1并针对您的特定用例对其进行微调的过程。

内容

  • 第 1 步:安装所需的依赖项
  • 第 2 步:下载 Llama 2 模型权重和代码
  • 第 3 步:使用您自己的数据微调 Llama 2
  • 第 4 步:使用微调的 Llama 2 模型生成文本
  • 结论

第1步:安装所需的依赖项

要在Mac M2上运行Llama 1,您需要安装一些依赖项,例如Python,PyTorch,TensorFlow和Hugging Face Transformers。您可以使用Homebrew或Anaconda来安装这些软件包。例如,要使用 Homebrew 安装 Python 3.9,您可以在终端中运行以下命令:

brew install python@3.9

要安装 PyTorch for Mac M1,你可以按照以下链接中的说明进行操作:https://pytorch.org/get-started/locally/#macos-version 要安装 TensorFlow for Mac M1,你可以按照以下链接中的说明进行操作:https://developer.apple.com/metal/tensorflow-plugin/。要安装拥抱面变压器,您可以在终端中运行以下命令:

pip install transformers

第 2 步:下载 Llama 2 模型权重和代码

要下载 Llama 2 模型权重和代码,你需要在 Meta 网站上填写表格并同意其隐私政策。提交表单后,你将收到一封电子邮件,其中包含下载模型文件的链接。你可以从 Llama 2 型号的不同变体中进行选择,范围从 7B 到 70B 参数。微调的变体称为Llama-2-chat,针对对话用例进行了优化。

在本教程中,我们将使用 Llama-2-chat-7B 模型作为示例。你可以从以下链接下载模型权重和代码:https://ai.meta.com/llama/llama-2-chat-7B.zip。下载 zip 文件后,你可以将其解压缩到首选目录中。你应该会看到一个名为 llama-2-chat-7B 的文件夹,其中包含以下文件:

  • config.json:模型的配置文件。
  • pytorch_model.bin:PyTorch 模型权重文件。
  • tokenizer.json:模型的分词器文件。
  • vocab.txt:模型的词汇表文件。
  • run_generation.py:用于使用模型生成文本的 Python 脚本。

第 3 步:使自己的数据微调 Llama 2

要使用你自己的数据微调 Llama 2,需要准备一个包含训练数据的文本文件。文件中的每一行都应包含对话转弯或模型指令。例如,如果要为客户服务聊天机器人微调 Llama 2,则训练文件可能如下所示:

USER: Hi, I have a problem with my order.
LLAMA: Hello, thank you for contacting us. What is your order number?
USER: It's #123456789.
LLAMA: I see. What is the issue with your order?
USER: I received a damaged item.
LLAMA: I'm sorry to hear that. Could you please send us a photo of the item and your receipt?
USER: Sure, here they are.
LLAMA: Thank you. We apologize for the inconvenience. We will process your refund as soon as possible.
USER: Thank you for your help.
LLAMA: You're welcome. Is there anything else I can assist you with today?
USER: No, that's all. Have a nice day.
LLAMA: Thank you for choosing us. Have a nice day too.

你可以将训练文件另存为 train.txt与模型文件位于同一目录中。然后,你可以在终端中运行以下命令,以使用训练数据微调 Llama 2:

python run_generation.py --model_type gpt2 --model_name_or_path ./llama-2-chat-7B --train_data_file ./train.txt --output_dir ./llama-2-chat-7B-finetuned --do_train --per_device_train_batch_size 1 --gradient_accumulation_steps 4 --learning_rate 5e-5 --num_train_epochs 3 --save_steps 1000 --save_total_limit 1

此命令将使用以下参数微调 Llama 2:

  • model_type:模型的类型,对于 Llama 2,为 gpt2。
  • model_name_or_path:模型目录的路径,在本例中为 ./llama-2-chat-7B。
  • train_data_file:训练数据文件的路径,在本例中为 ./train.txt。
  • output_dir:输出目录的路径,将保存微调的模型,在本例中为 ./llama-2-chat-7B-finetuned。
  • do_train:指示我们要训练模型的标志。
  • per_device_train_batch_size:用于训练的每个设备的批大小,在本例中为 1。
  • gradient_accumulation_steps:在执行向后/更新通道之前累积梯度的步骤数,在本例中为 4。
  • learning_rate:训练的学习率,在本例中为 5e-5。
  • num_train_epochs:训练模型的周期数,在本例中为 3。
  • save_steps:每个检查点保存之间的步骤数,在本例中为 1000。
  • save_total_limit:要保留的最大检查点数,在本例中为 1。

你可以根据需要和可用资源调整这些参数。请注意,微调 Llama 2 可能需要很长时间,并且需要大量内存和计算能力,尤其是对于较大的模型。你可以通过查看终端中打印的日志来监控训练过程的进度。

第4步:使用微调的 Llama 2 模型生成文本

使用你自己的数据微调 Llama 2 后,你可以通过在终端中运行以下命令来使用微调模型生成文本:

python run_generation.py --model_type gpt2 --model_name_or_path ./llama-2-chat-7B-finetuned --length 100 --prompt "USER: Hi, I want to cancel my subscription."

此命令将生成具有以下参数的文本:

  • model_type:模型的类型,对于 Llama 2,为 gpt2。
  • model_name_or_path:微调模型目录的路径,在本例中为 ./llama-2-chat-7B-finetuned。
  • length:生成文本的最大长度,在本例中为 100 个标记。
  • prompt:模型的文本输入,在本例中为“用户:嗨,我想取消订阅”。 可以根据需要和首选项更改这些参数。还可以通过使用 — no_cuda 标志并在终端中输入文本输入来与模型进行交互。例如:
python run_generation.py --model_type gpt2 --model_name_or_path ./llama-2-chat-7B-finetuned --length 100 --no_cuda
USER: Hi, I want to cancel my subscription.
LLAMA: Hello, thank you for contacting us. May I ask why you want to cancel your subscription?
USER: I don't use your service anymore.
LLAMA: I see. Well, we are sorry to lose you as a customer. To cancel your subscription, you will need to log in to your account and go to the settings page. There you will find an option to cancel your subscription. Do you need any help with that?
USER: No, thank you. I can do it myself.
LLAMA: OK then. Thank you for choosing us and we hope you have a great day.

结论

Llama 2 是一个功能强大且通用的大型语言模型,可用于各种生成和对话 AI 应用程序。通过使用你自己的数据对其进行微调,你可以针对你的特定用例对其进行自定义,并提高其性能和相关性。

✉️ Github bilibili wechat sshfortress YouTube old