文章目录

AI大模型的定义

AI大模型是通过深度学习算法和人工神经网络训练出的具有庞大规模参数的人工智能模型。这些模型使用大量的多媒体数据资源作为输入,并通过复杂的数学运算和优化算法来完成大规模的训练,以学习和理解到输入数据的模式和特征。这些模式和特征最终通过大模型中庞大的参数进行表征,以获得与输入数据和模型设计相匹配的能力,最终来实现更复杂、更广泛的任务,如语音识别、自然语言处理、计算机视觉等。
大模型的训练过程是根据大量的输入数据,通过算法调整模型中庞大的参数来优化模型性能。在训练过程中,模型会根据输入数据进行反向传播和优化,以最小化损失函数并更新参数,在训练收敛时,参数会趋于稳定,这意味着模型已经学习到了最佳的参数设置,模型也就具备了相应的能力。这意味着模型在给定的输入下,将会产生一致的输出。这种确定性是基于训练数据的特征和模型结构所决定的,即决定模型训练能力的因素主要有输入的数据和模型算法参数的设计。 因此,模型的性能和功能不仅取决于模型参数的确定,还取决于训练数据的质量、模型架构的选择等。为了获得更好的性能和功能,需要综合考虑这些因素,并进行合适的调整和优化。
根据以上定义和理解不难推断出AI大模型的特点:
 大量的参数:大模型通常具有庞大的参数规模,拥有数以亿计的参数,这些参数可以存储模型的知识和经验,更多的参数意味着模型具有更强大的学习能力和表示能力,能够更好地捕捉数据中的复杂模式和特征,以便进行推理和预测。AI大模型的目标是通过增加模型的参数数量来提高模型的表现能力。相比之下,传统的浅层神经网络或机器学习模型可能无法捕捉到更复杂的关系和模式。
 上下文理解和生成:大模型能够理解和生成更具上下文和语义的内容,通过注意力机制、上下文编码器等关键技术来学习和训练大量的语言、图像等输入数据,可以从复杂的真实场景中提取有用的信息。
 强大的泛化能力:大模型通过在大规模数据上进行训练,具有强大的泛化能力。它们从大量的数据中学习到广泛的特征和模式,并且能够在未学习过、未见过的数据上也同样表现良好。对未学知识的泛化能力也是评估大模型的重要指标。
 计算资源需求大:大模型对于数据和计算资源的需求非常大。需要强大的计算资源来进行参数优化和推理,这需要具备出色的并行计算能力的GPU、TPU处理器集群,这使得训练和使用这些模型成为一项具有挑战性的任务。
 迁移学习能力:大模型在一个或多个领域上进行预训练,并能够将学到的知识迁移到新任务或新领域中。这种迁移学习能力使得模型在新任务上的学习速度更快,同时也提高了模型在未知领域中的性能。
 预训练与微调:大模型可以采用预训练和微调两阶段策略。在预训练阶段,模型通过大规模无标签数据进行学习,学习到一种通用表示。在微调阶段,模型使用有标签数据对模型进行细化训练,以适应具体的任务和领域。这种在大规模数据上进行预训练,再在具体任务上进行微调,能够让大模型适应不同的应用场景。
 多领域应用:大模型应用领域广泛,可应用于多个领域,并解决多种任务,如自然语言处理、计算机视觉、语音识别等。大模型不仅在单一模态领域中有很强的表现,更能够进行跨模态的任务处理。
AI大模型具有诸多优点的同时也存在一些挑战和限制,如训练时间长、计算资源需求大、模型复杂度高、通用泛化能力受限等等。此外,由于其庞大的参数规模,大模型可能面临可解释性和隐私等方面的诸多挑战。
尽管有诸多问题和挑战,但AI大模型的蓬勃发展已经势不可挡。最近几年,随着深度学习和硬件技术的快速发展,出现了一系列强大的大模型,其中最著名的就是以Transformer架构为基础的BERT、GPT和T5等模型。以GPT-3为例,它具有1750亿个参数。该模型在自然语言处理任务中表现出色,能够生成高质量的文本、回答问题和进行对话。而这仅仅是大模型的开始…

AI大模型的分类

AI大模型根据不同维度有不同的分类方式,如根据任务类型可分为监督学习模型、无监督学习模型和强化学习模型;根据模型结构可分为DNN深度神经网络、CNN卷积神经网络、RNN循环神经网络;根据模型规模可以分为大规模模型和中小规模模型。而我们重点从模型数据类型、模型工作模式和模型开发模式来分析AI大模型的分类。
(1) 按模型数据的媒体类型,AI大模型可以分为语言模型,图像模型以及多模态模型:
语言模型(Language Models):
语言模型是一种用于预测和生成自然语言文本的统计模型,通过给定的输入序列,学习单词(或字符)之间的关系和上下文来推断一个序列中下一个词或字符的概率,旨在理解和生成自然语言文本。语言模型的训练通常需要大量的文本数据,以便能够捕捉到不同单词之间的统计规律和语义关系。训练好的语言模型可以用于机器翻译、文本生成、语音识别纠错等多种自然语言处理任务,为人工智能应用提供文本处理能力。
最常用的语言模型是基于N-gram的模型和基于神经网络的模型。N-gram模型基于前n-1个单词来预测下一个单词的概率,而神经网络模型则使用深度学习技术,如循环神经网络(RNN)或者Transformer来建模长期依赖关系和上下文信息。GPT(生成式预训练Transformer)系列模型就是一种广为使用的语言模型。
图像模型(Image Models):
图像模型是一种用于处理和分析图像数据的模型,用来理解、识别和生成图像中的内容,从而实现图像分类、目标检测、图像生成等多种计算机视觉任务。图像模型可以分为传统的基于特征工程的方法和基于深度学习的方法。基于特征工程的方法是通过手动选择和设计特征来表示图像或使用传统机器学习算法来对提取的特征进行分类或回归的方式对图像进行分析处理;基于深度学习的方法是目前常用的图像模型处理方法,如通过卷积神经网络的多个卷积层和池化层来自动学习图像中的特征,并通过全连接层进行分类或回归、再如利用预训练的大型神经网络模型来提取图像特征的迁移学习等。经典的图像模型包括AlexNet、VGG、ResNet和EfficientNet等。
 多模态大模型(Multimodal Models):
多模态大模型是指能够同时处理多种输入模态(如图像、文本、语音等)和输出模态(如图像生成、文本生成、语音合成等)的庞大模型。它能够将多种模态的信息进行融合和联合建模,从而实现更复杂、更全面的多模态任务。
传统的自然语言处理模型主要关注文本输入和输出,而多模态大模型扩展了这一概念,将其他类型的输入(如图像、语音等)集成到模型中。
(2) 根据模型工作方式,AI大模型可以分为生成模型和强化学习模型:
 生成模型(Generative Models):
生成模型旨在学习数据的分布,并能够生成新的样本。这些模型通常用于图像生成、文本生成等任务。代表性的生成模型包括GAN(生成对抗网络)和VAE(变分自编码器)。
生成模型是一种机器学习模型,用于生成新的数据样本,这些样本与训练数据具有相似的分布。生成模型通过学习训练数据中的统计规律和潜在结构,能够生成具有类似特征的新数据。生成模型可以用于多种任务,如图像生成、文本生成、音频生成等。它们能够模拟和生成与原始数据相似的样本,从而具有一定的创造性和应用潜力。
 强化学习模型(Reinforcement Learning Models):
强化学习模型通过与环境进行交互,通过试错和奖励机制来提高性能以学习最优策略,以使代理能够在给定的环境中获得最大的累积奖励。强化学习模型是一种机器学习模型,强化学习模型包含的关键要素有环境、状态、行动、奖励、策略、值函数和学习算法。其训练过程通过与环境的交互来不断调整策略和值函数,以最大化累积奖励。模型通过试错和反馈机制来学习,并在不断的探索和利用中提高性能。强化学习模型常用于处理序贯决策问题,如机器人控制、游戏玩法优化等。典型的强化学习模型如Deep Q-Network(DQN)和Proximal Policy Optimization(PPO)等。
(3) 根据模型开发模式,AI大模型可以分为开源大模型和在线大模型:
 开源大模型(Open Source Models):
开源大模型是基于开源软件许可协议发布的大型深度学习模型。通常由研究者、开发者或社区共同开发和维护,并在公开的代码库中提供。优点是可以免费获取和使用,开放的代码使得用户可以自由地查看、修改和定制模型,以适应特定的需求和任务。开源大模型也促进了学术界和业界之间的知识共享和合作。代表模型有Transformers、BERT、ChatGLM
 在线大模型(Online Models):
在线大模型是指部署在云端或网络上的大型机器学习或深度学习模型。这些模型通常由云服务提供商或在线平台提供,并通过接口或API的方式进行访问和使用。在线大模型的优点是用户无需关注底层的硬件和软件架构,只需通过网络请求即可获得模型的预测结果。在线大模型还可以实现实时或按需的模型调用,适用于各种应用场景,如语音识别、图像处理和自然语言处理等。
总而言之,开源大模型和在线大模型都是为了提供大规模机器学习或深度学习模型的访问和使用。开源大模型强调了代码的开放性和自由性,而在线大模型则提供了方便、快速和按需的模型服务。

大模型的演化过程大体可分为预训练、指令微调(instruction tuning)和从人类反馈强化学习三个阶段。预训练是为了得到基座模型;指令微调是为了释放基座模型的能力,使模型可以理解用户指令;从人类反馈强化学习是为了在价值观等方面与人类对齐(alignment)。本文针对以上三个不同阶段的要点总结了一系列经验性理论,旨在帮助开发者和相关科研人员开发和更好地理解大模型。

LoRA 微调

大模型进行 Lora 微调时,需要指定 lora_target,以 LLama2 为例,官方指出可以使用下述层:

--lora_target 'q_proj,v_proj,k_proj,o_proj,gate_proj,down_proj,up_proj'
   #Atom-7B大模型中的参数如下
 --target_modules q_proj,k_proj,v_proj,o_proj,down_proj,gate_proj,up_proj \

参数含义

    --lora_r 8 \
    --lora_alpha 32 \
    --target_modules q_proj,k_proj,v_proj,o_proj,down_proj,gate_proj,up_proj \

--lora_r 是LoRA的秩,也就是微调时使用的低秩矩阵的维度。这个参数越大,表示微调的自由度越高,但也会增加计算量和内存消耗。一般来说,这个参数可以在432之间选择,根据模型的大小和任务的难度调整。
--lora_alpha 是LoRA的正则化系数,也就是微调时对低秩矩阵的惩罚力度。这个参数越大,表示对低秩矩阵的约束越强,可以防止过拟合,但也会降低微调的效果。一般来说,这个参数可以在1664之间选择,根据数据集的大小和复杂度调整。
--target_modules 是LoRA的目标模块,也就是微调时需要替换的模型层。这个参数可以根据不同的模型结构和任务类型选择,一般来说,选择注意力机制或者前馈网络中的线性层比较合适,例如q_proj,k_proj,v_proj,o_proj,down_proj,gate_proj,up_proj等。这些模块的名称可以通过打印模型的结构来查看。

第一步,引进必要的库,如:LoRA 配置类 LoraConfig。

from peft import get_peft_config, get_peft_model, get_peft_model_state_dict, LoraConfig, TaskType

第二步,创建 LoRA 微调方法对应的配置。

peft_config = LoraConfig(
    task_type=TaskType.CAUSAL_LM, 
    inference_mode=False, 
    r=8, 
    lora_alpha=32, 
    lora_dropout=0.1
)

参数说明:

task_type:指定任务类型。如:条件生成任务(SEQ_2_SEQ_LM),因果语言建模(CAUSAL_LM)等。
inference_mode:是否在推理模式下使用Peft模型。
r: LoRA低秩矩阵的维数。关于秩的选择,通常,使用4816即可。
lora_alpha: LoRA低秩矩阵的缩放系数,为一个常数超参,调整alpha与调整学习率类似。
lora_dropout:LoRA 层的丢弃(dropout)率,取值范围为[0, 1)。
target_modules:要替换为 LoRA 的模块名称列表或模块名称的正则表达式。针对不同类型的模型,模块名称不一样,因此,我们需要根据具体的模型进行设置,比如,LLaMa的默认模块名为[q_proj, v_proj],我们也可以自行指定为:[q_proj,k_proj,v_proj,o_proj]。 在 PEFT 中支持的模型默认的模块名如下所示:

TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING = {

    "t5": ["q", "v"],
    "mt5": ["q", "v"],
    "bart": ["q_proj", "v_proj"],
    "gpt2": ["c_attn"],
    "bloom": ["query_key_value"],
    "blip-2": ["q", "v", "q_proj", "v_proj"],
    "opt": ["q_proj", "v_proj"],
    "gptj": ["q_proj", "v_proj"],
    "gpt_neox": ["query_key_value"],
    "gpt_neo": ["q_proj", "v_proj"],
    "bert": ["query", "value"],
    "roberta": ["query", "value"],
    "xlm-roberta": ["query", "value"],
    "electra": ["query", "value"],
    "deberta-v2": ["query_proj", "value_proj"],
    "deberta": ["in_proj"],
    "layoutlm": ["query", "value"],
    "llama": ["q_proj", "v_proj"],
    "chatglm": ["query_key_value"],
    "gpt_bigcode": ["c_attn"],
    "mpt": ["Wqkv"],
}

Transformer的权重矩阵包括Attention模块里用于计算query, key, value的Wq,Wk,Wv以及多头attention的Wo和MLP层的权重矩阵,LoRA只应用于Attention模块中的4种权重矩阵,并且通过消融实验发现同时调整 Wq 和 Wv 会产生最佳结果,因此,默认的模块名基本都为 Wq 和 Wv 权重矩阵。

补充…

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐