【大模型】7 天 AI 大模型学习

7 天 AI 大模型学习 Day 2

今天是 7 天AI 大模型学习的第二天 😄,今天我将会学习 Transformer 、Encoder-based and Decoder-Based LLMs 等 。如果有感兴趣的,就和我一起开始吧 ~
课程链接 :2025年快速吃透AI大模型,7天学完,让你面试少走99%弯路!!

文章目录

  • 7 天 AI 大模型学习 Day 2
  • 前言
  • BPE —— Byte Pair Encoding Tokenizer
    • 核心
    • 构造过程
    • 例:一个简单的 corpus
  • Attention
    • 三种不同的 Attention
    • 基本的 Attention 实现方式
    • Encoder Self-Attention
    • Decoder Self-Attention
    • Encoder-Decoder Self-Attention
    • Masked Matrix 如何融合到不同实现中
    • 总结三种Attention
    • Layer Normalization
  • Decoding - output the next word
    • Greedy Decoding
    • Beam search
    • Label smoothing
      • 如何计算 loss
      • 什么是Label smoothing
  • Encoder and Decoder Based Models
    • Decoder Only
    • Pretrain & Fine-tune (SFT)
    • Encoder-Based LLM Model:BERT
  • Advance Topics
    • Absolute Position Embedding
    • Rotary Position Embedding 旋转编码
    • Flash Attention
  • 作业

前言

今天,我们会学习如下内容:

  1. Transformer
  • BPE
  • Attention
  • Layer Normalization
  • 输出单词 —— Greedy Decoding / Beam Search
  • Label smoothing
  • Code for Transformer
  1. Encoder-based and Decoder-Based LLMs
  • Encoder-based LLM
  • Decoder-Based LLM
  1. 其他
  • 旋转编码 Rotary Position Encoding
  • Flash Attention
  1. 作业

BPE —— Byte Pair Encoding Tokenizer

BPE(Byte Pair Encoding) 是一种基于频率的分词(tokenization)算法,最初用于数据压缩,但后来被广泛应用于自然语言处理(NLP)中,尤其是在词汇表构建和子词级别的分词任务中。BPE 的核心思想是通过迭代地合并频率最高的字节对(或字符对),以生成一个新的、更简洁的词汇表,从而优化文本的表示。它通常用于处理语言模型中的稀有词汇和未登录词(OOV,Out-Of-Vocabulary words)问题。
BPE 被广泛应用于现代 NLP 模型中,尤其是神经网络和预训练模型(如 BERT、GPT 等)的训练过程中。例如,GPT-2 和 GPT-3 就是采用了类似 BPE 的子词分词方法来处理输入文本。
BPE 通过减少稀有词汇的数量,并将词汇表限制在较小的规模内,从而提升了模型的训练效率和文本生成能力。

Vocabulary(词汇表)
Vocabulary 是指模型所能理解和使用的所有词汇或符号的集合。在自然语言处理(NLP)中,词汇表通常是指一组所有可能的token(分词单位)。token可以是单词、子词、或者字符,具体取决于采用的分词策略。
词汇表的构建通常是基于一份大型文本数据(corpus),通过统计频率,选择出现次数较多的词汇构建一个有限的词汇集合。词汇表的大小(例如10,000个词、50,000个词等)通常是根据特定任务和计算资源的需求来设定的。
词汇表包含的信息:通常,每个token在词汇表中都有一个唯一的编号,称为词ID,模型可以使用这些ID来表示文本中的各个token。

Tokenization(分词)
Tokenization 是指将原始文本(通常是句子或文档)切分成一系列有意义的tokens(单位),这些token可以是单词、子词或字符。具体的tokenization策略决定了最终文本如何被分解成token。
例如,对于句子 “I love natural language processing”,可能的token化结果有:
基于单词的tokenization:[‘I’, ‘love’, ‘natural’, ‘language’, ‘processing’]
基于子词的tokenization:[‘I’, ‘lov’, ‘e’, ‘natu’, ‘ral’, ‘lan’, ‘guage’, ‘pro’, ‘cessing’](使用像BPE这样的算法)
基于字符的tokenization:[‘I’, ’ ', ‘l’, ‘o’, ‘v’, ‘e’, ’ ', ‘n’, ‘a’, ‘t’, ‘u’, ‘r’, ‘a’, ‘l’, …]
tokenization 的目的是将原始文本转化为计算机可以处理的、更小的单元。词汇表在这个过程中起着关键作用。

核心

  • 根据数据做 tokenize
  • Subword Tokenization
  • 英语上可以包含 subword , -est OR -er

构造过程

  • 语料库作为输入,从而学习词库
  1. 初始化:首先,将输入文本拆分成字符级别的token(符号)。例如,输入句子“low”会被拆分成 [‘l’, ‘o’, ‘w’]。

  2. 统计频率:计算文本中所有字符对的出现频率。例如,在句子“low”中,字符对可能是 (l, o) 和 (o, w)。

  3. 合并最频繁的字符对:找到出现频率最高的字符对,并将它们合并为一个新的单一符号。例如,如果字符对 (l, o) 是最常见的,就将其合并成一个新的 token (lo)。

  4. 重复以上过程:继续合并最频繁的字符对,直到达到预设的词汇表大小或满足其他停止条件。

  5. 最终词汇表:合并的结果将形成一个新的词汇表,这个词汇表是由频繁的子词或字符对组成的。

在这里插入图片描述
重复上述过程,词库中词越来越多

在这里插入图片描述

例:一个简单的 corpus

Corpus(复数形式:Corpora)是指一组有组织的、用于语言学研究或自然语言处理(NLP)任务的文本数据集合。它可以包括任何形式的语言数据,如书籍、文章、对话、网页内容等,通常以原始文本或经过标注的文本形式存在。Corpus 通常用于语言模型的训练、语法分析、词汇统计等任务。
在这里插入图片描述
在这里插入图片描述

  1. er 出现次数最多,将 er merge 为一个新的 token,加入 vocabulary 中

在这里插入图片描述
得到 vocabulary 后,根据 vocabulary 做 tokenization 。在处理文本时,使用构建好的词汇表将原始文本转化为token(通常是数字ID),并将每个token映射到词汇表中的一个元素。这是tokenization的核心过程。


Attention

三种不同的 Attention

在这里插入图片描述

基本的 Attention 实现方式

输入 x —— > 内积 WQ WK WV ——> 得到 Q K V 矩阵

在这里插入图片描述

  • attention score 矩阵
    在这里插入图片描述

在这里插入图片描述

def compute_attention_score(Q, K, V, mask, dim):
	return Q * K^T / dim ^ 1/2 * V

Encoder Self-Attention

在这里插入图片描述

  • 对每个词都需要计算其他词对它的影响

Decoder Self-Attention

在这里插入图片描述

  • 对每个词,只能看前一个词对它的影响

Encoder-Decoder Self-Attention

在这里插入图片描述

Masked Matrix 如何融合到不同实现中

在这里插入图片描述

  • M如何定义 ? 见上文
    在这里插入图片描述
  • Padding 的影响
    在这里插入图片描述
  • 有 Padding 情况下,mask 矩阵如下

padding 位置为 mask 矩阵值为负无穷

总结三种Attention

在这里插入图片描述
—— 微调部分基础

Layer Normalization

作用:

  • 归一化
  • 数值区间控制
  • 稳定学习 stable learn

对每一行做一个 normalize

  • 定义
    在这里插入图片描述
  • normalize 计算过程

在这里插入图片描述

  • 最终输出格式
    在这里插入图片描述

Decoding - output the next word

  • 将最后的概率最大的单词输出
    在这里插入图片描述

Greedy Decoding

将概率最大的单词输出
在这里插入图片描述
问题:

  • 概率最大的不一定是最好的
  • 前面的输出会影响后面的输出,如果前面输出错了,对后面影响大

Beam search

Beam Size(3) <= Top 3 —— K = 3

  • 不只是考虑最好的一个,而是考虑最好的三个
  • 时间复杂度 K^2 * T (length)
    在这里插入图片描述
    —— 通过控制 Decoder 可以进行模型控制 , 模型优化

Label smoothing

在这里插入图片描述

如何计算 loss

在这里插入图片描述

什么是Label smoothing

在这里插入图片描述

  • 希望得到的 y 的预测值就是和真实的 y 一样

  • 逆推 会出现数值的 unstable —— 训练的 unstable —— 如何解决
    在这里插入图片描述

  • Label smoothing - 让原有的向量不那么极端
    在这里插入图片描述

比较好的代码 : https://colab.research.google.com/github/harvardnlp/annotated-transformer/blob/master/AnnotatedTransformer.ipynb#scrollTo=9a429510


Encoder and Decoder Based Models

  • 主要还是 Decoder-Based
    在这里插入图片描述

Decoder Only

self-supervised learning
在这里插入图片描述

Pretrain & Fine-tune (SFT)

  • Fine-tune : 只计算 output 的 loss
    在这里插入图片描述

Encoder-Based LLM Model:BERT

逻辑:完形填空 , mask 掉一些单词,让 bert 去填空
在这里插入图片描述
模型本身不是为生成问题而生的,所以没有 GPT 时候生成。对一些分类任务效果好。


Advance Topics

Absolute Position Embedding

问题:随着 m 的增大,位置变化没有规律

Rotary Position Embedding 旋转编码

能刻画出一些相对的位置差异
在这里插入图片描述

  • 如何计算
    在这里插入图片描述
  • 扩展到高纬
    在这里插入图片描述

Flash Attention

优点:

  1. 计算快
  2. 节省显存
  3. 精准注意力
  • 减少在 HBM 和 SRAM 中切换到时间
    在这里插入图片描述
    在这里插入图片描述
  • 核心思想
    在这里插入图片描述
    每个模块单独处理,减少和显存的操作

作业

  1. 读懂代码,在少量数据上训练 + finetune github.com/karpathy/nanoGPT/tree/master
  2. 读懂文章及其开源代码 https://arxiv.org/abs/2309.10305

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

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

相关文章

Vue3 中的插槽

Vue3 中插槽的使用&#xff0c;插槽是 Vue 中的一个特别特性&#xff0c;插槽就是模版内容。例如<h1>标题 1</h1>标题 1 就是插槽&#xff0c;Vue 是无法识别模板内容的&#xff0c;只能通过属性进行传递。Slot 主要包括默认、具名和作用域。Slot开发起来难度不大&…

JAVA-制作小游戏期末实训

源码 import game.frame.Frame;public class App {public static void main(String[] args) {System.out.println("starting......");new Frame();} } package game.controller;import game.model.Enemy;public class EnemyController implements Runnable{private…

Linux Red Hat 7.9 Server安装GitLab

1、关闭防火墙 执行 systemctl disable firewalld 查看服务器状态 systemctl status firewalld 2、禁用selinux vi /etc/selinux/config 将SELINUX 的值改为 disabled 3、安装policycoreutils-python 执行 yum install policycoreutils-python 4、下载gitlab wget --co…

Windows 环境配置 HTTPS 服务实战

一、 环境准备 win10以上操作系统安装 Certbot申请阿里云\腾讯云域名安装 nginx 1.3以上版本 二、Certbot 安装及 SSL 证书生成 Certbot 是一个免费、开源工具&#xff0c;用于自动化在Web服务器上获取和更新SSL/TLS证书。它可以通过Let’s Encrypt服务获取免费的SSL/TLS证书…

普及组集训数据结构--并查集

P1551 亲戚 - 洛谷 | 计算机科学教育新生态 并查集就是把所有相关联的量串成一串珠子&#xff0c;抽象来说就是&#xff1a; 把此类相关联的量当作节点&#xff0c;两个节点之间连接一条无向边&#xff0c;所形成的图 例题算法流程&#xff1a; 在此定义“族长”就是一个树的…

windows编译llama.cpp GPU版本

Build 指南 https://github.com/ggerganov/llama.cpp/blob/master/docs/build.md 一、Prerequire 具体步骤&#xff08;以及遇到的坑&#xff09;&#xff1a; 如果你要使用CUDA&#xff0c;请确保已安装。 1.安装 最新的 cmake, git, anaconda&#xff0c; pip 配置pyt…

Android 性能优化:内存优化(实践篇)

1. 前言 前一篇文章Android性能优化&#xff1a;内存优化 &#xff08;思路篇&#xff09; 大概梳理了Android 内存原理和优化的必要性及应该如何优化&#xff0c;输出了一套短期和长期内存优化治理的SOP方案。 那么这一篇文章就总结下我最近在做内存优化如何实践的&#xff0…

「Mac畅玩鸿蒙与硬件53」UI互动应用篇30 - 打卡提醒小应用

本篇教程将实现一个打卡提醒小应用&#xff0c;通过用户输入时间进行提醒设置&#xff0c;并展示实时提醒状态&#xff0c;实现提醒设置和取消等功能。 关键词 打卡提醒状态管理定时任务输入校验UI交互 一、功能说明 打卡提醒小应用包含以下功能&#xff1a; 提醒时间输入与…

Nginx知识详解(理论+实战更易懂)

目录 一、Nginx架构和安装 1.1 Nginx 概述 1.1.1 nginx介绍 1.1.2?Nginx 功能介绍 1.1.3?基础特性 1.1.4?Web 服务相关的功能 1.2?Nginx 架构和进程 1.2.1?Nginx 进程结构 1.2.2?Nginx 进程间通信 1.2.3?Nginx 启动和 HTTP 连接建立 1.2.4?HTTP 处理过程 1…

Postgresql 命令还原数据库

因为PgAdmin打不开&#xff0c;但是数据库已经安装成功了&#xff0c;这里借助Pg命令来还原数据库 C:\Program Files\PostgreSQL\15\bin\psql.exe #链接数据库 psql -U postgres -p 5432#创建数据库 CREATE DATABASE "数据库名称"WITHOWNER postgresENCODING UTF8…

Vue 解决浏览器刷新路由参数丢失问题 全局统一配置无需修改组件

在路由跳转的时候,我们经常会传一些参数过去,然后通过传过来的参数调用接口获取相关数据,但是刷新浏览器的时候路由参数会丢失。此时页面报错误了,如何通过全局配置的方式,不需要修改任何组件 实现刷新浏览器保存参数? 实现方式如下: 首先在router/index.js里添加参数管…

【AIGC】电话录音转文字实践:基于Google Cloud Speech-to-Text-v1的技术方案Python

文章目录 引言技术原理技术方案设计系统架构关键技术要点 代码实现1. 环境准备2. 核心代码实现3. 音频预处理工具响应格式 性能优化实践经验应用场景未来展望总结 引言 在当今数字化时代&#xff0c;将语音内容转换为文字已经成为一个非常重要的技术需求。无论是客服通话记录、…

RabbitMQ-基本使用

RabbitMQ: One broker to queue them all | RabbitMQ 官方 安装到Docker中 docker run \-e RABBITMQ_DEFAULT_USERrabbit \-e RABBITMQ_DEFAULT_PASSrabbit \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network mynet\-d \rabbitmq:3…

Android Camera压力测试工具

背景描述&#xff1a; 随着系统的复杂化和业务的积累&#xff0c;日常的功能性测试已不足以满足我们对Android Camera相机系统的测试需求。为了确保Android Camera系统在高负载和多任务情况下的稳定性和性能优化&#xff0c;需要对Android Camera应用进行全面的压测。 对于压…

vscode中调用deepseek实现AI辅助编程

来自 Python大数据分析 费弗里 1 简介 大家好我是费老师&#xff0c;最近国产大模型Deepseek v3新版本凭借其优秀的模型推理能力&#xff0c;讨论度非常之高&#x1f525;&#xff0c;且其官网提供的相关大模型API接口服务价格一直走的“价格屠夫”路线&#xff0c;性价比很高…

基于 LMS 算法的离散傅里叶分析器

基于 LMS&#xff08;Least Mean Squares&#xff0c;最小均方&#xff09;算法的离散傅里叶分析器是一种结合自适应滤波和频域分析的工具&#xff0c;用于动态估计信号的频谱成分。它将 LMS 自适应算法与离散傅里叶变换&#xff08;DFT&#xff09;的频率分解能力结合&#xf…

2022浙江大学信号与系统笔记

原视频地址&#xff1a;2022浙江大学信号与系统&#xff08;含配套课件和代码&#xff09; - 胡浩基老师-哔哩哔哩 ⭐⭐⭐ 我的笔记&#xff1a;飞书链接 - 信号与系统 基于视频&#xff0c;记得笔记&#xff0c;加了点自己的补充&#xff08;有的是问 ChatGPT 的&#xff09;…

K8s高可用集群之Kubernetes集群管理平台、命令补全工具、资源监控工具部署、常用命令

K8s高可用集群之Kubernetes管理平台、补全命令工具、资源监控工具部署 1.Kuboard可视化管理平台2.kubectl命令tab补全工具3.MetricsServer资源监控工具4.Kubernetes常用命令 1.Kuboard可视化管理平台 可以选择安装k8s官网的管理平台&#xff1b;我这里是安装的其他开源平台Kub…

Gitlab-runner 修改默认的builds_dir并使用custom_build_dir配置

gitlab-runner 修改默认的builds_dir并使用custom_build_dir配置 1. 说明2. 实操&#xff08;以docker执行器为例&#xff09;2.1 修改默认的builds_dir2.1.1 调整gitlab-runner的配置文件2.1.2 CI文件 2.2 启用custom_build_dir2.2.1 调整gitlab-runner的配置文件2.2.2 CI文件…

网络IP协议

IP&#xff08;Internet Protocol&#xff0c;网际协议&#xff09;是TCP/IP协议族中重要的协议&#xff0c;主要负责将数据包发送给目标主机。IP相当于OSI&#xff08;图1&#xff09;的第三层网络层。网络层的主要作用是失陷终端节点之间的通信。这种终端节点之间的通信也叫点…