🚧Transformer
学习Transformer的原理,使用PyTorch实现一个简单的Transformer模型,对模型进行训练和推理。通过分布式训练,提升模型训练效率。
通过这个单元的学习,你可以获得一个专属于自己的大模型,并可以用于自 己的业务场景。同时可以回答下面的问题:
不同的大模型可以用同一套提示词吗?
使用了相同的语料、token分词算法。那么大模型的tokenizer是相似的。通常来说,同个公司的大模型,语料与算法是相似的。因此相似的提示词可以生效。
如果语料差距较大、token分词算法不同,那么提示词可能无法生效。
常见的分词算法例如:Byte-Pair Encoding (BPE)
原理:通过合并最频繁的字符对来构建词汇表,适合处理罕见词和新词。
大模型最大上下文长度无限制增大吗?
增大模型的最大长度会带来以下几个问题:
-
Transformer模型的设计中,输入序列的长度通常在模型的构建时就被固定。这是因为模型的自注意力机制需要为每个输入token计算与其他所有token的关系,计算复杂度与输入长度的平方成正比。因此,固定的输入长度可以简化计算和内存管理。
-
Transformer使用位置编码(Positional Encoding)来 为输入序列中的每个token提供位置信息。位置编码的维度通常与模型的隐藏层维度相同,而位置编码的数量通常是根据预设的最大输入长度来定义的。如果输入长度超过了这个预设值,模型将无法正确处理超出部分的token。
-
在训练过程中,模型通常会使用固定长度的输入序列。如果训练数据中的序列长度超过了模型的最大输入长度,通常会进行截断或填充(padding),这可能导致信息丢失或计算效率低下。
Temperature 是如何影响模型输出的?
Temperature 是一个控制模型输出随机性的超参数。它会影响模型在选择下一个token时的概率分布。公式为:
- 当 Temperature 较高时,模型会倾向于选择概率较高的token,输出结果更确定。适合生成高质量、一致性强的文本。例如数学。
- 当 Temperature 较低时,模型会倾向于选择概率较低的token,输出结果更随机。适合生成多样性、创造性强的文本。
理论上,Temperature 的取值范围不限,但是实际使用中,通常取值在0-2之间,过高的 Temperature 会导致模型输出不准确。
如果你想生成一个童话的故事,且你可以设置了一个的 Temperature 为0,那么模型会倾向于生成传统的王子和公主的故事。因为语料中,王子和公主的故事是最多的。如果你想生成一个多样化的故事,你可以设置一个较高的 Temperature,例如1.5。但是这可能会导致故事的逻辑性不强,或者出现不符合逻辑的情节。
📄️ 🚧Encoder-Decoder结构
📄️ 🚧注意力机制
📄️ 🚧Transformer结构
📄️ 🚧手写多模态大模型
开源仓库地址:
📄️ 🚧分布式训练
原理部分
📄️ 🚧模型微调
模型微调(Fine-Tuning) 是指在一个预训练的基础模型上,使用特定领域或特定任务的数据进行进一步训练,以使模型能够在特定任务上表现得更好。例如对计算机科学的名词翻译进行微调,可以提高翻译的准确性。