作者:裘展
本文档旨在详细阐述当前主流的大模型技术架构如 Transformer 架构。我们将从技术概述、架构介绍到具体模型实现等多个角度进行讲解。通过本文档,我们期望为读者提供一个全面的理解,帮助大家掌握大模型的工作原理,增强与客户沟通的技术基础。本文档适合对大模型感兴趣的人员阅读。
一、论文介绍
论文名称:《Attention is all you need》
发布时间:2017/06/12
发布单位:Google、多伦多大学
简单摘要:所有 LLM 的始祖,迈向 NLP 新时代的基础架构
中文摘要:传统的序列转换模型使用复杂的循环或卷积神经网络,包括编码器和解码器。表现最好的模型会透过注意力机制连接编码器和解码器。
作者团队提出了一种新的简单网络结构,Transformer,完全基于注意力机制,不再使用循环和卷积。
在两个机器翻译任务上进行实验,发现这些模型在质量上的表现优越,并且更容易进行平行运算,训练所需时间明显减少。
该模型在 WMT 2014 年英德翻译任务上达到了 28.4 BLEU,比现有最佳结果(包括整体模型)提高了超过 2 BLEU。在 WMT 2014 年英法翻译任务中,模型在八个 GPU 上训练 3.5 天后,取得了新的单模型最佳 BLEU 分数 41.8,训练成本仅为文献中最佳模型的一小部分。
展示出无论是在大量或有限的训练数据下,Transformer 在其他任务中的泛化能力,成功应用于英语组成句分析。
论文链接:https://arxiv.org/pdf/1706.03762.pdf
核心技术:模型架构(此处先留下大体印象 encode+decode)
二、LLM 浅谈
很多人认为大模型可以直接回答问题或参与对话,但实际上,它们的核心功能是根据输入的文本预测下一个可能出现的词汇,即“Token”。这种预测能力使得 LLM 在各种应用中表现出色,包括但不限于:
文本生成:LLM 可以生成连贯且有意义的文本段落,用于写作辅助、内容创作等。
问答系统:通过理解问题的上下文,LLM 能够生成准确的回答,广泛应用于智能客服和信息检索。
翻译:LLM 可以根据上下文进行高质量的语言翻译,支持多语言交流。
文本摘要:LLM 能够提取长文档的关键内容,生成简洁的摘要,方便快速理解。
对话系统:LLM 可以模拟人类对话,提供自然流畅的互动体验,应用于聊天机器人和虚拟助手。
通过理解 Token 的概念,我们可以更好地掌握 LLM 的工作原理及其在实际应用中的强大能力。
2.1 Token
样例
谈到 token,不得不提到近期一个大模型被揪出来的低级错误“Strawberry 里有几个 r”。
嘲笑之后,大家也冷静了下来,开始思考:低级错误背后的本质是什么?
大家普遍认为,是 Token 化(Tokenization)的锅。
在国内,Tokenization 经常被翻译成「分词」。这个翻译有一定的误导性,因为 Tokenization 里的 token 指的未必是词,也可以是标点符号、数字或者某个单词的一部分。比如,在 OpenAI 提供的一个工具中,我们可以看到,Strawberry 这个单词就被分为了 Str-aw-berry 三个 token。在这种情况下,你让 AI 大模型数单词里有几个 r,属实是为难它。
为了让大家直观地看到大模型眼里的文字世界,Karpathy 特地写了一个小程序,用表情符号(emoji)来表示 token。
尝试
Token 是 LLM 理解的文本基本单位。虽然将 Token 看作单词很方便,但对 LLM 来说,目标是尽可能高效地编码文本。所以在许多情况下,Token 代表的字符序列比整个单词都要短或长。标点符号和空格也被表示为 Token,可能是单独或与其他字符组合表示。LLM 词汇中的每个 Token 都有一个唯一的标识符,通常是一个数字。LLM 使用分词器在常规文本字符串和等效的 Token 数列表之间进行转换。
import tiktoken
# 获取适用于 GPT-2 模型的编码器
encoding = tiktoken.encoding_for_model("gpt-2")
# 编码示例句子
encoded_text = encoding.encode("A journey of a thousand miles begins with a single step.")
print(encoded_text)
# 解码回原始文本
decoded_t