[NLP] Reformer: The Efficient Transformer
1.现状 (1) 模型层数加深 (2) 模型参数量变大 (3) 难以训练 (4) 难以fine-tune 2. 单层参数量和占用内存分析 层 参数设置 参数量与占用内存 1 layer 0.5Billion 0.5Billion * 4Byte = 2GB embedding layer 64K tokens 1024 emb_size 8 batch_size 参数量 64K × 1K × 8 = 0.5B 内存 2GB 3. Transformer 模型内存占用的问题以及Reformer相应解决方案 Transformer 内存占用的问题 Reformer采用的方案 实现的效果 对模型的影响 memory(N layer) > N * memory(1 layer) → 需要为反向传播保留值 Reversible layers 保留N层activations → 保留1层 negligible feed-forward 层 d_ff >> d_model, 占据大量内存 split activation && process in chunks d_ff → 每个chunk中处理的维度 numerically identical Attention 运算: O(L^2):存储 && 计算开销都很大 Locality-Sensitive Hashing 局部敏感哈希,简称 LSH