现在,创建大模型的新方法还可以使用配比两个模型- 正如炼金术巫师那样。
工具1 medusa:
https://github.com/FasterDecoding/Medusa
Medusa 为 LLM 添加了额外的“头”,以同时预测多个未来代币。当使用 Medusa 增强模型时,原始模型保持不变,只有新的头部在训练过程中进行微调。在生成过程中,这些头每个都会为相应位置生成多个可能的单词。然后使用基于树的注意力机制组合和处理这些选项。最后,采用典型的接受方案从候选者中挑选最长的合理前缀以进行进一步解码。
工具2 mergekit:
https://github.com/cg123/mergekit/tree/main
mergekit
是一个用于合并预先训练的语言模型的工具包,使用多种合并方法,包括 TIES、线性和 slerp 合并。该工具包还可以使用从其他模型中选择的层来分段组装语言模型bakllama.py
。
要使用脚本合并模型main.py
,请指定最终模型的输出目录以及要使用该--merge
选项合并的模型。根据所选的合并方法,可能需要其他参数,例如--density
、--weight
和。--base-model
该脚本支持以下合并方法:
python main.py --help
有关所有可用选项的详细信息,请参阅脚本的帮助消息 ( )。
该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