加载模块前,请记得升级 transformers的版本到最新版 pip install -U transformers,开始没升级,用的 4.27 各种报错,尤其是刚接触一度怀疑本地包的参数有问题浪费了不少时间,其实发现升级到新版就都可以正常使用了。
另外由于每个模型在训练的时候,会有固定对应的分词器,因此在导入模型的时候,我们同样需要同步导入对应的分词器。
自动加载
如果网络好,模型加载可以直接自动联网下载并完成模型的加载.
1 | from transformers import AutoModelForSeq2SeqLM # import LLM |
指定的模型如果存在,会自动从huggingface上下载对应的模型,并完成模型的加载,
加载本地模型
1 | from transformers import AutoModel #自动判断模型,如果指导具体模型也可以使用其他的模块,比如AutoModelForSeq2SeqLM、LlamaForCausalLM |
可以看到transformers本身存在很多模型类,不同的模型类对应不同的属性功能,所以在使用前一定要确认要使用到模型,和要解决的问题。具体模型分类可以查看transformers官方文档。
模型的使用
完成模型的加载后,我们就可以使用模型进行一些数据的处理。
1 | # 获得要处理的文本 |
微调模型
我们前面已经介绍了,如何加载一个模型,其实加载完模型,我们就可以通过模型获得我们想要的结果,但是有些时候,原始获取的模型获得的结果并不是很符合我们的预期。
这时候,我们就需要对模型进行一些微调,这里我们会开始介绍一些模型进行本地化微调的方法。
数据和模型的加载
既然是微调,前提其实就是我们已经有一套预训练的参数,同时我们有一套数据集,可以用于进行参数的进一步调整,所以在开始预训练前,首先我们需要做的就是加载数据集和模型。
1 | # 加载数据集 |
提前了解模型的情况
模型的可调节参数
其实所谓的模型微调,就是通过训练数据,对神经网络中的参数进行不断的修正调整,所以在动手调节前,我们肯定需要先了解, 我们使用的模型,一共有多少参数。可以通过下面的方法了解我们的参数情况。
1 | def print_number_of_trainable_model_parameters(model): |
我们以 Meta-Llama-3-8B 为例,可以看到该模型共计 8.03B 的参数,可以训练的模型参数占比 100%。
1 | trainable model parameters: 8030261248 |
模型的性能表现
不同模型的预期用途不一样,所以这部分可能会在不同用途的模型上不具备通用型,但是如果刚接触,可以以此为例。
简单讲,就是直接使用模型对手上测试数据的输入进行处理,然后比较生成的结果和测试数据的预期结果之间有多大差别。
总结性模型
1 | index = 200 |