Lion:闭源大语言模型的对抗性蒸馏

通过调整 70k 指令跟踪数据,Lion (7B) 可以实现 ChatGPT 95% 的能力!

消息

我们目前正在致力于训练更大尺寸的版本(如果可行的话,13B、33B 和 65B)。感谢您的耐心等待。

  • **[2023年6月10日]**我们发布了微调过程中解决OOM的说明,请在训练过程中查看。
  • **[2023年5月26日]**我们发布了模型权重。看看7B型号!
  • **[2023年5月25日]**我们发布了在线演示,在这里尝试我们的模型!
  • **[2023年5月23日]**我们发布了训练和推理的代码。

内容

文章目录

        • 通过调整 70k 指令跟踪数据,Lion (7B) 可以实现 ChatGPT 95% 的能力!
    • 消息
    • 内容
    • 概述
    • 在线演示
    • 恢复Lion权重
    • 推理
    • 培训流程
      • 1、模仿阶段
        • 1.1 获取老师对Train Pool的回复
        • 1.2 根据教师对训练池的反应对学生进行指令调整
      • 2. 歧视阶段
        • 2.1 获取老师对Cache Pool的响应
        • 2.2 获取学生对缓存池的回答
        • 2.3 要求裁判根据老师和学生的回答质量输出两个分数
        • 2.4 区分硬指令和简单指令
      • 3. 生成阶段
        • 3.1 生成新的硬指令
        • 3.2 生成新的简单指令
    • 评估
      • 使用 GPT-4 自动评估
      • 具有对齐标准的人类评估
    • 引文
    • 免责声明

概述

img

我们的对抗性蒸馏框架的高级概述,其中我们基于高级闭源 LLM 制作了一个紧凑的学生 LLM,该 LLM 服务于三个角色:教师**、裁判员生成器**。从左到右,迭代分为三个阶段:

  1. 模仿阶段*,*使学生的反应与教师的反应保持一致;
  2. 识别硬样本的辨别阶段;
  3. 生成阶段,用于生成新的硬样本*,*以升级向学生模型提出的挑战。

在线演示

我们将提供最新型号供您尽可能长时间地试用。您可以向 Lion 提出一些问题,我们很高兴听到您的反馈!

演示链接(72小时后过期,因此我们会定期更新链接)

img

由于训练数据是英文指令示例,因此您最好用英文提问。然而,我们发现Lion在一定程度上也能理解其他语言的指令。请看下面的案例:

img

恢复Lion权重

我们将 Lion 权重发布为增量权重,以符合 LLaMA 模型许可证。

  • Lion-7B(增量配重)

您可以将我们的增量添加到原始 LLaMA 权重中以获得 Lion 权重。指示:

  1. 按照此处的说明获取 Huggingface 格式的原始 LLaMA 权重
  2. 请从Hugging Face下载我们的 Delta 模型
  3. 使用以下脚本通过应用我们的增量来获取 Lion 权重:
python src/weight_diff.py recover --path_raw huggyllama/llama-7b --path_diff YuxinJiang/Lion --path_tuned <path_to_store_recovered_weights>

推理

对于Lion的推理和训练,请首先安装要求:

pip install -r requirements.txt

我们为Lion提供了解码脚本,它读取输入文件并为每个样本生成相应的响应,最后将它们合并到输出文件中。它可以在具有 16GB GPU 的单台机器上运行。

python src/lion_inference.py \--model_dir <path_to_hf_converted_lion_ckpt_and_tokenizer> \--data_dir <path_to_input_json_file> \--output_dir <path_to_output_json_file> \--num_gpus 1

培训流程

下面显示了我们的对抗性蒸馏框架的一种迭代。

image-20230703131839438

1、模仿阶段

1.1 获取老师对Train Pool的回复

python src/chatgpt_inference.py \-q <path_to_json_file_for_the_Train_Pool> \-o <path_to_chatgpt_inference_for_the_Train_Pool> \--api_key <your_openai_api_key>

1.2 根据教师对训练池的反应对学生进行指令调整

微调是在具有 8 个 A100 80G GPU 的机器上进行的。

torchrun --nproc_per_node=8 --master_port=<your_random_port> src/train.py \--model_name_or_path <path_to_hf_converted_ckpt_and_tokenizer> \--data_path <path_to_chatgpt_inference_for_the_Train_Pool> \--bf16 True \--output_dir result \--num_train_epochs 3 \--model_max_length 1024 \--per_device_train_batch_size 2 \--per_device_eval_batch_size 2 \--gradient_accumulation_steps 8 \--evaluation_strategy "no" \--save_strategy "steps" \--save_steps 500 \--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

解决 OOM

简单来说,微调 7B 模型需要大约 7 x 8 x 2 = 112 GB 的 VRAM。上面给出的命令启用参数分片,因此任何 GPU 上都不会存储冗余模型副本。如果您想进一步减少内存占用,可以选择以下一些选项:

  • 打开 FSDP 的 CPU 卸载--fsdp "full_shard auto_wrap offload"。这可以节省 VRAM,但代价是运行时间更长。

  • 根据我们的经验,DeepSpeed stage-3(带卸载)有时比带卸载的 FSDP 具有更高的内存效率。以下是使用具有 8 个 GPU 的 DeepSpeed stage-3 以及参数和优化器卸载的示例:

    deepspeed src/train_deepspeed.py \--model_name_or_path <path_to_hf_converted_ckpt_and_tokenizer> \--data_path <path_to_chatgpt_inference_for_the_Train_Pool> \--output_dir result \--num_train_epochs 3 \--model_max_length 1024 \--per_device_train_batch_size 16 \--per_device_eval_batch_size 1 \--gradient_accumulation_steps 1 \--evaluation_strategy "no" \--save_strategy "steps" \--save_steps 600 \--save_total_limit 1 \--learning_rate 2e-5 \--warmup_ratio 0.03 \--logging_steps 1 \--lr_scheduler_type "cosine" \--report_to "tensorboard" \--gradient_checkpointing True \--deepspeed srcs/configs/deepspeed_config.json \--fp16 True
    
    • DeepSpeed 库还提供了一些有用的函数来估计内存使用情况。
  • LoRA微调查询、键和值嵌入头的低秩切片。这可以将总内存占用量从 112GB 减少到大约 7x4=28GB。我们将来可能会发布对此的重新实现,但目前peft代码库可能是一个有用的资源。

2. 歧视阶段

2.1 获取老师对Cache Pool的响应

python src/chatgpt_inference.py \-q <path_to_json_file_for_the_Cache_Pool> \-o <path_to_chatgpt_inference_for_the_Cache_Pool> \--api_key <your_openai_api_key>

2.2 获取学生对缓存池的回答

python src/lion_inference.py \--model_dir <path_to_hf_converted_lion_ckpt_and_tokenizer> \--data_dir <path_to_json_file_for_the_Cache_Pool> \--output_dir <path_to_lion_inference_for_the_Cache_Pool> \--num_gpus 8

2.3 要求裁判根据老师和学生的回答质量输出两个分数

python src/chatgpt_referee.py \-a <path_to_chatgpt_inference_for_the_Cache_Pool> <path_to_lion_inference_for_the_Cache_Pool> \-o <path_to_output_review_file> \--api_key <your_openai_api_key>

2.4 区分硬指令和简单指令

python src/discrimination.py \--review_path <path_to_output_review_file> \--chatgpt_inference_path <path_to_chatgpt_inference_for_the_Cache_Pool> \--lion_inference_path <path_to_lion_inference_for_the_Cache_Pool> \--hard_save_path <path_to_identified_hard_instructions> \--easy_save_path <path_to_identified_easy_instructions>

3. 生成阶段

3.1 生成新的硬指令

python -m src/generate_hard_instruction generate_instruction_following_data \--seed_tasks_path <path_to_identified_hard_instructions> \--output_dir <path_to_generated_hard_instructions> \--num_instructions_to_generate 3000 \--api_key <your_openai_api_key>

3.2 生成新的简单指令

python -m src/generate_easy_instruction generate_instruction_following_data \--seed_tasks_path <path_to_identified_easy_instructions> \--output_dir <path_to_generated_easy_instructions> \--num_instructions_to_generate 3000 \--api_key <your_openai_api_key>

评估

使用 GPT-4 自动评估

我们利用 GPT-4 自动评估两个模型在 80 个未见过的Vicuna 指令上的响应质量(分数从 1 到 10)。ChatGPT 已被选为参考模型来评估不同法学硕士的相对能力。相对分数以百分比形式报告,计算为分数总和的比率。

相对整体响应质量

img

不同任务类别的相对响应质量

img

具有对齐标准的人类评估

我们采用 Askel 等人提出的对齐标准。(2021),其中定义如果助理具有乐于助人、诚实和无害(HHH)的特点,则被认为是一致的。我们对 252 个UserOriented-Instructions进行了人工评估。为了估计获胜率,我们比较了下面每对模型之间获胜、平局和失败的频率。

img

引文

如果您使用此存储库中的代码,请引用我们的论文。

@article{DBLP:journals/corr/abs-2305-12870,author       = {Yuxin Jiang andChunkit Chan andMingyang Chen andWei Wang},title        = {Lion: Adversarial Distillation of Closed-Source Large Language Model},journal      = {CoRR},volume       = {abs/2305.12870},year         = {2023},url          = {https://doi.org/10.48550/arXiv.2305.12870},doi          = {10.48550/arXiv.2305.12870},eprinttype    = {arXiv},eprint       = {2305.12870},timestamp    = {Fri, 26 May 2023 11:29:33 +0200},biburl       = {https://dblp.org/rec/journals/corr/abs-2305-12870.bib},bibsource    = {dblp computer science bibliography, https://dblp.org}
}

免责声明

Xiv},
eprint = {2305.12870},
timestamp = {Fri, 26 May 2023 11:29:33 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-2305-12870.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}


## 免责声明⚠️Lion**仅供研究使用**并获得许可。**严禁**商业用途。任何版本的Lion生成的内容都会受到随机性等不可控变量的影响,因此本项目无法保证输出的准确性。本项目对模型输出的内容不承担任何法律责任,也不承担因使用相关资源和输出结果而产生的任何损失。

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

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

相关文章

刘知远老师回应:大模型LLM领域,有哪些可以作为学术研究方向?

点击上方“AI遇见机器学习”&#xff0c;选择“星标”公众号 第一时间获取价值内容 来源 | 深度学习自然语言处理 作者 | 刘致远 感觉有责任回答这个问题&#xff0c;恰好在高铁上写下回答。2022年初我做过一个报告题目是《大模型十问》&#xff0c;分享我们认为大模型值得探…

垂直领域大模型的一些思考及开源模型汇总

来自&#xff1a;NLP工作站 进NLP群—>加入NLP交流群 写在前面 大家好&#xff0c;我是刘聪NLP。 迄今为止&#xff0c;应该没有人还怀疑大模型的能力吧&#xff1f;但目前大模型实现真正落地&#xff0c;其实还有一段艰难的路要走。 对于ToC端来说&#xff0c;广大群众的口…

幂律智能联合智谱AI发布千亿参数级法律垂直大模型PowerLawGLM

前言 2023年是当之无愧的“大模型之年”&#xff0c;据瑞银集团的一份报告显示&#xff0c;ChatGPT推出仅仅两个月后&#xff0c;月活用户已经突破了1亿&#xff0c;成为史上用户增长速度最快的消费级应用程序。 在炙热的大模型赛道里&#xff0c;基于中文大模型的发布也是层…

三行代码调用大模型裁判PandaLM:保护隐私、可靠、可复现

©作者 | 王晋东 我们训练了一个专门用于评估大模型性能的裁判大模型&#xff1a;PandaLM&#xff0c;并提供了接口&#xff0c;仅需三行代码就可以调用PandaLM大模型进行保护隐私、可靠、可复现及廉价的大模型评估。 背景介绍 “赵老师&#xff0c;我们用不同基座和参数训…

让Ai帮你工作(4)--锁定图片生成角色

背景&#xff1a; Gpt4多模态模型上来后&#xff0c;MJ也是紧接着发布了V5&#xff0c;微软发布自己Ai作图工具&#xff0c;Abode、unity这些传统老牌作图软件工具也是紧跟着发布自己的AI作图插件工具。这已经标志着Ai作图已经成为计算成像的另一条生成链。 各大厂都已经发布了…

【LLM】大模型值得探索的十个研究方向

note 基础理论&#xff1a;大模型的基础理论是什么&#xff1f; 网络架构&#xff1a;Transformer是终极框架吗&#xff1f; 高效计算&#xff1a;如何使大模型更加高效&#xff1f; 高效适配&#xff1a;大模型如何适配到下游任务&#xff1f; 可控生成&#xff1a;如何实…

R语言 星相图和stars函数的用法

星相图是雷达图的多元表达形式&#xff0c;每个变量在图中都占据着一定的位置&#xff0c;想绘制一幅星相图&#xff0c;需要用到Rstudio中自带的graphic包得stars&#xff08;&#xff09;函数 其用法如下&#xff1a; stars(x,full TRUE,draw.segments FALSE,key.locc(xcoo…

r语言绘制星相图

星相图是雷达图的多元表达形式&#xff0c;每个变量在图中都占据着一定的位置&#xff0c;想绘制一幅星相图&#xff0c;需要用到Rstudio中自带的graphic包得stars&#xff08;&#xff09;函数 其用法如下&#xff1a; stars(x,full TRUE,draw.segments FALSE,key.locc(xcoo…

r语言中将茎叶图旋转90度_R语言(02)绘图

基本图形的绘制 在R语言(01)中&#xff0c;最后的一个综合训练&#xff0c;我们生成了一部分数据&#xff0c;现在我们就用这些数据为例&#xff0c;来展示R是如何绘制一些图表的。 数据的导入 通过读取数据文件&#xff0c;我们可以导入之前产生的数据。 1 2 3 4 5 6 7 8 9 10…

R语言小总结(基础篇)

&#x1f431;‍&#x1f409;&#x1f431;‍&#x1f409;&#x1f431;‍&#x1f409;一起来干R语言&#xff0c;冲冲冲&#xff01;&#xff01;&#xff01; &#x1f917;&#x1f917;&#x1f917;欢迎大佬们来指点指点鸭~~~ 参考资料&#xff1a; 1.多元统计分析及R语…

APISpace 生日密码API

APISpace 的 生日密码 API&#xff0c;根据出生日期查询生日密码。每个人的生日都是个迷&#xff0c;星相命理给我们生命的启示,不同的生日都会有不同的命运。生日总有神奇的暗示&#xff0c;凭出生日期的数字测出内在性格和潜在力量。这里帮你揭开【生日密码】的神秘面纱。 返…

R 多元数据可视化

多元数据可视化 1.数据描述2.调入数据3.条图3.1 按行做均值条图3.2 按列做均值条图 4.箱尾图5.星相图5.1具有图例的360度星相图5.2具有图例的180度星相图 6. 脸谱图&#xff08;需加载aplpack&#xff09;7. 调和曲线图&#xff08;需加载mvstats包&#xff09;8. 案例全部程序…

R(现代统计图形)软件的使用

1.R软件的下载安装 1.R官网地址&#xff1a;https://www.r-project.org/ 2.下载流程&#xff1a; 3.安装&#xff1a; 双击运行&#xff0c;语言简体中文&#xff0c;问题不大&#xff0c;都懂的&#xff0c;能不装C盘就不装&#xff1a; 后面我都默认。 4.安装成功&…

面向IoT的协议选择思考

对于使用传感器和保持连接性的IoT系统而言&#xff0c;如何使用这些元素和多种互联网技术相结合呢&#xff1f; 互联网协议并不陌生, 但是IoT相关的互联网协议可能是有不同, 有些协议被用来辅助塑造系统。TCP/IP协议栈上有多个应用层协议&#xff0c; 每种协议都有自己的优势和…

【多元统计分析与R语言】【详解】使用教材P84页表3-2进行多元数据简单R分析:定量变量的分析(直方图、散点图)、定性变量的分析并绘制绘制均值条图、箱尾图、星相图、调和曲线图

可视化[教材P84页表3-2] 1.题目2.题目详解2.1.多元数据简单R分析&#xff1a;定量变量的分析&#xff08;直方图、散点图&#xff09;、定性变量的分析&#xff08;单因素分析、多维列联表&#xff09;。参考教材P45-P52页。2.2.绘制均值条图、箱尾图、星相图、调和曲线图。参考…

星相

今天看了一个死于白血病17岁男孩的盘&#xff0c;心情沉重。人逃不过宿命&#xff0c;当这个宿命是死亡的时候&#xff0c;就额外让人无奈。尤其是&#xff0c;你看到命运已经这样写下了。我还是比较喜欢卜卦盘&#xff0c;简单直接。问的问题也比较不关痛痒&#xff0c;跟这个…

R语言实战--R语言数据可视化中各种图形的函数命令及含义(散点图,星相图,箱线图等)

散点图 > plot(x1,x2)直方图 可以用来表示不同值出现的频率 > hist(x$x1)箱线图 > boxplot(x$x1,x$x2,x$x3)箱子中间的黑色粗线为样本的中位数。比如第一个图为90箱子的上下横线分别表示样本的25%分位线以及75%分位线&#xff0c;意思是有25%的样本数在上横线以上。…

R以国民CPI数据为例绘制箱尾/条状/星相/饼图

本博文源于暨南大学的mooc课程《多元数据统计分析》&#xff0c;如果大家没有装R语言的&#xff0c;可以查看此博文&#xff0c;手把手带你装R R语言安装 下面我们就开始今天的学习吧(ps:博主看matlab看哭了&#xff0c;太难了)。 国民CPI数据分析准备 我会把这个数据上传至资…

取代ChatGPT,腾讯的二次元生成器居然成海外网友新宠​

海外爆红&#xff0c;服务器被挤垮&#xff0c;还顺手普及了点中文&#xff1f; —— 文&#xff5c;杜晨 编辑&#xff5c;VickyXiao 图片来源 | 腾讯 还在沉溺于 ChatGPT 无法自拔&#xff1f; 外国网友早就 move on 了&#xff01; 这两天&#xff0c;另一个AIGC&#…

当 ChatGPT 教我学操作系统

还记得 2021 年 11 月 8 号我开始写 Linux 0.11 的源码解读系列。 当初为了写这个系列&#xff0c;把 Linux 0.11 源码和相关解读的书籍都翻烂了&#xff0c;查阅资料理解代码的过程非常痛苦&#xff0c;有的时候一个小的卡点就要好几天才能整明白。 就比如最开头的位于 boots…