当前位置:   article > 正文

大模型标记器 Tokenizer之Byte Pair Encoding (BPE) 算法详解与示例

byte pair encoding

LlaMA 3 系列博客

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (一)

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (二)

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (三)

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (四)

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (五)

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (六)

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (七)

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (八)

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (九)

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (十)
构建安全的GenAI/LLMs核心技术解密之大模型对抗攻击(一)

构建安全的GenAI/LLMs核心技术解密之大模型对抗攻击(二)

构建安全的GenAI/LLMs核心技术解密之大模型对抗攻击(三)

构建安全的GenAI/LLMs核心技术解密之大模型对抗攻击(四)

构建安全的GenAI/LLMs核心技术解密之大模型对抗攻击(五)

大模型标记器之Tokenizer可视化(GPT-4o)

Byte Pair Encoding (BPE) 算法详解与示例

Byte Pair Encoding(BPE)是一种用于自然语言处理中的词汇编码技术,尤其在机器翻译领域中被广泛使用。BPE算法通过迭代合并训练语料中出现的字符对来构建词汇表,从而减少词汇表的大小并保持语言的连贯性。

BPE 算法的基本步骤

  1. 初始化词汇表:将所有单独字符作为初始词汇表。
  2. 重复合并:选择训练语料中最常见的两个相邻符号,将它们合并为一个新的符号,并添加到词汇表中。
  3. 替换语料:在语料中将这对相邻符号替换为新合并的符号。
  4. 终止条件:直到完成k次合并。

BPE 算法的代码

function BYTE_PAIR_ENCODING(strings C, number of merges k) returns vocab V
    V = all unique characters in C  # 初始化词汇表为字符集
    for i = 1 to k do  # 进行k次合并
        tL, tR = Most frequent pair of adjacent tokens in C  # 最频繁的相邻字符对
        tNEW = tL + tR  # 通过拼接生成新标记
        V = V + tNEW  # 更新词汇表
        Replace each occurrence of tL, tR in C with tNEW  # 在语料中替换字符对
    return V
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

字节对编码(BPE):从原始文本处理到新文本标记化

本文将深入探讨字节对编码(Byte-Pair Encoding,BPE)的处理过程,从处理原始训练文本和预标记化到构建词汇表和标记化新文本。

背景

标记化是自然语言处理(NLP)中的一项基本过程,它涉及将文本序列分解为更小、更易管理的单元,称为标记(tokens)。存在各种标记化方法,每种方法都有其独特的处理方式和应用场景:

  • 单词标记化:这种方法根据分隔符将文本分解为单独的单词。它简单直接,但可能难以处理大量词汇。
  • 字符标记化:这种方法将文本分解为单个字符。尽管它大幅减少了词汇量,但经常无法捕捉到更长单词序列的语义含义。
  • 子词标记化:这种方法在单词和字符标记化之间取得了平衡。它将文本分解为子词,这些子词比单个字符大,但比整个单词小。原则上,这种方法保持频繁使用的单词的完整形式,但将不常见的单词分解为更有意义的子词。

字节对编码(BPE)是子词标记化的一个示例。在接下来的部分中,我们将深入探讨BPE的具体细节。

字节对编码(BPE)

字节对编码最初在1994年作为一种简单的数据压缩技术被引入,通过迭代替换序列中最频繁出现的字节对来实现。它已经被改编用于自然语言处理,特别是用于标记化。在这里,BPE不是合并字节,而是合并频繁出现的字符或字符序列。

预标记化

BPE依赖于一个预标记化步骤,该步骤首先将训练文本分割成单词。例如,考虑以下示例文本:

“low low low low low lower lower newest newest newest newest newest newest widest widest widest”

预标记化可以像空格标记化一样简单,也可以是更高级的基于规则的方法。关键步骤是基于空格将文本分割成单词,并在每个单词后附加一个特殊的词尾符号‘_’。这个符号很重要,因为它标记了单词边界,防止算法将一个单词的结尾与另一个单词的开头混淆。

接下来,我们统计文本中每个唯一单词的频率。以我们的示例为例,我们将得到以下唯一单词及其相应频率的集合:

(low_: 5, lower_: 2, newest_: 6, widest_: 3)

这个集合由BPE用来构建词汇表,我们将在下一部分讨论。

字节对编码算法概述

字节对编码由两个主要阶段组成:

  • 词汇表构建:这个阶段采用单词集合及其频率,通过反复合并最频繁的字符对或标记对,逐步构建一组词汇表(标记)。
  • 标记化:这个阶段使用构建的词汇表和学习的合并规则来标记化新文本。它通过将新文本分解为词汇表构建阶段识别的标记来实现。

在接下来的部分中,我们将更详细地探讨每个阶段。

词汇表构建

词汇表构建涉及以下步骤,使用从预标记化中获得的唯一单词及其频率集合:

(low_: 5, lower_: 2, newest_: 6, widest_: 3)

  1. 基础词汇创建
    从单词集合中创建包含所有唯一符号(字符)的基础词汇表:

    vocabs = (l, o, w, e, r, n, s, t, i, d, _)

  2. 使用基础词汇表示单词
    使用基础词汇表中的符号表示每个单词:

    ((l, o, w, _): 5, (l, o, w, e, r, _): 2, (n, e, w, e, s, t, _): 6, (w, i, d, e, s, t, _): 3)

  3. 词汇合并
    逐步合并最频繁的符号对:

    合并1:合并最频繁的一对(e, s),出现9次(6+3),形成新合并的符号‘es’。更新词汇表并替换每一对(e, s)为‘es’:

    vocabs = (l, o, w, e, r, n, s, t, i, d, _, es)

    ((l, o, w, _): 5, (l, o, w, e, r, _): 2, (n, e, w, es, t, _): 6, (w, i, d, es, t, _): 3)

    合并2:合并最频繁的一对(es, t),出现9次(6+3),形成新合并的符号‘est’。更新词汇表并替换每一对(es, t)为‘est’:

    vocabs = (l, o, w, e, r, n, s, t, i, d, _, es, est)

    ((l, o, w, _): 5, (l, o, w, e, r, _): 2, (n, e, w, est, _): 6, (w, i, d, est, _): 3)

    合并3:合并最频繁的一对(est, ),出现9次(6+3),形成新合并的符号‘est’。更新词汇表并替换每一对(est, )为‘est’:

    vocabs = (l, o, w, e, r, n, s, t, i, d, , es, est, est)

    ((l, o, w, ): 5, (l, o, w, e, r, ): 2, (n, e, w, est): 6, (w, i, d, est): 3)

    合并4:合并最频繁的一对(l, o),出现7次(5+2),形成新合并的符号‘lo’。更新词汇表并替换每一对(l, o)为‘lo’:

    vocabs = (l, o, w, e, r, n, s, t, i, d, , es, est, est, lo)

    ((lo, w, ): 5, (lo, w, e, r, ): 2, (n, e, w, est): 6, (w, i, d, est): 3)

    合并5:合并最频繁的一对(lo, w),出现7次(5+2),形成新合并的符号‘low’。更新词汇表并替换每一对(lo, w)为‘low’:

    vocabs = (l, o, w, e, r, n, s, t, i, d, , es, est, est, lo, low)

    ((low, ): 5, (low, e, r, ): 2, (n, e, w, est): 6, (w, i, d, est): 3)

  4. 最终词汇表与合并规则
    继续合并,直到达到所需的词汇表大小。在我们五次合并后,最终词汇表和合并规则将是:

    vocabs = (l, o, w, e, r, n, s, t, i, d, , es, est, est, lo, low)

    (e, s) → es, (es, t) → est, (est, ) → est, (l, o) → lo, (lo, w) → low

标记化新文本

字节对编码中的标记化过程使用构建的词汇表和学习的合并规则来标记化新文本。让我们标记化一个示例新文本:

“newest binded lowers”

  1. 新文本的预标记化
    类似于初始步骤,我们通过将新文本分割成单词并附加词尾符号‘_’来进行预标记化。预标记化后的文本是:

    (newest_, binded_, lowers_)

  2. 应用合并规则
    我们首先将预标记化后的文本分解为字符:

    ((n, e, w, e, s, t, _), (b, i, n, d, e, d, _), (l, o, w, e, r, s, _))

    然后,我们按照学习的顺序应用合并规则。在我们的例子中,顺序是:

    (e, s) → es, (es, t) → est, (est, ) → est, (l, o) → lo, (lo, w) → low

    应用合并规则 (e, s) → es:
    ((n, e, w, es, t, _), (b, i, n, d, e, d, _), (l, o, w, e, r, s, _))

    应用合并规则 (es, t) → est:
    ((n, e, w, est, _), (b, i, n, d, e, d, _), (l, o, w, e, r, s, _))

    应用合并规则 (est, ) → est
    ((n, e, w, est_), (b, i, n, d, e, d, _), (l, o, w, e, r, s, _))

    应用合并规则 (l, o) → lo:
    ((n, e, w, est_), (b, i, n, d, e, d, _), (lo, w, e, r, s, _))

    应用合并规则 (lo, w) → low:
    ((n, e, w, est_), (b, i, n, d, e, d, _), (low, e, r, s, _))

    不在词汇表中的任何标记将被替换为未知标记“[UNK]”:

    vocabs = (l, o, w, e, r, n, s, t, i, d, , es, est, est, lo, low)

    ((n, e, w, est_), ([UNK], i, n, d, e, d, _), (low, e, r, s, _))

  3. 标记化结果
    新文本被标记化为以下序列:

    “newest binded lowers” =

    [n, e, w, est_, [UNK], i, n, d, e, d, _, low, e, r, s, _]

    通过这个过程,BPE使用词汇表和合并规则有效地标记化新文本,包括使用未知标记处理未知单词或子词。

实现说明

这里对字节对编码(BPE)算法的描述旨在清晰和理解。在实践中,BPE的实现可以比所描述的逐步方法优化得多。

大模型技术分享

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

《企业级生成式人工智能LLM大模型技术、算法及案例实战》线上高级研修讲座

模块一:Generative AI 原理本质、技术内核及工程实践周期详解
模块二:工业级 Prompting 技术内幕及端到端的基于LLM 的会议助理实战
模块三:三大 Llama 2 模型详解及实战构建安全可靠的智能对话系统
模块四:生产环境下 GenAI/LLMs 的五大核心问题及构建健壮的应用实战
模块五:大模型应用开发技术:Agentic-based 应用技术及案例实战
模块六:LLM 大模型微调及模型 Quantization 技术及案例实战
模块七:大模型高效微调 PEFT 算法、技术、流程及代码实战进阶
模块八:LLM 模型对齐技术、流程及进行文本Toxicity 分析实战
模块九:构建安全的 GenAI/LLMs 核心技术Red Teaming 解密实战
模块十:构建可信赖的企业私有安全大模型Responsible AI 实战 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Llama3关键技术深度解析与构建Responsible AI、算法及开发落地实战

1、Llama开源模型家族大模型技术、工具和多模态详解:学员将深入了解Meta Llama 3的创新之处,比如其在语言模型技术上的突破,并学习到如何在Llama 3中构建trust and safety AI。他们将详细了解Llama 3的五大技术分支及工具,以及如何在AWS上实战Llama指令微调的案例。
2、解密Llama 3 Foundation Model模型结构特色技术及代码实现:深入了解Llama 3中的各种技术,比如Tiktokenizer、KV Cache、Grouped Multi-Query Attention等。通过项目二逐行剖析Llama 3的源码,加深对技术的理解。
3、解密Llama 3 Foundation Model模型结构核心技术及代码实现:SwiGLU Activation Function、FeedForward Block、Encoder Block等。通过项目三学习Llama 3的推理及Inferencing代码,加强对技术的实践理解。
4、基于LangGraph on Llama 3构建Responsible AI实战体验:通过项目四在Llama 3上实战基于LangGraph的Responsible AI项目。他们将了解到LangGraph的三大核心组件、运行机制和流程步骤,从而加强对Responsible AI的实践能力。
5、Llama模型家族构建技术构建安全可信赖企业级AI应用内幕详解:深入了解构建安全可靠的企业级AI应用所需的关键技术,比如Code Llama、Llama Guard等。项目五实战构建安全可靠的对话智能项目升级版,加强对安全性的实践理解。
6、Llama模型家族Fine-tuning技术与算法实战:学员将学习Fine-tuning技术与算法,比如Supervised Fine-Tuning(SFT)、Reward Model技术、PPO算法、DPO算法等。项目六动手实现PPO及DPO算法,加强对算法的理解和应用能力。
7、Llama模型家族基于AI反馈的强化学习技术解密:深入学习Llama模型家族基于AI反馈的强化学习技术,比如RLAIF和RLHF。项目七实战基于RLAIF的Constitutional AI。
8、Llama 3中的DPO原理、算法、组件及具体实现及算法进阶:学习Llama 3中结合使用PPO和DPO算法,剖析DPO的原理和工作机制,详细解析DPO中的关键算法组件,并通过综合项目八从零开始动手实现和测试DPO算法,同时课程将解密DPO进阶技术Iterative DPO及IPO算法。
9、Llama模型家族Safety设计与实现:在这个模块中,学员将学习Llama模型家族的Safety设计与实现,比如Safety in Pretraining、Safety Fine-Tuning等。构建安全可靠的GenAI/LLMs项目开发。
10、Llama 3构建可信赖的企业私有安全大模型Responsible AI系统:构建可信赖的企业私有安全大模型Responsible AI系统,掌握Llama 3的Constitutional AI、Red Teaming。

解码Sora架构、技术及应用

一、为何Sora通往AGI道路的里程碑?
1,探索从大规模语言模型(LLM)到大规模视觉模型(LVM)的关键转变,揭示其在实现通用人工智能(AGI)中的作用。
2,展示Visual Data和Text Data结合的成功案例,解析Sora在此过程中扮演的关键角色。
3,详细介绍Sora如何依据文本指令生成具有三维一致性(3D consistency)的视频内容。 4,解析Sora如何根据图像或视频生成高保真内容的技术路径。
5,探讨Sora在不同应用场景中的实践价值及其面临的挑战和局限性。

二、解码Sora架构原理
1,DiT (Diffusion Transformer)架构详解
2,DiT是如何帮助Sora实现Consistent、Realistic、Imaginative视频内容的?
3,探讨为何选用Transformer作为Diffusion的核心网络,而非技术如U-Net。
4,DiT的Patchification原理及流程,揭示其在处理视频和图像数据中的重要性。
5,Conditional Diffusion过程详解,及其在内容生成过程中的作用。
三、解码Sora关键技术解密
1,Sora如何利用Transformer和Diffusion技术理解物体间的互动,及其对模拟复杂互动场景的重要性。
2,为何说Space-time patches是Sora技术的核心,及其对视频生成能力的提升作用。
3,Spacetime latent patches详解,探讨其在视频压缩和生成中的关键角色。
4,Sora Simulator如何利用Space-time patches构建digital和physical世界,及其对模拟真实世界变化的能力。
5,Sora如何实现faithfully按照用户输入文本而生成内容,探讨背后的技术与创新。
6,Sora为何依据abstract concept而不是依据具体的pixels进行内容生成,及其对模型生成质量与多样性的影响。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号