五、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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/967905.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微服务与网关

什么是网关 背景 单体项目中,前端只用访问指定的一个端口8080,就可以得到任何想要的数据 微服务项目中,ip是不断变化的,端口是多个的 解决方案:网关 网关:就是网络的关口,负责请求的路由、转发…

Spring Cloud工程完善

目录 完善订单服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 完成商品服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 远程调用 需求 实现 1.定义RestTemplate 2.修改order-service中的OrderService 测试运行 Rest…

网络安全网格架构(CSMA) 网络安全框架csf

CSRF:Cross Site Request Forgy(跨站请求伪造) 用户打开另外一个网站,可以对本网站进行操作或攻击。容易产生传播蠕虫。 CSRF攻击原理: 1、用户先登录A网站 2、A网站确认身份返回用户信息 3、B网站冒充用户信息而不是直接获取用…

数据库系统课设——教务管理系统

目录 前言 一、总体设计 1、知识背景 2、模块介绍(需求分析) 3、设计步骤 3.1 页面原型设计 3.2 前端页面开发 3.3 后端接口开发 3.4 数据库设计 二、详细设计 1、 系统功能模块划分 2、 数据流程图 3、数据库概念结构设计 4、 数据库逻辑…

论文概览 |《Cities》2024.12 Vol.155(上)

本次给大家整理的是《Cities》杂志2024年12月第152期的论文的题目和摘要,一共包括73篇SCI论文!由于论文过多,我们将通过两篇文章进行介绍,本篇文章介绍第1--第30篇论文! 论文1 Digital economy and risk response: How the digita…

FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息?

FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息? 如下图所示,我们打开一个子程序,可以看到程序中的寄存器和IO是显示注释信息的, 如果想关闭注释显示的话,怎么设置? 如下图所示,按下下一页的箭头(NEXT键), 如下图所示,点击“编辑”,在弹出的窗口中,选择“…

[QMT量化交易小白入门]-二十二、deepseek+cline+vscode,让小白使用miniQMT量化交易成为可能

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。 QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通&a…

快速集成DeepSeek到项目

DeepSeek API-KEY 获取 登录DeekSeek 官网,进入API 开放平台 2. 创建API-KEY 复制API-KEY进行保存,后期API调用使用 项目中集成DeepSeek 这里只展示部分核心代码,具体请查看源码orange-ai-deepseek-biz-starter Slf4j AllArgsConstructo…

关于浏览器缓存的思考

问题情境 开发中要实现一个非原生pdf预览功能,pdf链接放在一个固定的后台地址,当重新上传pdf后,预览pdf仍然是上一次的pdf内容,没有更新为最新的内容。 查看接口返回状态码为 200 OK(from disk cache), 表示此次pdf返回…

MAAS | Ollama 搭建本地 AI 大模型 deepseekWeb 界面调用

目录 一、环境准备二、安装 Ollama三、下载并部署 DeepSeek 模型四、简单交互五、通过 Web 界面调用大模型 在当今人工智能快速发展的时代,本地部署大语言模型赋予了用户更高的灵活性和个性化服务体验。本文介绍了如何准备环境、安装Ollama框架、下载并部署DeepSeek…

C++ ——从C到C++

1、C的学习方法 (1)C知识点概念内容比较多,需要反复复习 (2)偏理论,有的内容不理解,可以先背下来,后续可能会理解更深 (3)学好编程要多练习,简…

Baklib助力内容中台实施最佳实践的关键要素与成功案例

内容概要 内容中台的实施对于现代企业在数字化转型过程中具有重要的战略意义。内容中台不仅提升内容管理的效率,还能为企业提供更灵活的内容运营能力。在实施过程中,关键在于了解如何构建有效的架构设计、选择适合的技术、以及促进团队协作。尤其是像Ba…

选择 JxBrowser 还是 SWT Browser

当您需要在 SWT 应用程序中显示网页内容时,通常有两种选择:内置的 Browser 小部件或像 JxBrowser 这样的商业选项。 本文将详细剖析两者之间的差异,帮助您根据自身需求做出正确选择。 简而言之 内置的 Browser 是一个简单但功能可靠的小部…

RoboGrasp:一种用于稳健机器人控制的通用抓取策略

25年1月来自北京大学和哈佛大学的论文“RoboGrasp: A Universal Grasping Policy for Robust Robotic Control”。 模仿学习和世界模型在推进通用机器人学习方面显示出巨大的潜力,而机器人抓取仍然是实现精确操控的关键挑战。现有方法通常严重依赖机械臂状态数据和…

金仓数据库-KingbaseES-学习-01-单机部署(非图形化安装)

目录 一、环境信息 二、介绍 三、下载地址 四、安装步骤 1、配置内核参数 (1)文件系统相关 (2)共享内存与信号量(IPC) (3)网络与端口配置 (4)关键场…

双周报Vol.65:新增is表达式、字符串构造和数组模式匹配增强、IDE模式匹配补全增强...多项技术更新!

MoonBit更新 新增 is 表达式 这个表达式的语法形式为 expr is pat,这个表达式为 Bool 类型,当 expr 符合 pat 这个模式的时候返回 true,比如: fn use_is_expr(x: Int?) -> Unit {if x is Some(i) && i > 10 { .…

【Apache Paimon】-- 作为一名小白,如何系统地学习 Apache paimon?

目录 一、整体规划 1. 了解基本概念与背景 2. 学习资料的选择 3. 学习路径与规划 4. 学习建议 5. 注意事项 6. 参考学习资料 二、详细计划 阶段 1:了解基础(1-2 周) 阶段 2:深入掌握核心功能(3-4 周&#xf…

查出 product 表中所有 detail 字段包含 xxx 的完整记录

您可以使用以下 SQL 查询语句来查出 product 表中所有 detail 字段包含 oss.kxlist.com 的完整记录&#xff1a; SELECT * FROM product WHERE INSTR(detail, oss.kxlist.com) > 0;下面是detail字段包含的完整内容 <p><img style"max-width:100%;" src…

深度剖析责任链模式

一、责任链模式的本质&#xff1a;灵活可扩展的流水线处理 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是行为型设计模式的代表&#xff0c;其核心思想是将请求的发送者与接收者解耦&#xff0c;允许多个对象都有机会处理请求。这种模式完美解决了以下…

大数据项目7:基于大数据的天气数据分析和可视化系统

项目简介 本项目主要研究的内容是基于大数据分析和挖掘的技术&#xff0c;结合海量的天气数据&#xff0c;对异常灾害数据进行分析和预测&#xff0c;发现异常气象中的规律。当下大数据的技术正在高速发展&#xff0c;并且在教育&#xff0c;金融&#xff0c;农业&#xff0c…