Skip to main content

🚧Transformer

学习Transformer的原理,使用PyTorch实现一个简单的Transformer模型,对模型进行训练和推理。通过分布式训练,提升模型训练效率。

通过这个单元的学习,你可以获得一个专属于自己的大模型,并可以用于自己的业务场景。同时可以回答下面的问题:

不同的大模型可以用同一套提示词吗?

使用了相同的语料、token分词算法。那么大模型的tokenizer是相似的。通常来说,同个公司的大模型,语料与算法是相似的。因此相似的提示词可以生效。

如果语料差距较大、token分词算法不同,那么提示词可能无法生效。

常见的分词算法例如:Byte-Pair Encoding (BPE)

原理:通过合并最频繁的字符对来构建词汇表,适合处理罕见词和新词。

大模型最大上下文长度无限制增大吗?

增大模型的最大长度会带来以下几个问题:

  • Transformer模型的设计中,输入序列的长度通常在模型的构建时就被固定。这是因为模型的自注意力机制需要为每个输入token计算与其他所有token的关系,计算复杂度与输入长度的平方成正比。因此,固定的输入长度可以简化计算和内存管理。

  • Transformer使用位置编码(Positional Encoding)来 为输入序列中的每个token提供位置信息。位置编码的维度通常与模型的隐藏层维度相同,而位置编码的数量通常是根据预设的最大输入长度来定义的。如果输入长度超过了这个预设值,模型将无法正确处理超出部分的token。

  • 在训练过程中,模型通常会使用固定长度的输入序列。如果训练数据中的序列长度超过了模型的最大输入长度,通常会进行截断或填充(padding),这可能导致信息丢失或计算效率低下。

Temperature 是如何影响模型输出的?

Temperature 是一个控制模型输出随机性的超参数。它会影响模型在选择下一个token时的概率分布。公式为:

Attention(Q,K,V)=softmax(QKT/dk)VAttention(Q, K, V) = softmax(QK^T / \sqrt{d_k}) * V
  • 当 Temperature 较高时,模型会倾向于选择概率较高的token,输出结果更确定。适合生成高质量、一致性强的文本。例如数学。
  • 当 Temperature 较低时,模型会倾向于选择概率较低的token,输出结果更随机。适合生成多样性、创造性强的文本。

理论上,Temperature 的取值范围不限,但是实际使用中,通常取值在0-2之间,过高的 Temperature 会导致模型输出不准确。

如果你想生成一个童话的故事,且你可以设置了一个的 Temperature 为0,那么模型会倾向于生成传统的王子和公主的故事。因为语料中,王子和公主的故事是最多的。如果你想生成一个多样化的故事,你可以设置一个较高的 Temperature,例如1.5。但是这可能会导致故事的逻辑性不强,或者出现不符合逻辑的情节。