原文:创建大模型的新方法 - 配比两个模型 - 知乎
现在,创建大模型的新方法还可以使用配比两个模型- 正如炼金术巫师那样。
工具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
该脚本支持以下合并方法:
-
解决合并模型时的干扰(默认方法,“ties”)
- 需要一个基础模型。
- 可以指定每个模型的重量和密度。
-
线性
- 不需要基础模型。
- 必须指定要合并的所有模型的权重。
-
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.toymoban.com/news/detail-807108.html
其他参考:https://www.toutiao.com/video/7323120863611224611/?log_from=4c1c2792567a5_1705195584743文章来源地址https://www.toymoban.com/news/detail-807108.html
到了这里,关于创建大模型的新方法 - 配比两个模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!