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

在 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.mzph.cn/news/117893.shtml

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

相关文章

云音乐Android Cronet接入实践

背景 网易云音乐产品线终端类型广泛,除了移动端(IOS/安卓)之外,还有PC、MAC、Iot多终端等等。移动端由于上线时间早,用户基数大,沉淀了一些端侧相对比较稳定的网络策略和网络基础能力。然而由于各端在基础…

如何理解Go言中的Context?

目前看过除了《go语言程序设计》以外最好的教程:https://www.practical-go-lessons.com 原文:https://www.practical-go-lessons.com/chap-37-context 你将在本章中学到什么? 1.什么是上下文? 2.什么是链表? 3.如何…

物联网知识复习

物联网的内涵和体系结构 物联网的基本内涵 物联网的基本内涵在于物联,物物相连或者物和人相连的互联网。 也就是说,它是要由物主动发起的,物物互联的互联网。 它的第一层意思是说物和物相连;第二层意思是说物和人相连。 物联网的…

美摄人像背景抠图SDK

企业对于图像处理的需求越来越高。无论是社交媒体营销、产品展示还是企业内部培训,高质量的图像都是吸引用户和提升品牌形象的关键。然而,传统的图像处理工具往往需要大量的手动操作和专业技巧,耗时耗力。为了满足企业对于高效、精准的图像处…

✔ ★【备战实习(面经+项目+算法)】 10.22学习时间表(总计学习时间:4.5h)(算法刷题:7道)

✔ ★【备战实习(面经项目算法)】 坚持完成每天必做如何找到好工作1. 科学的学习方法(专注!效率!记忆!心流!)2. 每天认真完成必做项,踏实学习技术 认真完成每天必做&…

医院数字档案系统-医院数字档案室建设方案

医院数字档案系统是一种将医院病历、检查报告、检验结果等医学相关数据以数字化形式储存、管理和检索的信息系统。它是利用计算机技术和网络技术对病历、影像、检验、处方等各类医疗信息进行数字化管理,实现电子病历、电子影像、电子处方等数据化服务。 医院数字档案…

Zabbix“专家坐诊”第208期问答汇总

问题一 Q:请问大佬们,我的测试机部署了2个版本的zabbix服务端,在启动第二个的时候报这个错,请问这个路径能在配置文件修改吗? SYJKLiLB64dded94d3c0c.png A:报错是你的进程存在,无法启动。一个…

无缝的链间互操作性:通用消息传递的强大之处

前言 通用消息传递(General Message Passing,GMP)是一种支持区块链之间通信和数据传输的机制。GMP正在成为增强不同区块链网络之间互操作性的解决方案。GMP允许应用程序构建者通过使用安全消息在区块链之间通信和交换信息来利用任何区块链的…

openEuler 22.03 LTS 安装 Docker CE 和 Dcoker Compose

openEuler 使用 DNF 安装 Docker CE 1024,节日快乐!回归正题,DNF 安装 DockerOS 系统环境准备安装 docker-ce 步骤1、更新系统2、安装必要的软件包3、添加 Docker CE 存储库4、更新索引缓存并安装 Docker CE5、启动 Docker 服务6、查看 Docke…

数字驱动,营销赋能丨工商职院电子商务专业学生,前往餐饮美食电商新业态基地试岗交流

纸上得来终觉浅,绝知此事要躬行。为了让学生更好的了解自己与所应聘岗位的匹配度,同时也希望在实际业务场景中,发掘自身优势,10月23日,四川产教融创园信息技术有限公司组织四川工商职业技术学院的电子商务专业学生一行…

微软成AI热潮大赢家,继续押注大模型和人工智能

KlipC报道:微软在官网发布了财报,据数据显示该公司营收同比增长13%达565亿美元,营业利润同比增长25%达269亿美元,净利润同比增长27%达223亿美元。 KlipC的合伙人Andi D表示:“微软的智能云部门收入同比增长19%&#xf…

新成果展示:AlGaN/GaN基紫外光电晶体管的设计与制备

紫外光电探测器被广泛应用于导弹预警、火灾探测、非可见光通信、环境监测等民事和军事领域,这些应用场景的实现需要器件具有高信噪比和高灵敏度。因此,光电探测器需要具备响应度高、响应速度快和暗电流低的特性。近期,天津赛米卡尔科技有限公…

JAVA电商平台免费搭建 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城

涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

《红蓝攻防对抗实战》三.内网探测协议出网之HTTP/HTTPS协议探测出网

目录 一. 在 Windows 操作系统中探测 HTTP/HTTPS 出网 1. Bitsadmin 命令 2.Certuil 命令 2.Linux系统探测HTTP/HTTPS出网 1.Curl命令 2.Wget命令 对目标服务器探测 HTTP/HTTPS 是否出网时,要根据目标系统类型执行命令,不同类型的操作系统使用的探…

【IDEA查看一个jar包的依赖】

首先install,打jar包 重新创建一个项目 选中刚才的jar包 在这个包下就能看到jar包的依赖了

ES SearchAPI----Query DSL语言

文章目录 Getting Startedmatch_all查询全部sort排序from\size分页_source指定字段 match匹配查询match_phrase短语匹配multi_match多字段匹配range范围查询bool复合查询must必须匹配,可贡献得分must_not必须不匹配,可贡献得分should可有可无&#xff0c…

AnkiPDF Guru软件评测:打开全新学习方式的大门

在当今信息爆炸的时代,如何高效学习和记忆成为了每个人关注的焦点。AnkiPDF Guru软件作为结合了Anki和PDF的学习利器,向我们展示了一种全新的学习方式。本文将以软件的实用性和使用场景为切入点,从专业的角度客观分析和评测该软件&#xff0c…

Mysql主从集群同步延迟问题怎么解决

主从复制 复制过程分为几个步骤: 主库的更新事件(update、insert、delete)被写到binlog 从库发起连接,连接到主库。 此时主库创建一个 binlog dump thread,把 binlog 的内容发送到从库。 从库启动之后,创建一个 I/O 线程&#xff…

Pillow库(PIL)入门教程

Pillow库,PIL的升级版,一个免费开源的Python图像处理库。 Pillow 库(有时也称 PIL 库) 是 Python 图像处理的基础库,它是一个免费开源的第三方库,由一群 Python 社区志愿者使用 Python 语言开发而成&#…

数字化营销如何推动企业营收增长?数字化营销要点有哪些?

在数字化席卷而来的时代,企业若想在激烈的市场竞争中脱颖而出,就得紧跟潮流,运用数字化营销手段更快、更准地触达目标客户,从而帮助企业更好地解读客户需求,捕捉痛点,实现精细化营销闭环。 数字化营销如何让…