你的任务是用 Python 实现一个简化版的 GPT-2 风格文本生成函数。该函数将包含以下最小 GPT-2 架构的组件:
- 词嵌入:将输入的词元映射到稠密的向量表示。
- 位置嵌入:为词嵌入添加位置信息。
- 多头注意力:关注序列的不同部分。
- 前馈网络:通过稠密层处理注意力输出。
- 层归一化:稳定训练过程。
该函数必须接受以下参数:
- prompt:引导生成过程的初始文本。
- 生成的词数量:指定要输出多少个词。
你的函数应输出生成的文本。
实现时需要注意以下细节:
- 激活函数使用GELU: GELU(x) = 0.5 *x * (1 + tanh(√(2/π) * (x + 0.044715x^3)))
- 词嵌入使用固定位置,由随机wpe给出
-
多头注意力中,mask采用下三角矩阵: (1 - np.tri(x.shape[0], dtype=x.dtype)) * -1e10 ; 并且分数计算需要除以
sqrt(d_k)进行缩放 - Transformer Block 的顺序是
- 输入先经过多头注意力层,再加残差。
- 接着经过前馈网络,再加残差。
- 每一步都有对应的层归一化
- 输出词选择最大概率的输出
此外,利用辅助函数 来检索:
- 一个虚拟编码器。
- 模型超参数。
- 模型参数。
