Vicuna:斯坦福开源一个性能相当于90%ChatGPT的聊天机器人

news2024/12/26 11:27:07

自从Meta公司发布LLaMA以来,围绕它微调和开发的模型越来越多,这得益于它的性能和效果,2023年3月份发布的草泥马(Alpaca)是由Meta的LLaMA 7B微调而来的全新模型,仅用了52k数据,性能约等于GPT-3.5。斯坦福发布了一个由LLaMA 7B微调的模型Alpaca(羊驼),训练3小时,性能比肩GPT-3.5

最近,UC伯克利学者联手CMU、斯坦福等,再次推出一个全新模型——130亿参数的Vicuna,俗称「小羊驼」(骆马)。

代码:https://github.com/lm-sys/FastChat

在线体验地址:https://chat.lmsys.org/

Vicuna介绍

Vicuna目前已经发布了两个版本:Vicuna-13B和Vicuna-7B.

Vicuna-13B是一款开源聊天机器人,通过对从ShareGPT(目前已禁止爬取)收集的用户70K共享对话进行LLaMA微调来训练。使用GPT-4作为评判标准的初步评估显示,Vicuna-13B在OpenAI ChatGPT和Google Bard的质量方面达到了90%以上,而在90%以上的情况下优于LLaMA和Stanford Alpaca等其他模型。训练Vicuna-13B的费用约为300美元。

模型的整理架构如下图2所示:

首先,研究人员从ChatGPT对话分享网站ShareGPT上,收集了大约70K对话;

接下来,研究人员优化了Alpaca提供的训练脚本,使模型能够更好地处理多轮对话和长序列;

之后利用PyTorch FSDP在8个A100 GPU上进行了一天的训练;

Alpaca VS Vicuna

Vicuna的效果到底如何呢?下面使用一个测试案例进行对比,并且使用GPT-4进行评估。

问:写一篇关于最近去夏威夷旅行的有趣的旅游博客文章,强调文化体验和必看景点。

Alpaca的回答可以说是一个浓缩版,短短几行就写完了,没有按照要求完成任务。它仅是提到了自己写了一篇博客,并对博客内容做了一个概述。

然而Vicuna撰写了一篇详细且引人入胜的旅行博客文章,不仅内容有趣,还详细地介绍了夏威夷的文化体验和必看景点。

Vicuna模型训练

Vicuna是通过使用来自ShareGPT公共API收集的约70K用户分享对话数据微调创建的。为了确保数据质量,研究人员将HTML转换回markdown,并过滤掉一些不适当或质量较低的样本。另外,研究人员将较长的对话划分为较小的片段,以适应模型的最大上下文长度。

Vicuna的训练方法建立在斯坦福的Alpaca基础上,并进行了以下改进:

  • 内存优化:

为了使Vicuna能够理解长上下文,将最大上下文长度从Alpaca的512扩展到2048,这大大增加了GPU内存需求。在此,研究人员通过使用梯度检查点和闪存注意力来解决内存压力。

  • 多轮对话:

通过调整训练损失以考虑多轮对话,并仅在聊天机器人的输出上计算微调损失。

  • 通过Spot实例降低成本:

40倍的数据集和4倍的序列长度对训练带来了相当大的挑战。研究人员采用SkyPilot托管的Spot实例来降低成本,通过利用自动恢复抢占与自动区域切换进而减少成本。这种解决方案将7B模型的训练成本从500美元降低到约140美元,将13B模型的训练成本从约1000美元降低到300美元。

Vicuna模型评估

评估AI聊天机器人是一项具有挑战性的任务,因为它需要检查语言理解、推理和上下文意识。随着AI聊天机器人变得越来越先进,现有的开放基准可能不再足够。例如,斯坦福Alpaca中使用的评估数据集self-instruct,可以被SOTA聊天机器人有效地回答,这使得人类难以分辨性能差异。更多的限制包括训练/测试数据污染和创建新基准的潜在高成本。为了解决这些问题,研究人员提出了一个基于GPT-4的评估框架,从而实现对聊天机器人性能的自动评估。

首先,通过精心设计的提示,让GPT-4能够生成多样化且具有挑战性的问题。并利用8个不同类别共80道题,如角色扮演、编码/数学任务等,来测试这些模型(LLaMA、Alpaca、ChatGPT、Bard和Vicuna)在不同领域上表现出的性能。然后,研究人员要求GPT-4根据帮助程度、相关性、准确性和细节对答案的质量进行评分。结果显示,GPT-4不仅可以产生相对一致的分数,还可以提供详细的解释来说明为什么给出这样的分数。但是,GPT-4并不擅长评判编码/数学任务。

基于GPT-4的初步评估,如图1所示,表明Vicuna达到了Bard/ChatGPT的90%的能力。

图3显示了所有baselines 和Vicuna之间的比较结果。在90%以上的问题中,GPT-4更喜欢Vicuna,而不是最先进的开源模型(LLaMA、Alpaca),并且它实现了与专有模型(ChatGPT、Bard)相比具有竞争力的性能。在45%的问题中,GPT-4认为Vicuna的回答优于或等于ChatGPT的回答。由于GPT-4以10为尺度为每个回答分配定量分数,我们通过将每个模型在80个问题上获得的分数相加来计算每个(基线,Vicuna)比较对的总分。如表2所示,Vicuna的总分为ChatGPT的92%。尽管最近取得了进步,但这些聊天机器人仍然面临着局限性,例如难以解决基本的数学问题或编码能力有限。

服务部署

研究人员构建了一个服务系统,能够为具有分布式工作者的多个模型提供服务。它支持来自内部部署集群和云的GPU工作人员的灵活插件。通过利用SkyPilot中的容错控制器和托管点功能,该服务系统可以很好地与来自多个云的更便宜的点实例一起工作,以降低服务成本。参考论文:《AlpaServe: Statistical Multiplexing with Model Parallelism for Deep Learning Serving》

Vicuna模型局限性

研究人员指出,与其他大语言模型类似,Vicuna也存在着一定的局限性。比如,Vicuna在涉及编程、推理、数学以及事实准确性的任务上表现不佳。此外,它也没有经过充分优化以保证安全性或减轻潜在的毒性或偏见。为解决安全方面的问题,研究人员在demo中采用了OpenAI的审查API来过滤掉不适当的用户输入。

怎么使用Vicuna

安装

方法一:使用pip安装

# Install FastChatpip3 install fschat
# Install the latest main branch of huggingface/transformerspip3 install git+https://github.com/huggingface/transformers

方法二:从源码安装​​​​​​​

git clone https://github.com/lm-sys/FastChat.gitcd FastChat# mac使用如下安装命令,否则跳过此行代码brew install rust cmake# 安装包pip3 install --upgrade pip  # enable PEP 660 supportpip3 install -e .

获取模型权重

根据LLaMA模型的许可,权重将以delta的形式发布。只需将其加到原来的LLaMA权重上,就可以获得最终的Vicuna权重。

1. 按照huggingface上的说明,获得原始的LLaMA权重

2. 通过脚本,自动从团队的Hugging Face账户上下载delta权重​​​​​​​

# 大约 60 GB 的 CPU RAM 如果内存不足,可以创建一个大型交换文件,# 使操作系统能够自动将磁盘用作虚拟内存。python3 -m fastchat.model.apply_delta \    --base /path/to/llama-13b \    --target /output/path/to/vicuna-13b \    --delta lmsys/vicuna-13b-delta-v0​​​​​
# 大约 30 GB 的 CPU RAM 如果内存不足,可以创建一个大型交换文件,# 使操作系统能够自动将磁盘用作虚拟内存。python3 -m fastchat.model.apply_delta \    --base /path/to/llama-7b \    --target /output/path/to/vicuna-7b \    --delta lmsys/vicuna-7b-delta-v0

· 单个GPU

Vicuna-13B需要大约28GB的GPU显存。

python3 -m fastchat.serve.cli --model-name /path/to/vicuna/weights

· 多个GPU

如果没有足够的显存,则可以使用模型并行来聚合同一台机器上多个GPU的显存。

python3 -m fastchat.serve.cli --model-name /path/to/vicuna/weights --num-gpus 2

· 仅用CPU

如果想在CPU上运行,则需要大约60GB的内存。

python3 -m fastchat.serve.cli --model-name /path/to/vicuna/weights --device cpu

· Metal Backend (Mac Computers with Apple Silicon or AMD GPUs)

使用--device mps参数可以GPU加速(torch版本需要大于2.0),--load-8bit参数可以量化8bit

python3 -m fastchat.serve.cli --model-name /path/to/vicuna/weights --device mps --load-8bit

启动WEB UI

使用web UI提供服务,需要三个主要组件:1)与用户接口的web服务器;2)托管一个或多个模型的模型worker;3)协调web服务器和模型worker的控制器。操作步骤如下:

· 启动控制器

python3 -m fastchat.serve.controller

· 启动model worker

python3 -m fastchat.serve.model_worker --model-path /path/to/vicuna/weights

当进程完成模型的加载后,会看到「Uvicorn running on ...」。

· 发送测试消息

python3 -m fastchat.serve.test_message --model-name vicuna-13b

· 启动gradio网络服务器

python3 -m fastchat.serve.gradio_web_server

现在,就可以打开浏览器和模型聊天了。

模型微调

· 数据

Vicuna是通过使用从ShareGPT收集到的大约7万个用户共享的对话与公共API来微调一个LLaMA基础模型而创建的。

为了确保数据质量,团队将HTML转换回markdown,并过滤掉一些不合适或低质量的样本。此外,团队还将冗长的对话分成较小的片段,以符合模型的最大上下文长度。

· 代码和超参数

团队使用斯坦福大学Alpaca的代码对模型进行微调,并做了一些修改以支持梯度检查点和Flash注意力。此外,团队也使用与斯坦福Alpaca相似的超参数。

· 用SkyPilot在云服务上进行微调

SkyPilot是由加州大学伯克利分校建立的一个框架,可以在任何与一个云服务(AWS、GCP、Azure、Lambda等)上轻松、经济地运行ML工作负载。

安装说明:https://skypilot.readthedocs.io/en/latest/getting-started/installation.html​​​​​​​

# Install skypilot from the master branchpip install git+https://github.com/skypilot-org/skypilot.git

Vicuna可以在8个拥有80GB内存的A100 GPU上进行训练。下面的命令将自动启动一个满足要求的节点,在上面设置并运行训练作业。

sky launch -c vicuna -s scripts/train-vicuna.yaml --env WANDB_API_KEY

对于Alpaca来说,训练作业会在具有4个A100-80GB GPU的单一节点上启动。

sky launch -c alpaca -s scripts/train-alpaca.yaml --env WANDB_API_KEY

· 使用本地GPU进行微调

Vicuna也可以用以下代码在8个A100 GPU上训练,显存为80GB。

如果要在更少的GPU上训练,则可以减少per_device_train_batch_size,并相应地增加gradient_accumulation_steps,以保持全局批大小不变。要设置环境,可以参见scripts/train-vicuna.yaml中的设置部分。​​​​​​​

torchrun --nnodes=1 --nproc_per_node=8 --master_port=<your_random_port> \    fastchat/train/train_mem.py \    --model_name_or_path <path-to-llama-model-weight> \    --data_path <path-to-data> \    --bf16 True \    --output_dir ./checkpoints \    --num_train_epochs 3 \    --per_device_train_batch_size 4 \    --per_device_eval_batch_size 4 \    --gradient_accumulation_steps 1 \    --evaluation_strategy "no" \    --save_strategy "steps" \    --save_steps 1200 \    --save_total_limit 100 \    --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 \    --model_max_length 2048 \    --gradient_checkpointing True \    --lazy_preprocess True

模型评估

使用GPT-4进行评估,参考文档:https://github.com/lm-sys/FastChat/blob/main/fastchat/eval

评估步骤如下:

Step1:从不同的模型生成答案:对于ChatGPT或者特定的checkpoint运行qa_baseline_gpt35.py;对于Vicuna 或者其他模型,运行get_model_answer.py

Step2:使用GPT-4生成review结果;

Step3:生成可视化数据:运行generate_webpage_data_from_table.py生成数据的统计结果;

Step4:可视化数据:在webpage目录下运行命令python3 -m http.server启动静态服务;

评估数据格式是JSON格式,具体参考:

[1] https://github.com/lm-sys/FastChat/blob/main/fastchat/eval/table

[2] https://github.com/lm-sys/FastChat/blob/main/fastchat/eval

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

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

相关文章

欧奈尔杯柄形态选股公式,突破杯柄高点发出信号

杯柄形态是由美国著名的成长股投资大师威廉欧奈尔提出的&#xff0c;在其经典著作《笑傲股市》中有详细介绍。 根据欧奈尔在书中的描述&#xff1a; 从侧面观察其轮廓时&#xff0c;最重要的价格形态之一看起来就像是一个带柄的茶杯。杯状形态可以持续7~56周不等&#xff0c;但…

数据结构选择题(难题题解) 第五章 树

5.2 14. 法1&#xff1a;少一个叶子再多一个叶子&#xff0c;欠考虑了 选B 法2&#xff1a; 法三&#xff1a; 5.3 23.选D A. 如果是根 直接找孩子就能找到后继&#xff1b;如果是左孩子&#xff0c;有孩子就找孩子&#xff0c;无孩子&#xff0c;指针是空&#xff0c…

ROS2 msg和srv CMake编写注意事项

ROS2使用msg和srv可以参考官网&#xff1a; 工程文件cpp所包含的头文件&#xff0c;其中 cpp_pubsub_self/msg/test.hpp 为msg消息消息生成的头文件&#xff0c;具体的可以参考官网 注意事项&#xff1a; 在 ROS2 当中&#xff0c;使用 msg 和 srv 消息文件格式的时候&#…

单点登录三:添加RBAC权限校验模型功能理解及实现demo

1、RBAC权限模型 RBAC&#xff08;Role-Based Access Control&#xff09;是一种基于角色的访问控制模型&#xff0c;用于管理系统中用户的权限和访问控制。它将用户、角色和权限之间的关系进行了明确的定义&#xff0c;以实现灵活的权限管理和控制。 1.1、RBAC模型主要包括以…

这才是CSDN最系统的网络安全学习路线(建议收藏)

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

异步复位同步释放

(1条消息) 芯片设计全流程知识点总结_GGbao_的博客-CSDN博客 异步复位同步释放在always语句块里为&#xff1a; 当异步复位信号到来时&#xff0c;寄存器 reg_1 会被直接拉低&#xff0c;这是不会产生问题的&#xff0c;当rstn下降沿和clk上升沿同时到来时&#xff0c;如果rstn…

EduSoho 网校系统部署

目录 一、初始化环境二、安装 Nginx三、安装 MySQL四、安装 PHP五、上线 EduSoho六、验证FAQ 一、初始化环境 1、安装wget 如果系统已安装wget,请跳过此步骤 yum install wget2、关闭防火墙/Selinux systemctl stop firewalld.service systemctl disable firewalld.service…

Win32通用控件,加载进程(PE查看器)项目初步

在本专栏上一篇文章中带领大家学习了对话框的创建&#xff0c;并且在项目中创建出了对话框。在这一篇文章中&#xff0c;我将带领大家学习Win32通用控件&#xff0c;了解_WM_NOTIFY消息&#xff0c;并且带领大家初步写出课程中加载Windows所有进程的应用程序的雏形&#xff0c;…

因为懒,我用了“低代码”打下手

目录 一、前言 二、工具介绍 三、平台特点 四、如何使用JNPF&#xff1f; 五、低代码平台的选择参考 六、总结 一、前言 「一个优秀的开发者&#xff0c;一定是会利用各种工具来提升自己的开发效率。」 前段时间&#xff0c;体验了很多国内前沿的低代码平台&#xff0c;在…

Fiddler抓包工具之Fiddler界面主菜单功能介绍

Fiddler界面主菜单功能介绍 File菜单 File菜单中的命令主要支持完成通过Fiddler来启动和停止web流量的捕获&#xff08;capture&#xff09;,也可以加载或存储捕获的流量 &#xff08;1&#xff09;Capture Traffic&#xff1a;默认勾选&#xff0c;勾选此项才可抓包&#xff…

Linux ALSA音频工具

参考&#xff1a; ALSA 音频工具 amixer、aplay、arecord Linux Alsa ALSA的配置文件 音频录制——arecord 音频播放——aplay 音频配置——amixer alsamixer与amixer的区别 alsamixer是Linux音频框架ALSA工具之一&#xff0c;用于配置音频各个参数; alsamixer是基于文本图形…

APP中有html5页面的时候,怎么进行元素定位

测试app的时候&#xff0c;我们知道可以通过UI Automator Viewer进行元素定位 但是很多app中都会内嵌h5页面&#xff0c;这个时候定位就会变成下图这样&#xff1a; 第一步&#xff1a; 在手机中打开当前app的h5界面&#xff0c;使用usb连接电脑后&#xff0c; 第二步&#x…

聚焦金融行业网络安全|安全狗亮相知虎科技生态大会

5月18日&#xff0c;知虎科技生态大会在上海顺利举办。作为国内云原生安全领导厂商&#xff0c;安全狗也受邀出席此次活动。 据悉&#xff0c;此次大会邀请了来自国内顶级安全厂商的安全专家介绍从网络安全、应用安全、业务安全、数据安全、资金安全、通信安全等六个方面全方位…

抖音账号矩阵系统源码/技术开发搭建私有化部署开源

抖音SEO矩阵系统是基于抖音平台的搜索引擎优化技术的一种系统&#xff0c;其主要作用是通过一系列的技术手段&#xff0c;提高抖音视频的曝光和排名&#xff0c;使其获得更多的流量和粉丝。在本文中&#xff0c;我们将介绍抖音SEO矩阵系统的开发技术&#xff0c;包括系统设计、…

ElasticSearch集成SpringBoot实践及数据同步

一 前言 ES 全称 Elasticsearch 是一款分布式的全文搜索引擎&#xff0c;在互联网公司中&#xff0c;这款搜索引擎一直被程序员们所推崇。常见的使用场景如ELK日志分析&#xff0c;电商APP的商品推荐&#xff0c;社交APP的同城用户推荐等等。今天结合自己平时的一些学习对它与…

分布式事务解决方案Seata-1.6.0版本Docker安装

1. 简介 为什么要安装1.6.0 版本&#xff1f; 因为低版本Seata只支持单表的DDL语句&#xff0c;只有在在1.6.0版本及以上才支持 UPDATE JOIN。 注&#xff1a;1.6.0版本与 低版本的主要区别在于配置文件格式的修改&#xff0c;一站式解决方案&#xff1a;分布式事务解决方案Sea…

有哪些好用的App云测试平台?

一、国内外6种好用app云测平台推荐&#xff08;章节末附pk图&#xff09; 1、国内云测平台 1&#xff09;Testin云测 网址&#xff1a;https://www.testin.cn/ Testin云测平台是一款基于云端的移动应用测试平台&#xff0c;为移动应用开发者和测试人员提供一站式的移动应用质…

DNS风险分析及安全防护研究(一):DNS自身风险分析(中科三方)

作为互联网上的一项基础服务&#xff0c;DNS在网站运行中起到了至关重要的作用&#xff0c;然而其安全性在很长一段时间内都没有得到足够的重视。DNS采用不可靠的UDP协议&#xff0c;安全性具有较大的漏洞&#xff0c;攻击者很容易利用这些漏洞发动攻击&#xff0c;从而引起一些…

第三章 向量与线性方程组

引言 题型总结中推荐例题有蓝皮书的题型较为重要&#xff0c;只有吉米多维奇的题型次之。码字不易&#xff0c;如果这篇文章对您有帮助的话&#xff0c;希望您能点赞、评论、收藏&#xff0c;投币、转发、关注。您的鼓励就是我前进的动力&#xff01; 知识点思维导图 补充&…

CodeForces.1786A2.发牌.[中等][flg标识][数学规律][双色牌]

题目描述&#xff1a; 题目解读&#xff1a; 发牌问题&#xff0c;给两人发双色牌&#xff0c;同样还是 给a发1张&#xff0c;然后给b发2&#xff0c;3张&#xff1b; 给a发4&#xff0c;5张&#xff0c;给b发6&#xff0c;7张&#xff1b; 给a发8&#xff0c;9张&#xff…