独步潮流!如何在私有数据集上塑造GPT式大型语言模型的独特风格!( 二 )


因此,根据目前已知的信息,中也采用了与 LLaMA(和)相同的 RoPE 嵌入,但在(,2019年)上与 GPT-3 具有相同的架构 。
是一个概念,通过共享相同的键和值张量,以提高效率,在不同的注意力头之间共享,如下所示的多头注意力块:
此外,根据披露的训练数据信息显示,40-B 是在 1000B 个标记上进行训练的,其中82%的标记来自语料库,其余的标记来自书籍、论文、对话(、和)以及代码仓库如 。
虽然的官方论文尚未发布,但相关论文《TheforLLM:with Web Data, and Web Data Only》中提供了证据,表明取得良好效果的关键还是在于构建高质量的数据集 。
这一点与笔者的认知高度一致,就是大部分 LLMs 架构差异其实并不大,关键在于训练技巧和高质量的数据集,数据的质量远远大于数量 。
参数高效的微调方法
本文的其余部分将主要关注7B,这使我们能够在单个 GPU 上对模型进行微调 。7B 是目前被认为是同等规模类别中最好的开源 LLM 。(但其实本文其余部分提供的相同代码也适用于更大的40B变体)
此外,感兴趣的同学可以参考《 Down to Scale Up: A Guide to - Fine-》这篇综述,论文里面提供了许多参数高效微调的范式 。微调的方式有很多种,但更最重要的问题是,在实践中哪些方法最值得采用?让我们从性能基准开始,然后深入探讨这些不同方法的工作原理 。
性能比较
为了在这个性能基准中使用一个常见的数据集,我们将考虑用于指令微调的流行数据集,它包含 52,000 个指令微调示例 。其结构如下:
指令: “给出三个保持健康的建议 。”
输出: 1.均衡饮食,确保摄入足够的水果和蔬菜 。2.定期锻炼,保持身体活跃和强壮 。3.获得足够的睡眠并保持稳定的睡眠时间表 。

独步潮流!如何在私有数据集上塑造GPT式大型语言模型的独特风格!

文章插图
目前有三种主流的方法:
这里,我们可以使用 LLaMA- 方法进行微调 。大家不要被它的名字误导,虽然叫 LLaMA 适配器,但这些适配器方法不仅适用于 LLaMA 架构,同样可以用于其他 LLMs 的微调 。
准备模型和数据集
对于这个基准测试,我们建议使用Lit-开源库,因为它直接提供了各种 LLM 的高效实现来进行训练和便捷使用 。
首先,我们将这个仓库 git 下来,然后下载对应的基础模型,这里整个小一点的:
python scripts/download.py --repo_id tiiuae/falcon-7b
这个模型大约需要预留 20 Gb 的空间 。
其次,我们调整下模型权重格式:
python scripts/convert_hf_checkpoint.py --checkpoint_dir checkpoints/tiiuae/falcon-7b
紧接着,我们把数据集下来,这里直接用就行了:
python scripts/prepare_alpaca.py --checkpoint_dir checkpoints/tiiuae/falcon-7b/
运行代码
Now,我们便可以直接运行7B 模型的微调脚本了 。作为比较,我们展示四种不同的方法 。目前,我们将专注于微调结果 。稍后在本文中,我们将具体讨论这些方法的工作原理 。
python finetune/adapter.py --checkpoint_dir checkpoints/tiiuae/falcon-7b/
python finetune/adapter_v2.py --checkpoint_dir checkpoints/tiiuae/falcon-7b/
python finetune/lora.py --checkpoint_dir checkpoints/tiiuae/falcon-7b/
python finetune/full.py --checkpoint_dir checkpoints/tiiuae/falcon-7b/