我的学习笔记

土猛的员外

在Mac M1上安装Llama2并用你自己的数据进行微调

llama2

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

Llama2可免费用于研究和商业用途,并可从Meta的网站下载。然而,如果你想在Mac M1设备上运行Llama2,并用你自己的数据训练它,你需要遵循一些额外的步骤。本文将指导您完成在Mac M1上设置Llama2的过程,并针对您的特定用例进行微调。

内容大纲

  • 步骤1:安装所需的依赖项
  • 步骤2:下载Llama2模型权重和代码
  • 步骤3:微调Llama2与您自己的数据
  • 步骤4:生成文本与微调Llama2模型

步骤 1:安装所需的环境依赖

要在Mac M1上运行Llama2,你需要安装一些依赖项,比如Python、PyTorch、TensorFlow和HuggingFace Transformers。您可以使用Homebrew或Anaconda来安装这些软件包(如果Python以后会成为你的主要开发语言,那么建议用Anaconda)。例如,要使用Homebrew安装Python 3.9,您可以在终端运行以下命令:

1
brew install python@3.9

安装Mac M1的PyTorch,你可以按照下面的链接:https://pytorch.org/get-started/locally/#macos-version

安装Mac M1的TensorFlow,你可以按照下面的链接:https://developer.apple.com/metal/tensorflow-plugin/.

安装Hugging Face Transformers,你可以在终端运行以下命令:

1
pip install transformers

步骤2:下载Llama2模型权重和代码

要下载Llama2模型权重和代码,您需要在Meta的网站上填写表格并同意他们的隐私政策。提交表单后,您将收到一封电子邮件,其中包含下载模型文件的链接。你可以选择不同的Llama2型号,从7B到70B参数范围。微调的变体,称为lama-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: 用自己的数据微调Llama2

要用您自己的数据对Llama2进行微调,您需要准备一个包含您的训练数据的文本文件。文件中的每一行都应该包含一个对话回合或一个模型指令。例如,如果您想为客户服务聊天机器人微调Llama2,您的训练集文件可能看起来像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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进行微调:

1
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:模型目录的路径,在此例中为。/ lama-2-chat- 7b。
  • train_data_file:训练数据文件的路径,在此例中为。/train.txt。
  • output_dir:输出目录的路径,将保存微调模型,在本例中为。/ lama-2-chat- 7b - fintuned。
  • do_train:一个标志,表示我们想要训练模型。
  • per_device_train_batch_size:每台设备用于训练的批处理大小,在本例中为1。
  • gradient_accumulation_steps:在执行向后/更新传递之前累积梯度的步数,在本例中为4。
  • learning_rate:训练的学习率,在本例中为5e-5。
  • num_train_epochs:训练模型的epoch数,在本例中为3。save_steps:每个检查点保存之间的步数,在本例中为1000。
  • save_total_limit:要保留的最大检查点数,在本例中为1。

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

步骤4: 生成文本与微调Llama2模型

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

1
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: 模型的类型,对于Llama2来说是gpt2。
  • model_name_or_path:微调模型目录的路径,在本例中为./llama-2-chat- 7b - fintuned。
  • length: 生成文本的最大长度,在本例中为100个tokens。
  • prompt: 模型的文本输入是“USER:嗨,我想取消订阅。在这种情况下。

您可以根据自己的需要和偏好更改这些参数。您还可以通过使用 - no_cuda标志并在终端中输入文本输入来与模型进行交互。例如:

1
2
3
4
5
6
7
8
9
10
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.

最后

Llama2是一个强大而通用的大型语言模型,可用于各种生成和会话AI应用程序。通过使用您自己的数据对其进行微调,您可以针对您的特定用例对其进行定制,并改进其性能和相关性。我希望你发现这篇文章有帮助和信息。

原文:How to Run Llama 2 on Mac M1 and Train with Your Own Data


TorchV AI支持试用!

如您有大模型应用方面的企业需求,欢迎咨询!