- 博客(9)
- 收藏
- 关注
原创 CS336-assignment1-Training loop
本文介绍了神经网络训练中的两个关键环节:批次数据生成和检查点保存。在批次数据生成部分,详细说明了如何从数据集中随机采样固定长度的输入序列及其对应的目标Token,包括索引计算、数据提取和转换为PyTorch张量的过程。在检查点部分,讲解了如何保存和恢复训练状态,包括模型参数、优化器状态和迭代次数等信息,确保训练中断后能够继续。两个功能都通过Python函数实现,支持CPU/GPU设备,并提供了错误处理机制。
2026-03-29 13:53:05
51
原创 CS336-assignment1-Training
本文介绍了Transformer语言模型训练中的关键组件实现。在损失函数部分,详细讲解了交叉熵损失的计算方法,包括数值稳定性的处理技巧。优化器部分实现了AdamW算法,分析了其相对于SGD的优势,并给出了完整的代码实现。学习率调度部分阐述了余弦退火调度器的三个阶段及其数学原理,并澄清了调度器与优化器学习率的关系。最后介绍了梯度裁剪的实现方法及其作用。这些组件共同构成了模型训练的基础框架。
2026-03-29 00:28:04
407
原创 CS336-assignment1-model(3)
本文介绍了Transformer模型的组件整合过程。首先实现了TransformerBlock模块,包含自注意力机制(CausalSelfAttention)、归一化层(RMSNorm)和前馈网络(SwiGLU)。然后构建了完整的TransformerLM语言模型,包含词嵌入层、多层TransformerBlock堆叠、最终归一化层和线性输出层。该实现支持RoPE位置编码、RMSNorm归一化等特性,通过手动实现加深了对Transformer内部矩阵运算和维度变化的理解。整个模型采用模块化设计,便于各组件独
2026-03-27 23:49:07
46
原创 CS336-assignment1-model(2)
本文介绍了Transformer模型中的旋转位置编码(RoPE)和自注意力机制实现。RoPE通过旋转矩阵将位置信息嵌入到查询和键向量中,使点积自然包含相对位置信息,比传统位置编码更高效。文章详细阐述了RoPE的数学原理,并给出PyTorch实现。同时,讲解了多头注意力机制的核心实现,包括投影矩阵分割、点积注意力计算和结果合并等关键步骤,重点分析了如何通过einsum操作高效处理批量维度和多头计算,以及因果掩码在自回归建模中的应用。
2026-03-26 15:06:10
363
原创 CS336-assignment1-model(1)
本文介绍了Transformer核心组件的实现方法:1)Embedding类实现词向量查找表;2)Linear类封装矩阵乘法运算;3)RMSNorm实现前归一化,提高训练稳定性;4)SwiGLU激活函数结合SiLU和门控机制,增强非线性表达能力。这些组件构成了现代LLM的基础架构,其中采用前归一化(Pre-Norm)和门控机制(SwiGLU)是当前主流模型的关键改进。实现时需注意数值稳定性(如RMSNorm使用float32计算)和计算效率(如torch.einsum的使用)。
2026-03-24 16:53:43
458
原创 CS336-assignment1-tokenizer
这次的任务是自己手搓一个tokenizer类,包括encode 和 decode 的实现。
2026-03-19 22:56:08
207
2
原创 CS336-assignment1-train_bpe
其中words_list是一个二维数组,第一维是每一个预分词的token,第二维是每一个预分词token中的byte。首先需要把我们在 /cs336_basics 目录下的代码导入到 /test/adapters.py 中,然后在函数中直接加入我们自己的函数即可,命令 uv run pytest 即可自动运行所有的测试文件。special_token在分词过程中直接作为一个单独的token,不参与bpe算法,所以直接使用regex包中提供的函数可以直接分离,注意分离后的结果是一个list。
2026-03-18 22:35:58
276
2
原创 区块链学习(2)— 工作量证明
在上次的学习中()我们已经学会了搭建一个非常简单的区块链,但是真的区块链中有一个核心思想:向区块链中添加一个新的区块时,需要先完成一些困难的工作,从而保证区块链的稳定和安全。如果我想向区块链中添加一个新区块,有什么方法能证明我的工作已经足够了呢,这就会引入一个新的概念,即工作量证明。以比特币为例,获得新的比特币(新增一个区块)的方法流程如下:1. 取一些公开的数据;2. 给这个公开数据添加一个计数器。计数器默认从 0 开始;3. 将和组合到一起,获得一个哈希;
2025-04-26 00:29:56
532
原创 区块链学习(1)
区块链的第一个区块(genesis block),代码中通常单独实现。本人最近参与实验室区块链项目,用此博客记录一下入门的学习过程。
2025-04-25 23:08:46
233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅