公告栏

1861 分钟

发个公告庆祝新年啊,希望新的一年马到成功。春节期间顺便更新几篇博客证明还活着,嘻嘻。 # 历史公告 2024-9-10 网站迁移完成 网站的部署和美化以及博客数据的转移都已全部完成啦! 2024-9-1 网站迁移有序进行中... 小屋博客正在努力迁移中,预计在近期完成优化和部署。

文章列表

26k23 分钟

# 概述 在自然语言处理领域,分词器(Tokenizer) 承担着至关重要的 “桥梁” 作用:它将人类的自然语言(字符串)转化为大型语言模型能够识别和处理的整数序列。该整数序列就是大模型的输入,而 token 指的就是这些整数数字。 在众多分词策略中,字节对编码(Byte Pair Encoding, BPE) 以其高效、可控的词汇表构建机制,成为了现代预训练模型(如 BERT,GPT,T5 等)的基石。BPE 成功解决了传统分词方法在处理海量词汇和未登录词时的痛点。 本篇博客基于 2025 斯坦福 CS336 课程的第一章节作业要求,整理 BPE 分词器的原理与实现流程,并从零开始实现一个基
9.2k8 分钟

# 概述 本章是斯坦福 CS336 课程的第一章,也是本系列笔记的开篇章节。我们将介绍模型架构与基础知识,探讨模型设计的核心原则和常见的架构模式,为后续章节的学习奠定基础。 事先声明,本笔记并不会覆盖课程中的所有细节,不属于手把手的教程,而是重点总结和提炼出核心内容,帮助大家更好地理解和应用所学知识。 好了,废话不多说,我们直接进入正题。 # Tokenizer Tokenizer 是自然语言处理中的一个重要组件,负责将文本转换为模型可以理解的输入格式。这部分内容属于模型架构的基础知识,理解 Tokenizer 的工作原理对于设计和优化模型至关重要,因此也是本章的课后作业之一。我们将这部分
18k16 分钟

现如今,深度学习模型的规模和复杂度正以前所未有的速度增长,从简单的线性模型到如今动辄数百数千亿参数的大模型,单 GPU 的计算能力已难以满足高效训练的需求。并行训练技术应运而生,它合理分配计算任务到多个 GPU 或多台机器上,显著提升了训练效率。本文将介绍 PyTorch 中几种常见的并行训练方法,包括数据并行(Data Parallel)、分布式数据并行(Distributed Data Parallel,DDP)、Hugging Face 的 Accelerate 工具库等。通过对比和代码示例,帮助读者快速掌握这些技术的原理和使用方法。 # 前期准备 为了演示不同的并行训练方案,首先需要准
36k32 分钟

强化学习(Reinforcement Learning, RL)是机器学习的核心范式之一,其核心目标是通过智能体与环境的动态交互,自主习得最优决策策略,以最大化长期累积奖励。 本文系统梳理了强化学习算法的相关数学原理,希望能对强化学习的理解有所帮助。同时,本文省略了部分基础知识的介绍,把重点放在强化学习经典算法和数学理解上,对复杂的证明和推导予以省略。 # 基础概念 智能体(Agent):决策主体,通过观察环境状态选择动作。例如,游戏 AI 中的角色控制器。 环境(Environment):也称为模型,是智能体交互的外部世界,提供状态信息和反馈奖励。环境可以是物理世界(如机器人导航场景)或虚拟
19k18 分钟

许多实际应用场景涉及到大规模数据的处理,这往往离不开并行计算。Python 的 multiprocessing 模块是一个强大而实用的工具,利用多核处理器的优势,将任务分配给多个进程并同时执行,从而提高程序的性能和效率。本文将详细总结如何使用 multiprocessing 模块来实现多进程编程。 # 概述 现代操作系统如 MacOS,UNIX,Linux,Windows 等,都是支持 “多任务” 的操作系统,即可以同时运行多个任务。 在单核 CPU 环境中,多任务执行是轮流让各个任务占用 CPU 交替执行。由于 CPU 调度执行速度非常快,从而有多个任务同时执行的效果。 在多核
8.6k8 分钟

# 前言 想来已经很久没有写博客了,趁着春节假期刚结束,我一时兴起,决定利用 DeepSeek 水一篇博客,既为之后的学习做个记录,也为眼前的毕业设计留下一些痕迹。 这篇博客的主题是《深度学习模型训练代码》,顾名思义,主要讨论如何编写深度学习中的 train.py 文件。相信写过训练代码的人都知道, train.py 的基本逻辑大致相同:加载数据集、调用模型、计算损失、梯度优化、保存结果等。虽然听起来简单,但要写出一份既优雅整洁又功能完备的代码,还是需要费些功夫。既然如此,不如直接把这个框架搭建好,以后只要依葫芦画瓢,稍作调整即可。 此博客将在后续实践中不断更新 # 编写规范 为