欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 五、AIGC大模型_01大模型基础知识

五、AIGC大模型_01大模型基础知识

2025/2/12 12:19:26 来源:https://blog.csdn.net/weixin_43767064/article/details/145581728  浏览:    关键词:五、AIGC大模型_01大模型基础知识

1、基本概念

1.1 定义

目前,谈到大模型,通常都指的是大语言模型(LLMs,即:Large Language Models)

大语言模型是具有大规模参数和复杂计算结构的深度学习模型,通常由深度神经网络构建而成,参数量从数十亿到数千亿不等(甚至更多)

这些模型通过训练海量文本数据来学习语言的语法、语义和语境规则,从而能够生成自然语言文本或理解语言文本的含义

1.2 参数量的重要性

  • 类脑设计视角:参数可以类比为脑细胞,脑细胞越多,模型的“智力”越强,能够处理更复杂的任务

  • 数学视角:从函数的角度看,参数越多,模型能够映射的关系越复杂,从而更好地捕捉数据中的复杂模式

1.3 训练平台

  • 硬件需求:训练大语言模型离不开高性能的GPU,通常需要数百甚至上千个GPU集群(一些大型模型的训练平台可能需要“万卡”级别的GPU支持)

  • 工程挑战:除了硬件资源,训练大模型还需要高效的分布式训练框架和优化算法,以应对大规模数据和复杂模型结构带来的挑战

1.4 训练数据

  • 预训练语料规模:大语言模型通常需要海量的文本数据进行预训练,例如:一些模型可能会使用18T(18万亿字节)级别的语料,相当于3600万本《红楼梦》的量级

  • 数据质量与多样性:除了数据量,数据的质量和多样性也至关重要,高质量的数据可以提高模型的性能和泛化能力,而多样化的数据则有助于模型学习到更广泛的语言模式

1.5 训练时长

  • 传统时长:过去,训练一个大语言模型可能需要3到6个月

  • 当前进展:随着技术的进步,训练时长已经大幅缩短,现在可能只需要1到2个月(甚至更短),这主要得益于更高效的训练算法、硬件性能的提升以及分布式训练技术的发展

2、小模型时代与大模型时代的对比

  • 小模型时代

    • 单一职责原则:每个模型通常针对一个特定的场景或任务进行设计和训练,例如:一个用于文本分类的模型、一个用于机器翻译的模型等,每个模型都有独立的数据集、训练过程、评估方法、部署方式和维护策略

    • 系统架构:一个系统中可能挂载多个微服务,每个微服务对应一个或几个小模型(这种架构的优点是每个模型可以针对特定任务进行优化,但缺点是系统复杂度高,维护成本高,且难以实现跨任务的知识共享)

  • 大模型时代

    • 大一统:一个系统中通常挂载一个大模型,通过指令遵循,大模型可以同时解决多种不同的问题,例如:同一个大语言模型可以用于文本生成、问答、翻译等多种自然语言处理任务

    • 多模态大模型:除了单纯处理文本或图像等单一模态数据,大模型还可以发展为多模态大模型,这种模型能够同时处理文本、图像、音频等多种数据类型,实现对多模态信息的综合理解和分析

3、生成式人工智能与判别式人工智能

生成式人工智能与判别式人工智能是两种常见的人工智能建模方法,他们的区别如下:

  • 生成式人工智能(Generative AI)

    • 定义:生成式人工智能是指能够生成新的数据样本(如文本、图像、音频等)的人工智能模型,这些模型通过学习数据的分布,生成与训练数据相似但又不完全相同的新内容

    • 特点:具有创作性和生成性,能够创造出全新的内容,例如:大语言模型可以根据用户输入的提示生成连贯的文本(随着生成式人工智能的发展,如何实现人机协同成为下一步的重点,人机协同是指人类与人工智能系统之间相互协作,共同完成任务,例如:在创意写作中,人类可以利用生成式人工智能提供的文本片段进行进一步的创作和编辑)

  • 判别式人工智能

    • 定义:判别式人工智能主要用于对已有的数据进行分类、识别或判断,例如:图像识别模型判断一张图片中的物体类别,文本分类模型判断一段文本的主题

    • 特点:更侧重于对输入数据的分析和判断,而不是生成新的内容

4、大模型三大架构

大模型的工作原理离不开编码器和解码器,由此产生了“编码器-解码器”、“仅编码器”、“仅解码器”这三大典型的架构

4.1 Encoder-Decoder架构

  • 架构特点:由编码器(Encoder)和解码器(Decoder)组成,编码器负责对输入序列进行编码以提取特征,解码器则根据编码器的输出生成目标序列,两者通过交叉注意力机制相连

  • T5模型:是该架构的典型代表,由Google开发,它将所有自然语言处理任务统一为文本到文本的转换任务,例如将机器翻译任务转化为“输入英文,输出中文”的格式,T5模型通过增加Transformer的层数和参数量来提升性能,但并非完全淘汰,仍有一些任务适合使用该架构

  • 优势:能够同时处理输入和输出序列,适用于需要对输入进行理解和转换的任务,如机器翻译、文本摘要等

  • 局限性:相比其他架构,模型结构相对复杂,训练和推理成本较高

4.2 Decoder-Only架构

  • 架构特点:仅使用解码器部分,通过自回归的方式逐词生成文本,即在生成下一个词时只能看到之前生成的词

  • LLaMA架构:是该架构的代表之一,由Meta开发,LLaMA2在多个方面进行了改进,例如采用RMSNorm归一化函数和SwiGLU激活函数,此外,LLaMA2还引入了RoPE位置编码,以更好地处理长序列数据

  • 千问系列、豆包、星火、kimi、DeepSeek等:这些模型也采用了Decoder-Only架构,专注于生成任务,能够生成流畅且连贯的文本

  • 优势:模型结构简单,训练和推理效率较高,适合大规模生成任务,如文本创作、代码生成等

  • 局限性:由于只能看到之前的内容,对上下文的理解可能不如Encoder-Decoder架构全面

4.3 GLM(Prefix-Encoder-Only)架构

  • 架构特点:融合了BERT的双向编码器和GPT的自回归解码器的优势,在理解上文时,利用双向编码器能够充分考虑上下文信息,而在生成下文时,又具备强大的自回归生成能力

    • BERT双向编码器: BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer架构的多层神经网络,每一层神经网络都包含自注意力机制(Self-Attention)和前馈网络(Feed-Forward Network),BERT的自注意力机制是双向的,即在计算某个词的表示时,会同时考虑该词左侧和右侧的所有词

    • GPT自回归解码器: GPT(Generative Pre-trained Transformer)也是基于Transformer架构的多层神经网络,每一层同样包含自注意力机制和前馈网络,与BERT不同的是,GPT的自注意力机制是单向的,即在计算某个词的表示时,只能看到该词左侧的词,而不能看到右侧的词

  • 优势:兼具文本理解和生成的能力,能够更好地处理需要同时考虑上下文和生成连贯文本的任务

  • 局限性:这种混合结构相对复杂,可能在训练和优化上面临一定的挑战

4.4 适用场景

  • Encoder-Decoder架构适用于需要对输入进行理解和转换的任务,如机器翻译、文本摘要等

  • Decoder-Only架构是目前的主流架构,适合大规模生成任务,如文本创作、代码生成等

  • GLM架构则兼具文本理解和生成的能力,适用于需要同时考虑上下文和生成连贯文本的任务

5、简单测试

5.1 准备工作

从魔搭社区(https://www.modelscope.cn/models)下载ChatLM-mini-Chinese和Qwen2.5-0.5B-Instruct这两个模型文件,分别用于Encoder-Decoder架构和Decoder-Only架构的简单demo演示

下载后与代码文件放到同级目录下即可

5.1 Encoder-Decoder架构(ChatLM-mini-Chinese)示例

# huggingface核心库 —— transformers
# 加载分词器
from transformers import AutoTokenizer
# 加载 Seq2Seq 类型的大模型
from transformers import AutoModelForSeq2SeqLM
# 深度学习框架
import torch # 定义选用哪个模型
model_name = 'ChatLM-mini-Chinese'
# 设备判断
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
# 实例化分词器
tokenizer = AutoTokenizer.from_pretrained(model_name)
# 实例化模型
model = AutoModelForSeq2SeqLM.from_pretrained(model_name, trust_remote_code=True).to(device)
# 查看模型结构
print(model)# 定义与模型交互的输入文本
txt = '请把下面的话翻译为英语:你好吗?'
# 用分词器处理输入文本
encode_ids = tokenizer([txt])
# 查看处理后的内容
# tokenizer([txt]) 返回一个字典,包含 input_ids 和 attention_mask 等键
#     input_ids:文本被分词后对应的 token ID 列表
#     attention_mask:用于指示哪些位置是有效的文本(值为1),哪些是填充的(值为0)
encode_ids# 将分词器返回的 input_ids 和 attention_mask 转换为 PyTorch 的张量,以便在模型中使用
input_ids =  torch.LongTensor(encode_ids['input_ids'])
attention_mask = torch.LongTensor(encode_ids['attention_mask'])# 调用模型的 my_generate 方法生成文本
outs = model.my_generate(# input_ids和attention_mask数据搬家input_ids=input_ids.to(device),attention_mask=attention_mask.to(device),# 设置生成文本的最大长度max_seq_len=512,# 指定生成方法为 beam search,这是一种通过维护多个候选序列来提高生成质量的方法search_type='beam'
)# tokenizer.batch_decode:将生成的 token ID 列表解码为可读的文本
#     outs.cpu().numpy():将生成的张量从 GPU(如果有)移动到 CPU,并转换为 NumPy 数组
#     skip_special_tokens=False:保留特殊标记(如 [CLS]、[SEP] 等)
#     clean_up_tokenization_spaces=False:保留分词后的空格
outs_txt = tokenizer.batch_decode(outs.cpu().numpy(), skip_special_tokens=False, clean_up_tokenization_spaces=False)
# 打印生成的第一条文本
print(outs_txt[0])

5.3 Decoder-Only架构(Qwen2.5-0.5B-Instruct)示例

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch# 定义选用哪个模型(填写模型id)
model_name = "Qwen2.5-0.5B-Instruct"
# 设备判断
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
# 实例化分词器
tokenizer = AutoTokenizer.from_pretrained(model_name)
# 实例化模型
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True).to(device)
# 查看模型结构
print(model)"""为方便编程,先构建消息列表- system: 系统角色- user:用户角色- assistant:大模型角色
"""
messages = [{"role": "system", "content": "你是一个有用的助手!"},{"role": "user", "content": "你是谁?"}
]"""把消息列表通过对话模版,变成一句话
"""
text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True
)
print(text)# 对输入文本进行分词并转换为张量
encode_ids = tokenizer([text], return_tensors="pt").to(model.device)# 调用模型的 generate 方法生成文本
outs = model.generate(encode_ids.input_ids,max_new_tokens=512
)# 提取生成的文本
outs = [output_ids[len(input_ids):] for input_ids, output_ids in zip(encode_ids.input_ids, outs)
]# 解码生成的文本
response = tokenizer.batch_decode(outs, skip_special_tokens=True)[0]
print(response)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com