创建大模型的新方法 - 配比两个模型

原文:创建大模型的新方法 - 配比两个模型 - 知乎

现在,创建大模型的新方法还可以使用配比两个模型- 正如炼金术巫师那样。

工具1 medusa:
https://github.com/FasterDecoding/Medusa

Medusa 为 LLM 添加了额外的“头”,以同时预测多个未来代币。当使用 Medusa 增强模型时,原始模型保持不变,只有新的头部在训练过程中进行微调。在生成过程中,这些头每个都会为相应位置生成多个可能的单词。然后使用基于树的注意力机制组合和处理这些选项。最后,采用典型的接受方案从候选者中挑选最长的合理前缀以进行进一步解码。

工具2 mergekit:

https://github.com/cg123/mergekit/tree/main

mergekit是一个用于合并预先训练的语言模型的工具包,使用多种合并方法,包括 TIES、线性和 slerp 合并。该工具包还可以使用从其他模型中选择的层来分段组装语言模型bakllama.py

ref="https://github.com/cg123/mergekit/tree/main#merging-models-with-mainpy">合并模型main.py

用法

要使用脚本合并模型main.py,请指定最终模型的输出目录以及要使用该--merge选项合并的模型。根据所选的合并方法,可能需要其他参数,例如--density--weight和。--base-model

该脚本支持以下合并方法:

  • 线性
    • 不需要基础模型。
    • 必须指定要合并的所有模型的权重。

  • SLERP
    • 正好需要两个模型。
    • 必须指定单个权重来设置两个模型之间的插值参数。

例子

  • 与 TIES 方法合并并指定每个模型的权重和密度:
    python main.py ./output-model --base-model TheBloke/Llama-2-13B-fp16 --cuda \ --merge WizardLM/WizardLM-13B-V1.2 --weight 0.3 --density 0.5 \ --merge garage-bAInd/Platypus2-13B --weight 0.5 --density 0.5
  • 与线性方法合并并设置模型权重:
    python main.py ./output-model --cuda --method linear \ --merge garage-bAInd/Platypus2-13B --weight 0.6 \ --merge WizardLM/WizardLM-13B-V1.2 --weight 0.2
  • 与SLERP方法合并并设置插值参数:
    python main.py ./output-model --cuda --method slerp --base-model garage-bAInd/Platypus2-13B \ --merge WizardLM/WizardLM-13B-V1.2 --weight 0.5
  • 具有层权重插值梯度的 SLERP:
    python main.py ./output-model --cuda --method slerp --base-model garage-bAInd/Platypus2-13B \ --merge WizardLM/WizardLM-13B-V1.2 --layer-gradient "[0, 0.3, 0.7, 0, 0.1, 1.0]"

python main.py --help有关所有可用选项的详细信息,请参阅脚本的帮助消息 ( )。

ef="https://github.com/cg123/mergekit/tree/main#piecewise-layer-combinations-with-bakllamapy">分段层组合bakllama.py

bakllama.py脚本允许您使用从其他预训练模型中获取的层分段组装模型。

配置

要使用 bakllama.py 脚本,您需要创建一个 YAML 配置文件,在其中定义要从各种源模型使用的层,并可选择指定嵌入和 LM 头组件的源。

配置文件应具有以下字段:

  • layer_slices:图层切片对象的列表,每个对象指定要从源模型获取的图层范围。
    • model:源模型的标识符或路径。
    • start:起始图层索引(含)。
    • end:结束层索引(不包括)。
    • scale:(可选)层权重的比例因子。

  • embedding_source:(可选)从中获取嵌入层的模型。如果未指定,则默认为 layer_slices 中列出的第一个模型。
  • lm_head_source:(可选)采用 LM 头的模型。如果未指定,则默认为 layer_slices 中列出的最后一个模型。

用法

创建 YAML 配置文件后,使用bakllama.py配置文件和输出路径作为参数运行脚本:

python bakllama.py path/to/your/config.yml ./output-model-directory

工具2

其他参考:https://www.toutiao.com/video/7323120863611224611/?log_from=4c1c2792567a5_1705195584743

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值