AI模型的预训练和精调是什么意思?
在近期火热的AI话题中,预训练模型(pre-trained models)和精调模型(fine-tune models)会被经常提及。这里介绍一下这两个概念具体指什么。
首先可以把模型想象为是由一个载体通过大量数据集训练而成,载体是模型本身,最终以某种应用形式(比如web接口)和我们互动;数据集是我们把模型训练为某个领域应用而使用的数据。类比一个婴儿(模型载体),在中文环境(数据集)下长大就会说中文、在英文环境长大会说英文。以下均以NLP自然语言处理为例:
模型预训练就是指各个厂家在建立起模型之后,用数据集对模型进行针对性的训练。我们听到的通用模型,比如说GPT或者其他大模型,他们采集了多样化、多语言、天量级别(几百、几千亿GB)的数据,努力使得模型适合于各种通用场景,这些就是我们常说的预训练大模型。这些预先训练大模型,它可以基本上会分为两种用途,一种是直接使用该模型,另外一种是给下游某种场景、某个领域来使用,比如说在金融、医药领域等,会基于这些预训练模型进行精调,以便更适合该领域的业务诉求。
模型精调就是在预训练模型基础之上再通过在某领域的专门数据集对预训练的模型进一步的优化。之所以说要精调是因为通用预训练模型适合一般通用场景,但是在专业领域,比如金融、法律领域的文本创作需要使用专业术语和相关的表述方式、格式等,如果不在该领域精调,通用模型写出的文章可能很口语化、泛化等,不符合业务需要。
精调技术有多样化发展,最基础的精调是在预训练模型基础上,通过专门数据对模型全部参数进行调优,如果模型本身参数体量很大,那么精调也需要耗费很大算力资源。随着理论研究发展,也出现了众多精调技术,比如Lora、PTune、Prefix等等,在固化原有模型参数基础上对引入参数(体量相比小得多)进行调优,调优所耗资源少、效果好。
总结一下模型类别:第一个是预训练通用大模型,可以为下游场景提供一个已经预训练好的基础模型使用。第二个是这些预训练通用模型可以通过进一步对话训练(本质也是一种精调),形成对话式AI和人进行互动,比如ChatGPT。第三种是针对专门业务领域进行训练,通过专项领域数据精调模型,比如生成法务文书AI。
善于思考的小伙伴读到这里可能会问:有些模型,比如专门生成编程源代码的模型,貌似不属于精调?没错,代码AI功能是根据使用者要求只能生成源代码,不能包含其他通用回复,所以不适合模型精调,而是使用大量代码库作为数据集对模型做预训练。所以这个问题隐含着在专项领域使用预训练和精调的区别 - 为专门场景服务也可以使用专项数据进行模型预训练,但这样预训练后的模型只能为这个特定场景服务 - 比如源代码AI不能生产一份工作周报;精调模型还保留着对原先预训练模型的知识理解,比如使用一个只在英文预训练的模型对中文进行精调,精调后的模型即能理解中文也保留着原模型对英文的理解。
希望今天介绍的内容对大家能够有一定的帮助。
ps:所有图片来自DALL-E