Transformer架构详解
本文讲解的是现代大模型(如GPT-4、Gemini等)背后的核心架构——Transformer。与2017年之前的Transformer架构相比,现代大模型在细节上有很多改进和优化。我们将从整体架构、核心组件(如Embedding层、Multi-Head Attention、Feed-Forward Network等)以及训练技巧等方面进行详细讲解。 Embedding层 Transformer模型的输入首先通过一个Embedding层将离散的词汇转换为连续的向量表示。这个过程可以看作是将每个词映射到一个高维空间中,使得语义相似的词在这个空间中也相近。 输入:(batch_size, seq_length) -> 输出:(batch_size, seq_length, d_model) 分词器输出的tokenID是不能直接使用的,比如苹果的tokenID是12345,香蕉的tokenID是67890,这两个数字没有任何语义上的联系。Embedding层通过学习一个词汇表,将每个tokenID映射到一个d_model维的向量空间中,使得苹果和香蕉在这个空间中的表示可以捕捉到...
csp
输入 123454csp#ccspcsp#ccsp2024Csp#ccsp2024CSP#2024 第一行是指定输入的行数,接下来输入n行; 12345cin>>n;cin.ignore();//吃掉'\n'for(int i=0;i<n;i++){getline(cin,str);} getline默认按照’\n’分割,getline(cin,str,‘&’),就是按照&分割; 如果没有指定行数 12while(getline(cin,str)){} 遇到EOF自动结束
cs336作业五实现
环境与准备 使用conda下载好的flash-atten,cuda和python版本要匹配,安装transformers和datasets库 下载Qwen2.5-Math-1.5B作为基座模型 数据集直接使用原项目中的/data目录下的几个数据集 sft 核心函数 tokenize_prompt_and_output 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647def tokenize_prompt_and_output( prompt_strs: list[str], output_strs: list[str], tokenizer: PreTrainedTokenizerBase,) -> dict[str, Tensor]: # 该函数将提示和输出字符串列表转换为模型输入张量,包括 input_ids、labels 和 response_mask。 prompt_ids = [] output_ids ...
SQL查询多样性与相似性度量方法
现有研究表明,提升大模型输出的多样性在一定程度上可以提高模型的准确率。将此思路拓展至Text-to-SQL任务中,可以通过提升模型输出SQL查询的多样性来优化模型性能。本文将综述一些常用的SQL查询多样性与相似性度量方法。 1. 词法形态 该类方法主要关注SQL的文本相似度。 实现步骤如下: 1.1 SQL 标准化处理 格式化与清洗 :利用 Python 库 sqlparse 对 SQL 进行格式化,去除冗余空格,将 SQL 整合成单行,去除注释,并将字符统一转换为大写或小写。 符号掩码化 全统一占位符 :将具体的表名、列名、字符串、数字等替换为统一占位符,如 TABLE_NAME, COLUMN_NAME, STRING_LITERAL 等。 例如: 原始 SQL A: 1SELECT DISTINCT u.id FROM users u JOIN orders o ON u.id = o.user_id; 标准化后 SQL A: 1SELECT DISTINCT COLUMN_NAME FROM TABLE_NAME JOIN TABLE_NAME ON COLU...
一些python语法
路径与导入 如果运行一个python文件,该文件中使用相对路径来寻找另一个文件,那么这个路径是相对于当前运行的python文件所在的目录即控制台当前的目录,而不是相对于被导入的python文件所在的目录。 导入包时,python会按照sys.path中的路径顺序来寻找包。sys.path中包含了该python文件当前目录、环境变量PYTHONPATH指定的路径以及python安装目录下的site-packages等路径。 init.py 文件的主要作用是将一个普通的文件夹标识为一个 Python 包
cs336作业五文档
这是一份名为 CS336 作业 5 (Alignment):对齐与推理强化学习 (RL) 的课程作业文档翻译。 以下是文档内容的详细中文翻译,保持了原文档的结构、代码块占位和专业术语。 [页 1] CS336 作业 5 (Alignment):对齐与推理 RL 1. 作业概览 版本:1.0.0 CS336 教研组 2025 年春季 在本作业中,通过训练语言模型解决数学问题,你将获得让模型进行推理 (Reasoning) 的实战经验。 你将实现的内容: Zero-shot prompting baseline(零样本提示基线) :针对 Hendrycks et al. [2021] 的 MATH 竞赛数学数据集。 Supervised Finetuning (SFT,监督微调) :基于来自更强推理模型(DeepSeek R1, DeepSeek-AI et al. 2025)的推理轨迹数据。 Expert Iteration (专家迭代) :利用已验证的奖励来提升推理性能。 Group-Relative Policy Optimization (GRPO,组相对策略优化) ...
推理
inference概述 推理应用场景 实际应用 (Actual Use) :这是用户最直观的感受,包括聊天机器人(如 ChatGPT)、代码自动补全(如 Copilot)以及对海量数据的离线批处理。 模型评估 (Model Evaluation) :为了衡量模型的性能(例如指令遵循能力),需要运行推理来生成结果并进行打分。 测试时计算 (Test-time Compute) :这与当前流行的“推理模型”(如 OpenAI o1 系列)相关,即通过增加推理时的计算量(如思考过程、多路径搜索)来提升模型解决复杂问题的能力。 强化学习训练 (RL Training) :在强化学习(如 PPO 或 GRPO)过程中,模型需要生成大量样本,然后由奖励模型进行打分,这个“生成样本”的过程本质上就是大规模推理。 指标 ime-to-first-token (TTFT) / 首字延迟 定义 :从用户发出请求到屏幕上蹦出第一个字的时间。 重要性 :这是即时交互(Chatbot)体验的生命线。如果 TTFT 过长,用户会感觉系统“卡死”了。这主要取决于Prefill(预填充)阶段的速度,即模...
scaling laws
导入 我们知道,像H100,A100这样的高性能GPU在训练大规模深度学习模型时成本是很昂贵的,因此,我们不能盲目地设定参数来试错,而是需要有一定的理论依据来指导我们如何选择模型的规模和训练数据的规模。Scaling Laws(缩放定律)为我们提供了这样的理论依据。 训练一个大模型需要 基础设施 数据 训练策略 虽然你有算力(H100)、有系统(Infra)、有数据(Dataset),但当你真正要敲下回车键开始训练时,你会面临一系列决策瘫痪: 我应该训练一个 600 亿参数的模型,跑久一点? 还是训练一个 1750 亿参数的模型,跑短一点? 层数要多深?宽度要多大? 设计大模型有无数种参数组合,盲目尝试太贵,照抄别人又不一定对。 利用缩放定律。我们发现模型的性能(Loss)与资源(算力、参数)在双对数坐标下呈线性关系。 通过学习 Scaling Laws,我们可以更好地理解如何在给定的计算预算下,选择模型规模和训练数据规模,以达到最佳的性能表现。 scaling laws 历史和背景 在经典的统计学习理论(如 VC 维理论)中,理论学家早就推导出模型的估计误差 $\e...
深度学习初识
反向传播 我们将考虑一个通用输入 $x$,并计算 $h_\theta(x)$ 关于 $\theta$ 的梯度。为简便起见,我们用 $o$ 作为 $h_\theta(x)$ 的简写($o$ 代表 output,即输出)。为简便起见,虽然有滥用符号之嫌,我们使用 $J = \frac{1}{2} (y - o)^2$ 来表示损失函数。(注意:这覆盖了 7.1 节中将 $J$ 定义为总损失的设定。)我们的目标是计算 $J$ 关于参数 $\theta$ 的导数。 单个神经元的反向传播 先假设$x$和$w$都是简单的标量。我们有如下: $x \xrightarrow{w, b} z \rightarrow o \rightarrow J$ 前向公式: $z = w \cdot x + b$ $o = \text{ReLU}(z)$ $J = \frac{1}{2}(y - o)^2$ 求导 (链式法则): $$ \frac{\partial J}{\partial w} = \underbrace{\frac{\partial J}{\partial o}}{(o-y)} \cdot \...
生成式学习算法
判别式模型 vs. 生成式模型 在分类问题中,我们的最终目标是确定样本 $x$ 属于类别 $y$ 的概率。 判别式模型 (Discriminative Learning Algorithms) 目标: 直接学习 $p(y|x)$ 或从输入空间 $X$ 到标签 ${0, 1}$ 的映射。 直觉: 寻找不同类别之间的 决策边界(Decision Boundary) 。 例子: “我不需要知道大象长什么样,我只需要知道大象和狗之间那条区分的线在哪里。” 代表算法: 逻辑回归 (Logistic Regression)、感知机 (Perceptron)、SVM。 生成式模型 (Generative Learning Algorithms) 目标: 学习 $p(x|y)$(给定类别下特征的分布)和 $p(y)$(类别的先验概率)。 直觉: 学习每一个类别 具体的特征模型 。 例子: “我先学习大象长什么样,再学习狗长什么样。新来一个动物时,看它更像谁。” 代表算法: 朴素贝叶斯 (Naive Bayes)、高斯判别分析 (GDA)、HMM。 Q: 为什么有了判别式模型我们却还需要生...
