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

这篇具有很好参考价值的文章主要介绍了Lion:闭源大语言模型的对抗性蒸馏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

消息

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

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

内容

概述

Lion:闭源大语言模型的对抗性蒸馏,大语言模型,GPT,AI,语言模型,人工智能,自然语言处理

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

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

在线演示

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

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

Lion:闭源大语言模型的对抗性蒸馏,大语言模型,GPT,AI,语言模型,人工智能,自然语言处理

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

Lion:闭源大语言模型的对抗性蒸馏,大语言模型,GPT,AI,语言模型,人工智能,自然语言处理

恢复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

培训流程

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

Lion:闭源大语言模型的对抗性蒸馏,大语言模型,GPT,AI,语言模型,人工智能,自然语言处理

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 已被选为参考模型来评估不同法学硕士的相对能力。相对分数以百分比形式报告,计算为分数总和的比率。

相对整体响应质量

Lion:闭源大语言模型的对抗性蒸馏,大语言模型,GPT,AI,语言模型,人工智能,自然语言处理

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

Lion:闭源大语言模型的对抗性蒸馏,大语言模型,GPT,AI,语言模型,人工智能,自然语言处理

具有对齐标准的人类评估

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

Lion:闭源大语言模型的对抗性蒸馏,大语言模型,GPT,AI,语言模型,人工智能,自然语言处理

引文

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

@article{DBLP:journals/corr/abs-2305-12870,
  author       = {Yuxin Jiang and
                  Chunkit Chan and
                  Mingyang Chen and
                  Wei 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}
}文章来源地址https://www.toymoban.com/news/detail-521170.html


## 免责声明

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

到了这里,关于Lion:闭源大语言模型的对抗性蒸馏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ATLAS——对抗性机器学习威胁矩阵<案例研究二>

    actic: AML.TA0007 technique: AML.T0015   突变技术可以规避几乎所有的 DGA 检测,不仅限于本例中所示的基于 CNN 的 DGA 检测。如果攻击者将其添加到现有 DGA 之上,则大多数 DGA 检测可能会失败。使用这种技术变异的 DGA 生成的域名成功地避开了目标 DGA 检测模型,允许攻击者继续与

    2024年04月14日
    浏览(45)
  • 通过盲对抗性扰动实时击败基于DNN的流量分析系统

    论文题目:Defeating DNN-Based Traffic Analysis Systems in Real-Time With Blind Adversarial Perturbations 期刊(会议):30th USENIX Security Symposium 时间:2021 级别:CCF A 文章链接:https://www.usenix.org/system/files/sec21-nasr.pdf 对抗性扰动是各种图像处理应用中的一个活跃研究领域(称为对抗性样本)。然

    2024年02月02日
    浏览(58)
  • 开源对抗性攻击库OpenAttack:强化你的AI安全实践

    项目地址:https://gitcode.com/thunlp/OpenAttack 在人工智能领域,模型的安全性和鲁棒性日益受到关注。为了检验和提升AI模型的抗干扰能力,对抗性攻击是一种重要的手段。【项目名称】——OpenAttack,是由清华大学自然语言处理实验室(THUNLP)开发的开源Python库,旨在为研究者和开

    2024年04月29日
    浏览(61)
  • 7B LLaMA模型接近ChatGPT 95%的能力!港科大提出全新对抗蒸馏框架Lion

    ©PaperWeekly 原创 · 作者 |  黄一天 单位 |  华为 研究方向 |  自然语言处理 由香港科技大学提出的针对闭源大语言模型的对抗蒸馏框架,成功将 ChatGPT 的知识转移到了参数量  7B   的 LLaMA 模型(命名为 Lion),在只有  70k   训练数据的情况下,实现了近  95 % 的 ChatGPT 能力近

    2024年02月12日
    浏览(31)
  • 对抗性攻击和防御竞争(Adversarial Attacks and Defences Competition)的通俗解读

    通过我们在 Pytorch对机器学习模型的安全漏洞攻击方法之Fast Gradient Sign Attack(FGSM,快速梯度符号攻击) https://blog.csdn.net/weixin_41896770/article/details/130319089 这篇文章的介绍,我们了解到 FGSM 可以对机器学习模型进行有效的攻击, 成功的让MNIST分类器进行了错误的分类 ,并且写了代码

    2024年02月04日
    浏览(41)
  • 二十三章:抗对抗性操纵的弱监督和半监督语义分割的属性解释

            弱监督语义分割从分类器中生成像素级定位,但往往会限制其关注目标对象的一个小的区域。AdvCAM是一种图像的属性图,通过增加分类分数来进行操作。这种操作以反对抗的方式实现,沿着像素梯度的相反方向扰动图像。它迫使最初被认为不具有区分度的区域参与

    2024年02月15日
    浏览(67)
  • 阿里云开源通义千问720亿参数模型,性能超越大部分商用闭源大模型

    12月1日,阿里云举办通义千问发布会,开源通义千问720亿参数模型Qwen-72B。Qwen-72B在10个权威基准测评创下开源模型最优成绩,成为业界最强开源大模型,性能超越开源标杆Llama 2-70B和大部分商用闭源模型。未来,企业级、科研级的高性能应用,也有了开源大模型这一选项。 通

    2024年02月03日
    浏览(60)
  • 开源vs闭源大模型如何塑造技术的未来?开源模型的优劣势&未来发展方向

    创作活动:https://activity.csdn.net/creatActivity?id=10606 开源和闭源,两种截然不同的开发模式,对于大模型的发展有着重要影响。开源让技术共享,吸引了众多人才加入,推动了大模的创新。而闭源则保护了商业利益和技术优势,为大模型的商业应用提供了更好的保障。 那么,你

    2024年02月04日
    浏览(58)
  • 百川智能发布首个530亿参数闭源大模型,今年追上GPT-3.5

    4月官宣创业,6月15日发布第一款7B开源模型,7月11日发布第二款13B、130亿参数开源模型。 平均保持2个月一个版本发布速度,8月8日,百川智能发布了创业以来的首个530亿参数闭源大模型——Baichuan-53B(以下简称“53B”)。 光锥智能获悉,53B支持中英双语,在知识性上表现优

    2024年02月13日
    浏览(44)
  • 开源与闭源大模型之战:Llama 2 vs. GPT-4 vs. Claude-2

    人工智能一直在以惊人的速度发展,特别是在自然语言处理(NLP)领域。这场革命的领跑者包括三种杰出的人工智能语言模型:Llama 2、GPT-4 和 Claude-2。在这篇博客中,我们将探索这些人工智能巨头,了解他们独特的能力以及他们对各个领域的潜在影响。 Llama 2 是一种开创性的

    2024年02月10日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包