LLM之Alpaca:深入了解大模型Alpaca

博客首发地址:LLM之Alpaca:深入了解大模型Alpaca - 知乎

  • 官方链接:https://crfm.stanford.edu/2023/03/13/alpaca.html
  • 官方Git:tatsu-lab/stanford_alpaca
  • 官方模型:https://huggingface.co/tatsu-lab/alpaca-7b-wdiff

什么是Alpace 7B?

 Alpaca是一个基于Meta的LLaMA 7B模型经过微调的指令遵循型语言模型。它由斯坦福大学的研究团队开发,旨在通过遵循和执行人类指令来完成各种复杂任务。这个模型的特别之处在于,尽管它只有7亿参数(比起一些其他模型来说相对较小),却能展现出与OpenAI的text-davinci-003模型相似的性能,这在当前AI研究中是一项显著成就。

 Alpaca模型的开发过程涉及到从LLaMA 7B模型开始,通过52K条指令遵循演示进行微调,这些演示是以OpenAI的text-davinci-003模型为样本生成的。这种方法不仅体现了基于已有成果上的进一步开发,也展示了在有限资源下进行有效AI训练的可能性。

 Alpaca的开发背景还包含了对现有指令遵循型模型的一种回应,如GPT-3.5、ChatGPT和Bing Chat等。这些模型虽然功能强大,但在生成虚假信息、社会刻板印象和有害语言方面仍存在缺陷。Alpaca模型的出现,提供了一个更容易获取、成本更低的研究平台,使得学术界可以更深入地研究这些问题,并寻找解决方案。

训练过程

 Alpaca模型的训练过程在人工智能领域具有重要意义,特别是考虑到其在有限预算下的实施。训练一个高质量的指令遵循模型主要面临两个挑战:一是需要一个强大的预训练语言模型,二是需要高质量的指令遵循数据。通过这个训练,Alpaca不仅展示了其在遵循和执行指令方面的强大能力,也证明了在有限的预算下创建有效的AI模型是可能的。

Alpace模型训练流程图

强大的预训练语言模型

 Alpaca的基础是Meta发布的新型LLaMA模型,这是一系列强大的语言模型。特别地,Alpaca是基于LLaMA 7B模型开发的,7B代表该模型拥有大约70亿个参数。尽管这比起某些更大的模型来说规模较小,但LLaMA 7B仍然是一个功能强大的模型,特别适合于学术研究和小规模实验。

高质量的指令遵循数据

指令数据的分布图

 为了训练Alpaca,研究团队面临的第二个挑战是获取高质量的指令遵循数据。他们采用了一个创新的方法,即使用OpenAI的text-davinci-003模型自动生成这些数据。具体来说,他们从self-instruct的175个人类编写的指令-输出对开始,然后使用OpenAI的text-davinci-003模型来生成更多的指令,以这些为上下文示例。通过这种方式,团队生成了52K个独特的指令和相应的输出,整个过程的成本不到500美元。指令数据的分布我们可以在上图中看到。 文件 alpaca_data.json 包含了用于微调Alpaca模型的52,000条指令遵循数据。这个JSON文件是一个字典列表,每个字典包含以下字段:

  • 指令(instruction): 字符串类型,描述模型需要执行的任务。这52,000条指令每一条都是独一无二的。
  • 输入(input): 字符串类型,为任务提供可选的上下文或输入信息。例如,当指令是“总结以下文章”时,输入内容就是那篇文章。大约40%的示例中包含输入信息。
  • 输出(output): 字符串类型,为text-davinci-003生成的对应指令的回答。

在微调Alpaca模型时使用了以下提示:

下方是一个描述任务的指令,与之配对的是进一步提供上下文的输入。请为下面的请求编写个合适的回答。### 指令:
{instruction}### 输入:
{input}### 回答:
对于输入字段为空的示例:

对于有非空输入字段的示例:

下方是一个描述任务的指令。请为下面的请求编写个合适的回答。### 指令:
{instruction}### 回答:
在推理过程中(例如用于网络演示),我们使用带有空输入字段的用户指令(第二种选项)。

微调和优化

 得到了高质量的指令遵循数据后,接下来的步骤是微调LLaMA 7B模型。研究团队使用了Hugging Face的训练框架,利用了全分片数据并行(Fully Sharded Data Parallel)和混合精度训练等技术,他们首次尝试微调一个7B的LLaMA模型,在8个80GB的A100 GPU上仅用了3小时,这在大多数云计算提供商处的成本不到100美元。需要注意的是,这里的训练效率还有提升空间,比如使用PEFT库,使用lora相关技术等,可以进一步降低成本。

训练参数

HyperparameterLLaMA-7BLLaMA-13B
Batch size128128
Learning rate2e-51e-5
Epochs35
Max length512512
Weight decay00

配置环境

git clone https://github.com/tatsu-lab/stanford_alpaca.git
cd stanford_alpaca
pip install -r requirements.txt

启动训练

torchrun --nproc_per_node=4 --master_port=<your_random_port> train.py \--model_name_or_path <your_path_to_hf_converted_llama_ckpt_and_tokenizer> \--data_path ./alpaca_data.json \--bf16 True \--output_dir <your_output_dir> \--num_train_epochs 3 \--per_device_train_batch_size 4 \--per_device_eval_batch_size 4 \--gradient_accumulation_steps 8 \--evaluation_strategy "no" \--save_strategy "steps" \--save_steps 2000 \--save_total_limit 1 \--learning_rate 2e-5 \--weight_decay 0. \--warmup_ratio 0.03 \--lr_scheduler_type "cosine" \--logging_steps 1 \--fsdp "full_shard auto_wrap" \--fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \--tf32 True

deepspeed训练

pip install deepspeed
torchrun --nproc_per_node=4 --master_port=<your_random_port> train.py \--model_name_or_path <your_path_to_hf_converted_llama_ckpt_and_tokenizer> \--data_path ./alpaca_data.json \--bf16 True \--output_dir <your_output_dir> \--num_train_epochs 3 \--per_device_train_batch_size 4 \--per_device_eval_batch_size 4 \--gradient_accumulation_steps 8 \--evaluation_strategy "no" \--save_strategy "steps" \--save_steps 2000 \--save_total_limit 1 \--learning_rate 2e-5 \--weight_decay 0. \--warmup_ratio 0.03 \--deepspeed "./configs/default_offload_opt_param.json" \--tf32 True

加载训练模型

import transformers
alpaca_model = transformers.AutoModelForCausalLM.from_pretrained("<path_to_store_recovered_weights>")
alpaca_tokenizer = transformers.AutoTokenizer.from_pretrained("<path_to_store_recovered_weights>")

模型评估

 在Alpaca模型的初步评估中,研究团队采用了几种方法来测试和对比其性能。这一部分对于验证Alpaca的有效性和确定其在实际应用中的潜力至关重要。

Alpaca交互示例01,Alpaca的答案通常比ChatGPT短,这是因为text-davinci-003的输出更短。

Alpaca交互示例02,Alpaca的答案通常比ChatGPT短,这是因为text-davinci-003的输出更短。

人类评估

 Alpaca模型的性能首先通过人类评估来衡量。斯坦福大学的研究团队——主要由五名学生组成——对Alpaca进行了详细的测试。他们使用了self-instruct评估集中的输入,这些输入覆盖了广泛的用户导向指令,包括编写电子邮件、社交媒体操作和生产力工具使用等。

盲目对比测试

 评估方法中最引人注目的是盲目对比测试。在这个测试中,研究团队将Alpaca 7B的输出与OpenAI的text-davinci-003模型的输出进行了比较。结果显示,Alpaca在90次比较中赢得了89次,这意味着Alpaca的性能与text-davinci-003非常接近。鉴于Alpaca模型相对较小的规模和训练数据的量,这个结果颇为令人惊讶。

互动测试

 除了静态评估,研究团队还在互动环境中测试了Alpaca模型。在多样化的输入集上,Alpaca通常表现出与text-davinci-003类似的行为。这种互动测试不仅可以揭示模型的预期能力,还可以暴露其潜在的失败模式。

限制与挑战

 尽管Alpaca在初步评估中表现出色,研究团队也承认评估的规模和多样性可能有限。因此,他们发布了Alpaca的互动演示,并鼓励广大读者自己评估Alpaca并提供反馈。这种开放的评估方式能够帮助团队收集更广泛的数据,从而更全面地理解Alpaca的性能和局限性。

 经过评估表明,Alpaca模型不仅在理论上有效,而且在实际应用中展示了强大的性能和可靠性。通过这些评估,Alpaca证明了自己不仅是一个有趣的学术项目,也是一个有潜力在多种实际场景中发挥作用的工具。这为后续更深入的研究和开发铺平了道路,为理解和优化基于指令的语言模型提供了宝贵的见解。

限制

 虽然Alpaca在初步评估中展现了令人印象深刻的能力,但它也不可避免地呈现出了一些与当前语言模型共有的限制。这些局限性是理解和进一步发展Alpaca模型的重要部分。

虚假信息的生成(Hallucination)

Alpaca在某次回答中错误地声称坦桑尼亚的首都是达累斯萨拉姆,而实际上自1974年起首都已经更改为多多马。

Alpaca在生成信息时可能产生虚假内容,这被称为“hallucination”(幻觉)。这种误信息的产生可能源于训练数据的限制或模型自身的理解局限。

有害内容和社会刻板印象

 像许多其他语言模型一样,Alpaca也存在产生有害内容和加强社会刻板印象的风险。这可能包括对特定群体的偏见表达或传播有问题的观点。这类问题通常是因为模型训练数据中存在的偏差所导致的,需要通过更精细的训练和过滤机制来解决。

性能的不一致

 尽管Alpaca在多数情况下与text-davinci-003表现相似,但也存在一些性能不一致的情况。这可能是因为它所使用的训练数据和规模较小的模型结构,限制了其处理更复杂或多样化查询的能力。

潜在的误用风险

Alpaca散播错误信息

 由于Alpaca可以生成流畅和有说服力的文本,存在被误用来散播错误信息或用于其他不良目的的风险。尽管有一些缓解措施,如内容过滤器,但这些措施可能不足以完全防止滥用。

发布的责任和限制

 Alpaca团队对于发布这一模型表现出了责任感,他们强调该模型仅用于学术研究,任何商业用途都被禁止。这主要是因为模型基于LLaMA,后者具有非商业性质的许可,以及考虑到模型尚未设计足够的安全措施。

发布的资源

 Alpaca项目的研究团队公开发布了多种资源,以促进学术研究和开放科学的进展。以下是目前已经发布的关键资源:

  1. 数据集: 公开了用于微调Alpaca模型的52,000条指令遵循演示数据,这些数据是从text-davinci-003模型中生成的。
  2. 数据生成过程: 提供了生成上述数据集的代码,让其他研究者可以重现或修改这一过程。
  3. 训练代码: 分享了使用Hugging Face API进行Alpaca模型微调的代码,便于其他研究者进行相似的训练实验。

发布的动机

 发布Alpaca及其相关资源的主要动机是推动学术界对指令遵循型语言模型的研究,特别是在如何解决这些模型存在的缺陷方面。这一开放式发布有多重考量:

  1. 促进科学研究: 通过分享训练配方、数据、模型权重和代码,研究团队旨在提供一个标准化、可复现的科学研究基础。
  2. 增强模型安全性和透明性: 公开Alpaca的工作方式和限制可以帮助科学界更好地理解这类模型的潜力和风险,从而开发出更有效的安全和伦理标准。
  3. 应对现有挑战: 面对生成虚假信息、传播社会刻板印象等问题,公开Alpaca为学术界提供了一个研究和改进的工具。
  4. 防范潜在风险: 虽然任何发布都存在风险,但团队相信,通过提高社区对这些模型潜能的认识,可以激励更快的防御性行动和更深入的安全研究。

结束语

 这个博客是大语言模型教程系列的第二篇,之后会把大语言模型相关的知识点做更多的整理,在本次大语言模型的探索之旅的尾声,感谢每位朋友的陪伴,如果对您有点帮助,就顺手点个赞呗。您的点赞、关注是我持续分享的动力。我是APlayBoy,期待与您一起在AI的世界里不断成长!

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

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

相关文章

React高阶组件详解

文章目录 高阶组件是什么&#xff1f;认识高阶组件编写高阶组件高阶组件实践推荐文章 高阶组件是什么&#xff1f; 高阶组件&#xff08;HOC&#xff09;是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分&#xff0c;它是一种基于 React 的组合特性…

Android Studio 打包 Maker MV apk 详细步骤

一.使用RPG Make MV 部署项目&#xff0c;获取项目文件夹 这步基本都不会有问题&#xff1a; 二.安装Android Studio 安装过程参考教材就行了&#xff1a; https://blog.csdn.net/m0_62491877/article/details/126832118 但是有的版本面板没有Android的选项&#xff08;勾…

python --阿里云(智能媒体管理/视频点播)

智能媒体服务获取token # alibabacloud_imm202009304.1.0 class Sample(object):智能媒体服务def __init__(self):self.access_key 111self.key_secret 222def weboffice_permission(self):return imm_20200930_models.WebofficePermission(renameFalse,readonlyTrue,histor…

在Linux/Ubuntu/Debian上创建指向文件夹或文件的快捷方式

使用带有“-s”选项的“ln”命令&#xff1a; ln -s 命令创建一个符号链接。 这是完整的语法&#xff1a; ln -s <target> <link_name><target>&#xff1a;这是你要链接到的文件或目录的路径。<link_name>&#xff1a;这是你要创建的符号链接的名称…

关于安卓文件夹压缩和解压(一)zip处理

背景 把文件压里头 把文件夹压里头 相关参考 我之前的一个文章&#xff0c;文件递归复制思路link 思路 如果把单单一个文件压缩&#xff0c;那么恭喜你&#xff0c;不用看这个文章了&#xff0c;因为百度一搜就有不错的答案。 本文主要介绍&#xff0c;如果把整个文件夹压…

描述CSS选择器及其优先级规则

一․描述一下CSS选择器及其优先级规则 CSS选择器是用于指定CSS样式应应用于哪些HTML元素的模式。通过选择器&#xff0c;我们可以定位到特定的元素或元素组&#xff0c;并为它们应用样式。CSS选择器有多种类型&#xff0c;每种类型都有其特定的用途和语法。 以下是几种常见的…

Python数据分析与可视化笔记一 机器学习概述

机器学习是一种从数据当中发现复杂规律&#xff0c;并且利用规律对未来时刻、未知状况进行预测和判定的方法&#xff0c;是当下被认为最有可能实现人工智能的方法之一。 所有数据的集合称为数据集(dataset)&#xff0c;其中每条记录是关于一个事件或对象的描述&#xff0c;称为…

龙芯新世界系统(安同AOCS OS)安装Cinnamon桌面最新版6.0.4

龙芯的新世界系统安同AOCS OS是十分优秀的操作系统&#xff0c;处于纯社区方式运行&#xff0c;她的各组件更新得很及时&#xff0c;很多组件都处于最新的状态&#xff0c;给我们安装使用最新的开源软件提供了很好的基础。由于本人一直使用Cinnamon桌面环境&#xff0c;各方面都…

LM2903BIDR比较器芯片中文资料规格书PDF数据手册参数引脚图功能封装尺寸图

产品概述&#xff1a; M393B 和 LM2903B 器件是业界通用 LM393 和 LM2903 比较器系列的下一代版本。下一代 B 版本比较器具有更低的失调电压、更高的电源电压能力、更低的电源电流、更低的输入偏置电流和更低的传播延迟&#xff0c;并通过专用 ESD 钳位提高了 2kV ESD 性能和输…

【CenterFusion】模型的创建、导入、保存CenterFusion/src/lib/model/model.py

文件内容&#xff1a;CenterFusion/src/lib/model/model.py 文件作用&#xff1a;模型的创建、导入、保存 model.py 具体内容如下&#xff1a; from __future__ import absolute_import from __future__ import division from __future__ import print_functionimport torchv…

【教学类-44-07】20240318 0-9数字描字帖 A4横版整页(宋体、黑体、文鼎虚线体、print dashed 德彪行书行楷)

背景需求: 前文制作了三种字体的A4横版数字描字帖 【教学类-44-06】20240318 0-9数字描字帖 A4横版整页&#xff08;宋体、黑体、文鼎虚线体&#xff09;-CSDN博客【教学类-44-06】20240318 0-9数字描字帖 A4横版整页&#xff08;宋体、黑体、文鼎虚线体&#xff09;https://…

将VSCode添加至右键的菜单栏

懒得bb&#xff0c;直接转发别人的博客&#xff0c;链接 但是我在win11上面弄了之后&#xff0c;除了文件夹其他格式都生效了&#xff0c;只需要在这个路径HKEY_CLASSES_ROOT\Directory\shell重复上面的操作&#xff0c;看Directory就知道是文件夹

担忧关于ChatGPT潜在风险的声音正在增强,但暂停人工智能是否明智?

深度学习算法的风险与挑战&#xff1a;ChatGPT的潜在风险引发关注 引言 随着人工智能技术的快速发展&#xff0c;特别是像ChatGPT这样的大型语言模型的广泛应用&#xff0c;人们对其潜在风险的关注也在不断升温。本文将探讨这些风险&#xff0c;并分析是否应该暂停AI的发展。…

事务、并发、锁机制的实现

配置全局事务 DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: mydb,USER:root,PASSWORD:pass,HOST:127.0.0.1,PORT:3306,ATOMIC_REQUESTS: True, # 全局开启事务&#xff0c;绑定的是http请求响应整个过程# (non_atomic_requests可局部实现不让事务控制)} } …

stable diffusion webui 搭建和初步使用

官方repo: GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI 关于stable-diffusion的介绍&#xff1a;Stable Diffusion&#xff5c;图解稳定扩散原理 - 知乎 一、环境搭建和启动 准备在容器里面搞一下 以 ubuntu22.04 为基础镜像&#xff0c;新建…

UnityShader(十六)凹凸映射

前言&#xff1a; 纹理的一种常见应用就是凹凸映射&#xff08;bump mapping&#xff09;。凹凸映射目的就是用一张纹理图来修改模型表面的法线&#xff0c;让模型看起来更加细节&#xff0c;这种方法不会改变模型原本的顶点位置&#xff08;也就是不会修改模型的形状&#xf…

数据结构之顺序存储-顺序表的基本操作c/c++(创建、初始化、赋值、插入、删除、查询、替换、输出)

学习参考博文&#xff1a;http://t.csdnimg.cn/Qi8DD 学习总结&#xff0c;同时更正原博主在顺序表中插入元素的错误。 数据结构顺序表——基本代码实现&#xff08;使用工具&#xff1a;VS2022&#xff09;&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include <stdi…

uniapp canvas文字和元素居中

文字居中&#xff1a;ctx.textAlign "center"; 元素居中&#xff1a;ctx.arc(screenWidth / 2, 122, 40, 0, 2 * Math.PI); ctx.arc()的x轴为当前屏幕的宽度/2&#xff1b; let screenWidth 540; let screenHeight 960; // 头像 if (photoimg) {ctx.setFillSty…

gitlab cicd问题整理

1、docker设置数据目录&#xff1a; 原数据目录磁盘空间不足&#xff0c;需要更换目录&#xff1a; /etc/docker/daemon.json //写入/etc/docker/daemon.json {"data-root": "/data/docker" } 2、Dockerfile中ADD指令不生效 因为要ADD的文件被.docker…

指南:在各主流操作系统上安装与配置Apache Tomcat

指南&#xff1a;在各主流操作系统上安装与配置Apache Tomcat Apache Tomcat作为一款广受欢迎的开源Java Servlet容器&#xff0c;为用户提供了一个纯Java环境下的Web服务器和Servlet容器。本文将详细介绍如何在不同的操作系统上安装Apache Tomcat&#xff0c;并进行基本的配置…