原文:創(chuàng)建大模型的新方法 - 配比兩個(gè)模型 - 知乎
現(xiàn)在,創(chuàng)建大模型的新方法還可以使用配比兩個(gè)模型- 正如煉金術(shù)巫師那樣。
工具1 medusa:
https://github.com/FasterDecoding/Medusa
Medusa 為 LLM 添加了額外的“頭”,以同時(shí)預(yù)測(cè)多個(gè)未來代幣。當(dāng)使用 Medusa 增強(qiáng)模型時(shí),原始模型保持不變,只有新的頭部在訓(xùn)練過程中進(jìn)行微調(diào)。在生成過程中,這些頭每個(gè)都會(huì)為相應(yīng)位置生成多個(gè)可能的單詞。然后使用基于樹的注意力機(jī)制組合和處理這些選項(xiàng)。最后,采用典型的接受方案從候選者中挑選最長(zhǎng)的合理前綴以進(jìn)行進(jìn)一步解碼。
工具2 mergekit:
https://github.com/cg123/mergekit/tree/main
mergekit
是一個(gè)用于合并預(yù)先訓(xùn)練的語言模型的工具包,使用多種合并方法,包括 TIES、線性和 slerp 合并。該工具包還可以使用從其他模型中選擇的層來分段組裝語言模型bakllama.py
。
ref="https://github.com/cg123/mergekit/tree/main#merging-models-with-mainpy">合并模型main.py
用法
要使用腳本合并模型main.py
,請(qǐng)指定最終模型的輸出目錄以及要使用該--merge
選項(xiàng)合并的模型。根據(jù)所選的合并方法,可能需要其他參數(shù),例如--density
、--weight
和。--base-model
該腳本支持以下合并方法:
-
解決合并模型時(shí)的干擾(默認(rèn)方法,“ties”)
- 需要一個(gè)基礎(chǔ)模型。
- 可以指定每個(gè)模型的重量和密度。
-
線性
- 不需要基礎(chǔ)模型。
- 必須指定要合并的所有模型的權(quán)重。
-
SLERP
- 正好需要兩個(gè)模型。
- 必須指定單個(gè)權(quán)重來設(shè)置兩個(gè)模型之間的插值參數(shù)。
例子
- 與 TIES 方法合并并指定每個(gè)模型的權(quán)重和密度:
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 - 與線性方法合并并設(shè)置模型權(quán)重:
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方法合并并設(shè)置插值參數(shù):
python main.py ./output-model --cuda --method slerp --base-model garage-bAInd/Platypus2-13B \ --merge WizardLM/WizardLM-13B-V1.2 --weight 0.5 - 具有層權(quán)重插值梯度的 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
有關(guān)所有可用選項(xiàng)的詳細(xì)信息,請(qǐng)參閱腳本的幫助消息 ( )。
ef="https://github.com/cg123/mergekit/tree/main#piecewise-layer-combinations-with-bakllamapy">分段層組合bakllama.py
該bakllama.py
腳本允許您使用從其他預(yù)訓(xùn)練模型中獲取的層分段組裝模型。
配置
要使用 bakllama.py 腳本,您需要?jiǎng)?chuàng)建一個(gè) YAML 配置文件,在其中定義要從各種源模型使用的層,并可選擇指定嵌入和 LM 頭組件的源。
配置文件應(yīng)具有以下字段:
-
layer_slices
:圖層切片對(duì)象的列表,每個(gè)對(duì)象指定要從源模型獲取的圖層范圍。-
model
:源模型的標(biāo)識(shí)符或路徑。 -
start
:起始圖層索引(含)。 -
end
:結(jié)束層索引(不包括)。 -
scale
:(可選)層權(quán)重的比例因子。
-
-
embedding_source
:(可選)從中獲取嵌入層的模型。如果未指定,則默認(rèn)為 layer_slices 中列出的第一個(gè)模型。 -
lm_head_source
:(可選)采用 LM 頭的模型。如果未指定,則默認(rèn)為 layer_slices 中列出的最后一個(gè)模型。
用法
創(chuàng)建 YAML 配置文件后,使用bakllama.py
配置文件和輸出路徑作為參數(shù)運(yùn)行腳本:
python bakllama.py path/to/your/config.yml ./output-model-directory
工具2文章來源:http://www.zghlxwxcb.cn/news/detail-807108.html
其他參考:https://www.toutiao.com/video/7323120863611224611/?log_from=4c1c2792567a5_1705195584743文章來源地址http://www.zghlxwxcb.cn/news/detail-807108.html
到了這里,關(guān)于創(chuàng)建大模型的新方法 - 配比兩個(gè)模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!