在 Mac M1 上运行 Llama 2 并进行训练

news2024/12/23 7:43:17

在 Mac M1 上运行 Llama 2 并进行训练

在这里插入图片描述

Llama 2 是由领先的人工智能研究公司 Meta (前Facebook)开发并发布的下一代大型语言模型 (LLM)。 它基于 2 万亿个公共数据 token 进行了预训练,旨在帮助开发人员和企业组织构建基于人工智能的生成工具和用户体验。Llama 2 在许多外部基准测试中都优于其他开源语言模型,包括推理、编码、熟练程度和知识测试。更关键的是,相比 ChatGPTClaude 等闭源大模型,Llama 2 更加开放友好,可以免费用于研究和商业用途,并且可以方便地从 Meta 网站上下载。因此 Llama 2 是进行大模型研究的理想选择。

然而,Llama 2 对苹果 M1 芯片的支持不太好,如果你想在 Mac M1 设备上运行 Llama 2 并使用自己的数据对其进行训练,需要安装一些额外的依赖和环境,并进行相应的配置。本文将指导你完成在 Mac M1 上设置 Llama 2 的过程,并根据使用你自己的数据对其进行精调。

文章目录

    • 安装依赖
    • 下载 Llama 2 模型重量和代码
    • 精调Llama 2
    • 使用精调 Llama 2 模型
    • 结论

安装依赖

要想在 Mac M1 上运行 Llama 2,你需要安装一些依赖项,例如 PythonPyTorchTensorFlowHugging Face Transformers。你可以使用 HomebrewAnaconda 来安装这些软件包。例如,要使用 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/。

Hugging Face Transformers 的安装相对简单,只需在终端中运行以下命令:

pip install transformers

完成上述三个依赖项后,环境就搭建好了。

下载 Llama 2 模型重量和代码

环境依赖搭建好后,接下来就要下载 Llama 2 模型权重和代码。你需要在 Meta 网站上填写表格并同意其隐私政策。 提交表格后,会收到一封电子邮件,其中包含下载模型文件的链接。这里有好多个不同参数规模的模型,你可以根据具体需要选择,参数范围从 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: 模型的 tokenizer 文件。
  • vocab.txt: 模型的字典文件。
  • run_generation.py: 使用模型生成文本的 Python 脚本。

精调Llama 2

要使用自己的数据对 Llama 2 进行精调,首先需要准备一个包含训练数据的文本文件。文件中的每一行都应包含对话内容或模型说明。例如,如果你想针对客服机器人场景精调 Llama 2,训练文件可能如下所示:

 USER: 你好,我的订单有问题。
LLAMA: 你好,很高兴为您服务。麻烦您告诉我一下订单号。
 USER: #123456789
LLAMA: 收到。这个订单有什么问题呢?
 USER: 我收到的货物是坏的。
LLAMA: 很抱歉给您带来此困扰。你能发一下订单收据和物品照片给我吗?我帮你走免费换货流程。
 USER: 可以。发给你了。
LLAMA: 感谢您的配合。我会尽快处理您的问题。对于本次货损,再次向您致以歉意。
 USER: 谢谢。
LLAMA: 不客气。还有其他问题吗?
 USER: 没有了。
LLAMA: 那感谢您选择你的服务。祝您生活愉快。

你可以将训练文件另存为 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

这个命令参数比较多,你逐个解析一下:

  • model_type: 模型的类型,Llama 2gpt2
  • 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 可能需要很长时间,并且需要大量内存和算力,尤其是对于较大的模型。你可以通过查看终端中打印的日志来监控训练过程的进度。

使用精调 Llama 2 模型

使用你自己的数据对 Llama 2 进行精调后,就可以通过在终端中运行以下命令来使用精调后的模型:

python run_generation.py --model_type gpt2 --model_name_or_path ./llama-2-chat-7B-finetuned --length 100 --prompt "USER: 你好,我想取消我的订单。"

参数说明如下:

  • model_type: 模型的类型,Llama 2gpt2
  • model_name_or_path: 精调模型目录的路径,在本例中为 ./llama-2-chat-7B-finetuned
  • length: 生成文本的最大长度,在本例中为 100 个token。
  • prompt: 模型的文本输入,例如示例中的“USER: 你好,我想取消我的订单。”

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

python run_generation.py --model_type gpt2 --model_name_or_path ./llama-2-chat-7B-finetuned --length 100 --no_cuda
 USER: 你好,我想取消我的订单。
LLAMA: 你好,感谢您联系你。我能问一下您为什么要取消订单吗?
 USER: 我不需要了。
LLAMA: 明白了解。很遗憾你的产品和服务没有让您满意。您可以自助式取消订单,只要在订单列表中找到要取消的订单,然后点击查看详情,在页面最下方有取消按钮。
 USER: 谢谢。
LLAMA: 不客气。祝您生活愉快。

结论

Llama 2 是一种功能强大且多样的大型语言模型,可用于各种生成式和对话式 AI 应用。通过使用你自己的数据对其进行精调,你可以根据你的特定场景和用例对其进行自定义,并提高其性能和生成质量。希望本文对你有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1123874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过pipeline配置sonar自动化实现过程解析

这篇文章主要介绍了通过pipeline配置sonar自动化实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.sonar配置webhooks, 2.url填写jenkins的地址:http://jenkinsurl/sonarqu…

TensorFlow2从磁盘读取图片数据集的示例(tf.keras.utils.image_dataset_from_directory)

import os import warnings warnings.filterwarnings("ignore") import tensorflow as tf from tensorflow.keras.optimizers import Adam from tensorflow.keras.applications.resnet import ResNet50#数据所在文件夹 base_dir ./data/cats_and_dogs train_dir os…

Docker搭建nacos2.x集群+nginx代理

说明: 如果只需要搭建单节点nacos,请参照我的这篇文章 一、环境准备 资源版本说明docker1.17用于安装nacos及mysql等依赖nacos2.1.1nacosmysql5.6用于数据持久化,本文使用mysql8.0.34 二、安装mysql 说明: 本次安装mysql将以d…

CorelDRAW和InDesign软件的功能区别

Corel和Ilustrator都是基于矢量的排版软件。另一方面,InDesign的主要目的是基于包含不同基本网格设计,以及标题和段落样式信息的母版页来制作多页面布局,例如杂志或书籍,这为了使出版物保持一致。 CorelDRAW图形套件是加拿大Core…

ME1W隐式增强 增加字段学习

需要增加 eina-IDNLF字段 而ME1W中原本是没有的,所以需要改动这个结构 改动后会在这里加入 同时如果程序本身不会输出的话,需要自己加,可以用增强 光标放在 ENHANCEMENT-SECTION 上,然后点击增强按钮 创建完后,你的增强…

【软件测试】自动化测试selenium

目录 一、什么是自动化测试 二、Selenium介绍 1、Selenium是什么 2、Selenium的原理 三、了解Selenium的常用API 1、webDriver API 1.1、元素定位 1.1.1、CSS选择器 1.1.2、Xpath元素定位 1.1.3、面试题 1.2、操作测试对象 1.3、添加等待 1.4、打印信息 1.5、浏览…

数学预备知识

函数篇: 一次函数、反比例函数、二次函数、指数函数、对数函数、幂函数、三角函数、反三角函数、极点坐标等等 初中数学 【a,b】:开区间 (a,b):闭区间 ∞ :无穷大 ∞&#xff1…

webpack类似的工具还有哪些?

一、模块化工具 模块化是一种处理复杂系统分解为更好的可管理模块的方式 可以用来分割,组织和打包应用。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体(bundle) 在前端领域中,并非只有webpack这一款…

Selenium+Pytest自动化测试框架详解

前言 selenium自动化 pytest测试框架 本章你需要 一定的python基础——至少明白类与对象,封装继承;一定的selenium基础——本篇不讲selenium,不会的可以自己去看selenium中文翻译网 一、测试框架简介 测试框架有什么优点 代码复用率高&…

ZKP6.1 Discrete-log-based Polynomial Commitments (Preliminary)

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 6: Discrete-log-based Polynomial Commitments (Yupeng Zhang) Recall How to build an efficient SNARK? A polynomial commitment scheme A polynomial interactive oracle proof (IOP) SNARK for general circuits Plo…

【推荐】一个国内免费体验的AI论文写作网站-「智元兔 AI」

在当今技术飞速发展的时代,越来越多的领域开始应用人工智能(Artificial Intelligence,简称AI)。其中,AI写作工具备受瞩目,备受推崇。在众多的选择中,智元兔AI是一款在笔者使用过程中非常有帮助的…

会议邀请 | 思腾合力邀您共赴CNCC 2023中国计算机大会

CNCC 2023于10月26日-28日将在沈阳的沈阳新世界博览馆举办。思腾合力作为行业领先的人工智能基础架构解决方案商,受邀参加本次盛会。在会上展出思腾AI算力服务器,诚挚邀请众多参会嘉宾莅临展位,共同探讨人工智能与智能算力的产业趋势&#xf…

VS的使用时遇到了basePath不能是相对路径的问题,如何处理?

使用VS,当你编译运行代码时出现以下的问题 解决方法 原因:文件库的路径存在问题,需要把相对路径改为绝对路径。 如何解决:去右键点击解决方案,选择属性-》调试-》命令中的参数被设置为相对路径。就可以解决以上的问题…

UE5 ChaosVehicles载具 增加方向盘动画 (连载三)

掌握该流程就能实现方向盘、码表指针、按钮等动画制作 1.复制一个骨骼,位置在方向盘的旋转中心,注意骨骼角度要与方向盘倾角一样,我这里是11.9,然后绑定权重 2.打开动画蓝图,把前车轮的角度值x转向比(通…

泛型的使用案例,以及年月日的定制排序,传入Comparator对象

简易版&#xff1a;传送门&#xff1a;过关展将之——birthday排序&#xff08;年月日排序&#xff09;-CSDN博客 实现过程; public static void main(String[] args) {ArrayList<Employee> arrayList new ArrayList<>();Employee grace new Employee("G…

面对“双十一”这样的大促,品牌方还能多做些什么?

小编叨叨&#xff1a;当前市场环境不佳&#xff0c;经济下行时用户对于商品价格最敏感&#xff0c;当然价格也是决定企业经营利润&#xff0c;市场竞争力及用户口碑的重要核心影响因素&#xff0c;所以我们特地为企业准备了商品智能定价咨询及数据运营咨询服务&#xff0c;有需…

英语——分享篇——每日200词——3201-3400

3201——air-conditioning——[eərkəndɪʃnɪŋ]——n.空调设备&#xff1b;vt.给…装上空调——air-conditioning——air-condition空调(熟词)ing鹰(谐音)——空调设备的噪音让鹰不得安宁——The trains dont even have proper air-conditioning, grumbles Mr So. ——地铁…

深度学习_5_模型拟合_梯度下降原理

需求: 想要找到一条直线&#xff0c;能更好的拟合这一些点 如何确定上述直线就是最优解呢&#xff1f; 由计算机算出所有点与我们拟合直线的误差&#xff0c;常见的是均方误差 例如&#xff1a;P1与直线之间的误差为e1 将P1坐标带入直线并求误差得&#xff1a; 推广到所有点&a…

买充电桩你必须要知道三件事

分享一套开源充电桩云平台&#xff08;v2.5.1&#xff09;-- 支持二轮(电动自行车)、四轮(电动汽车) 中国电动汽车充电基础设施促进联盟的信息部主任&#xff0c;仝宗旗&#xff0c;在2022年接受了《中国汽车报》采访的时候&#xff0c;提到过一个数据。 电动车主在小区成功安…

计算机考研自命题(5)

1、C语言–求和 1、展开式求和。输入一个实数x&#xff0c;计算并输出下式的和&#xff0c;直到最后一项的绝对值小于0.00001.计算结果保留2位小数&#xff0c;试编程。 S x x/2&#xff01; x/3&#xff01; … /* 算法思想&#xff1a;定义一个求阶乘的函数fact(), 头文件调…