llama-recipes

文章目录

    • 一、关于 llama-recipes
    • 二、入门
      • 1、先决条件
        • PyTorch Nightlies
      • 2、安装
        • 1、使用pip安装
        • 2、使用可选依赖项安装
        • 3、从源代码安装
      • 3、得到 Meta Llama 模型
        • 模型转换为 Hugging Face
    • 三、存储库组织
      • 1、`recipes/`
      • 2、`src/`
    • 贡献


一、关于 llama-recipes

  • github : https://github.com/meta-llama/llama-recipes

使用可组合的FSDP和PEFT方法 微调Meta Llama3,以覆盖单/多节点GPU的脚本。
支持用于摘要和问答等应用程序的默认和自定义数据集。
支持许多直接的推理解决方案,例如用于本地或云部署的 HF TGI、VLLM。
展示WhatsApp 和 Messenger 的 Meta Llama3的演示应用程序。


“llama-recipes”存储库是Meta Llama 3模型的伴侣。
该存储库的目标是 提供一个可扩展的库,用于微调Meta Llama模型,以及一些示例脚本和笔记本,以便在各种用例中 快速开始使用模型,包括 域适应微调 以及使用Meta Llama和LLM生态系统中的其他工具 构建基于LLM的应用程序。
此处的示例展示了如何在本地、云端和本地运行Meta Llama。
Meta Llama 2也支持此存储库。我们强烈建议大家使用Meta Llama 3,因为它增强了功能。


Meta Llama 3有一个新的提示模板和特殊token (基于TikTokenizer)。

token描述
`<begin_of_text
`<end_of_text
`<eot_id
`<start_header_id

Meta Llama 3的多伦对话遵循以下提示模板:

<|begin_of_text|><|start_header_id|>system<|end_header_id|>{{ system_prompt }}<|eot_id|><|start_header_id|>user<|end_header_id|>{{ user_message_1 }}<|eot_id|><|start_header_id|>assistant<|end_header_id|>{{ model_answer_1 }}<|eot_id|><|start_header_id|>user<|end_header_id|>{{ user_message_2 }}<|eot_id|><|start_header_id|>assistant<|end_header_id|>

在启动新标头之前,每条消息都会被一个<|eot_id|>标记跟踪,发出角色更改的信号。

有关新标记器和提示模板的更多详细信息,请参见此处。

注意:最近重新构造了llama recipes库,以促进开发人员更好地使用示例。一些文件已移动到新位置。
src/文件夹未被修改,因此此repo和包的功能不受影响。

通过运行 git pull origin main 确保您更新您的本地克隆


二、入门

这些说明将为您提供项目的副本,并在本地计算机上运行,以用于开发和测试目的。
有关如何在实时系统上部署项目的说明,请参阅部署。


1、先决条件


PyTorch Nightlies

如果您想使用PyTorch Nightlies 而不是稳定版,请转到本指南以检索平台上pip install命令的正确--extra-index-url URL参数。


2、安装

Llama-recipes提供了一个pip发行版,便于在其他项目中安装和使用。
或者,它可以从源代码安装。

注:确保在安装PyTorch轮子时使用正确的CUDA版本(来自nvidia-smi)。
这里我们使用11.8作为cu118。 H100 GPU 在 CUDA>12.0时工作得更好


1、使用pip安装
pip install llama-recipes

2、使用可选依赖项安装

Llama-recipes提供可选包的安装。
有三个可选的依赖组。
要运行单元测试,我们可以使用以下方式安装所需的依赖项:

pip install llama-recipes[tests]

对于vLLM示例,我们需要可以安装的附加要求:

pip install llama-recipes[vllm]

要使用敏感主题安全检查器安装:

pip install llama-recipes[auditnlg]

可选依赖项也可以与[option1, option2]结合使用。


3、从源代码安装

要从源代码安装,例如开发使用这些命令。
我们使用hatchling作为我们的构建后端,它需要最新的pip以及setuptools包。

git clone git@github.com:meta-llama/llama-recipes.git
cd llama-recipes
pip install -U pip setuptools
pip install -e .

为了开发和贡献骆驼recipes,请安装所有可选依赖项:

git clone git@github.com:meta-llama/llama-recipes.git
cd llama-recipes
pip install -U pip setuptools
pip install -e .[tests,auditnlg,vllm]

3、得到 Meta Llama 模型

你可以在 Hugging Face 中心这里找到 Meta Llama 模型,其中名称中带有hf的模型已经转换为 Hugging Face checkpoint ,因此不需要进一步转换。
下面的转换步骤仅适用于托管在 Hugging Face 模型中心上的元模型权重。


模型转换为 Hugging Face

此文件夹中的 recipes 和笔记本使用了 Hugging Face 的变形金刚库提供的 Meta Llama 模型定义。

鉴于原始 checkpoint 位于模型/7B,您可以安装所有要求并将 checkpoint 转换为:

## Install Hugging Face Transformers from source
pip freeze | grep transformers ## verify it is version 4.31.0 or highergit clone git@github.com:huggingface/transformers.git
cd transformers
pip install protobuf
python src/transformers/models/llama/convert_llama_weights_to_hf.py \--input_dir /path/to/downloaded/llama/weights --model_size 7B --output_dir /output/path

三、存储库组织

处理Llama用法的大部分代码被组织在两个主文件夹中:recipes/src/


1、recipes/

包含的示例按主题组织在文件夹中:

子文件夹说明
快速入门使用Llama的“Hello World”,如果您不熟悉使用Llama,请从此处开始。
use_cases显示Meta Llama3常见应用程序的脚本
3p_integrations合作伙伴拥有的文件夹显示Meta Llama3的常见应用程序
responsible_ai使用PurpleLlama保护模型输出的脚本

2、src/

包含支持示例recipes的模块:

子文件夹描述
配置包含PEFT方法、FSDP、数据集、权重和偏差实验跟踪的配置文件。
数据集包含要下载和处理的每个数据集的单独脚本。注意
推理包括用于微调模型的推理模块。
model_checkpointing包含FSDP checkpoint 处理程序。
策略包含FSDP脚本以提供不同的策略,例如混合精度、变压器包装策略和激活 checkpoint 以及任何精度优化器(用于以纯bf16模式运行FSDP)。
实用程序实用程序文件: -train_utils.py提供训练/eval循环和更多训练实用程序。
-dataset_utils.py以获取预处理的数据集。
-config_utils.py覆盖从CLI接收的配置。
-fsdp_utils.py为PEFT方法提供FSDP包装策略。
-memory_utils.py上下文管理器以跟踪训练循环中的不同内存统计信息。

贡献

请阅读CONTRIBUTING.md,了解我们的行为准则以及向我们提交拉取请求的流程。


伊织 + NMT
2024-07-13(六)

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

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

相关文章

享元模式(大话设计模式)C/C++版本

享元模式 C #include <iostream> #include <string> #include <map> using namespace std;// 用户类 用户网站的客户账号&#xff0c;是"网站"类的外部状态 class User { private:string m_name;public:User(string name){m_name name;}std::st…

鸿蒙HarmonyOS应用开发为何选择ArkTS不是Java?

前言 随着智能设备的快速发展&#xff0c;操作系统的需求也变得越来越多样化。为了满足不同设备的需求&#xff0c;华为推出了鸿蒙HarmonyOS。 与传统的操作系统不同&#xff0c;HarmonyOS采用了一种新的开发语言——ArkTS。 但是&#xff0c;刚推出鸿蒙系统的时候&#xff0…

linux文件处理----把一个文件拼接到另一个文件后

cat file1 file2 >> combined_filefile1 file2会依次加到指定的文件后面 查看文件里有多少行&#xff1a;wc -l filename 搜索某个文件里面是否包含字符串&#xff1a; grep "search-content" filename

代码随想录第六十五天|KMC47 参加科学大会

题1&#xff1a; 指路&#xff1a;47. 参加科学大会&#xff08;第六期模拟笔试&#xff09; (kamacoder.com) 思路与代码&#xff1a; 普通版&#xff1a; #include<iostream> #include<vector> #include<climits> using namespace std;int main() {int…

操作系统入门 -- 设备管理

操作系统入门 – 设备管理 1.设备控制器 1.1 意义 电脑本身可以外接多个输入输出设备&#xff0c;如键盘、鼠标、显示器等。由于这些设备的功能和特性不同&#xff0c;但是又需要由操作系统同一管理。为了屏蔽每个设备之间的差异&#xff0c;引入了设备控制器。设备控制器是…

JavaScript进阶(四)---js解构

目录 一.定义&#xff1a; 二.类型&#xff1a; 1.数组解构&#xff1a; 1.1变量和值不匹配的情况 1.2多维数组 2.对象解构 3.对象数组解构 4.函数参数解构 5.扩展运算符 一.定义&#xff1a; JavaScript 中的解构&#xff08;Destructuring&#xff09;是一种语法糖&…

Spring Web MVC入门(2)(请求1)

目录 请求 1.传递单个参数 2.传递多个参数 3.传递对象 4.后端参数重命名(后端参数映射) 非必传参数设置 5.传递数组 请求 访问不同的路径就是发送不同的请求.在发送请求时,可能会带一些参数,所以学习Spring的请求,主要是学习如何传递参数到后端及后端如何接收. 1.传递单…

Java时间复杂度介绍以及枚举

时间复杂度 从小到大&#xff1a; O(1) 常数阶。复杂度为O(1)与问题规模无关 线性阶 O&#xff08;n&#xff09;比如一个for循环中代码执行n遍 n阶 对数阶 int n9; int i1; while(i<n) { i*2; } 2^x>n时候退出。次数xlog2^n 时间复杂度为O(logN) 根号阶 int…

OpenGL笔记十之Shader类的封装

OpenGL笔记十之Shader类的封装 —— 2024-07-10 晚上 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记十之Shader类的封装1.运行2.目录结构3.main.cpp4.application4.1.CMakeLists.txt4.2.Application.h4.3.Application.cpp 5.assets5.1.shaders&#xf…

Hive及其架构简介

什么是 Hive &#xff1f; 一个基于 Hadoop 的数据仓库&#xff0c;适用于一些高延迟性的应用&#xff08;离线开发&#xff09;&#xff0c;可以将存储在 Hadoop 文件中的结构化、半结构化数据文件映射为一张数据库表&#xff0c;并基于表提供类似 SQL 的查询模型&#xff0c…

可移植性和跨平台性,你能分得清吗?

可移植性和跨平台性&#xff0c;你能分得清吗&#xff1f; 当你听到这两个名词&#xff0c;你能清楚的区分他们吗&#xff1f; 可移植性 > 环境 跨平台性 > 平台 首先先弄懂环境和平台的区别&#xff0c;环境是平台&#xff1f;平台就是环境&#xff1f; 平台&#x…

前一段时间比较火的刷网课平台源码,带数据库和教程

前一段时间比较火的刷网课平台源码&#xff0c;带数据库和教程。 好在疫情已经结束了&#xff0c;希望今后世上再无网课。 这个代码免费提供给大家学习开发用吧&#xff0c;作为一个php的入门学习案例用用还可以。 使用办法 网站根目录解压 打开nginx.htaccess文件&#x…

3.4、matlab实现SGM/BM/SAD立体匹配算法计算视差图

1、matlab实现SGM/BM/SAD立体匹配算法计算视差图简介 SGM&#xff08;Semi-Global Matching&#xff09;、BM&#xff08;Block Matching&#xff09;和SAD&#xff08;Sum of Absolute Differences&#xff09;都是用于计算立体匹配&#xff08;Stereo Matching&#xff09;的…

Contact Form联系表单自动发送邮件(超级简单)

前几天发现了aoksend推出的这个联系表单的组件&#xff0c;非常好用&#xff0c;只有一个php文件&#xff0c;把php文件放到网站主目录里面。然后去aoksend注册和配置好域名和发信邮箱&#xff0c;可以得到发送密钥&#xff1a;app_key&#xff0c;然后配置好邮件模板&#xff…

go 密码hash加密包 bcrypt

1.明文密码一般都会通过一套算法转成一条长长的字符串&#xff0c;密码验证这需要通过验证明文和加密字符串是否对应 2.go 有现成的hash算法包 "golang.org/x/crypto/bcrypt" 一般我们有一个工具包utils &#xff0c;在工具里封装两个方法即可&#xff0c; 即 明文…

数据库内核研发学习之路(二)postgres编译安装

我们在前面安装配置好环境之后&#xff0c;接下来就是去安装编译postgres&#xff0c;不是以前我们常用的一键化安装&#xff0c;而是根据源码进行编译安装。 1、获取postgres的15.2版本的源码 我这里获取的是15.2版本的源码&#xff0c;当然大家也可以获取其他版本的源码&am…

百度安全大模型智能体实践入选信通院“安全守卫者计划”优秀案例

7月3日&#xff0c;由全球数字经济大会组委会主办&#xff0c;中国信息通信研究院&#xff08;以下简称中国信通院&#xff09;与中国通信标准化协会联合承办的2024全球数字经济大会“云和软件安全论坛暨第二届SecGo云和软件安全大会”在北京召开。本届论坛聚焦云和软件安全最新…

Java学习笔记整理: 关于SpringBoot 2024/7/12;

SpringBoot springboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。 特点specialty&#xff1a; springboot的特点: 1&#xff09; 自动配置 Spring Boot的自动配置是一个运行时&#xff08;更准确地说&#xff0c;是应用程序启动时&#xff09;的过程&a…

Java中常用的util类库在Maven

Java中常用的util类库在Maven项目中通常以依赖的形式引入。以下是一些常用的util库及其Maven依赖。 Apache Commons Lang 3: 提供了很多工具类&#xff0c;如StringUtils, ArrayUtils等。 <dependency><groupId>org.apache.commons</groupId><artifactI…

new Date() 是 JavaScript 中用来创建日期和时间对象的构造函数。它能够生成当前日期和时间,或者根据提供的参数生成特定的日期和时间对象

new Date() 是 JavaScript 中用来创建日期和时间对象的构造函数。它能够生成当前日期和时间&#xff0c;或者根据提供的参数生成特定的日期和时间对象。以下是关于 new Date() 的详细说明&#xff0c;包括如何使用不同参数来创建日期对象以及如何操作日期对象。 创建 Date 对象…