无标题
1.7.1常见大模型结构
无标题
描述一下Transformer Transformer的核心定位 Transformer是2017年Google团队在论文《Attention Is All You Need》中提出的深度学习模型,彻底改变了自然语言处理(NLP)领域的范式。它完全基于自注意力机制(Self-Attention),替代了此前主流的RNN/LSTM等循环神经网络,解决了循环模型的两大痛点:并行计算能力弱(RNN需按序列顺序处理,无法并行)和长距离依赖捕捉能力有限(依赖序列长度累积信息,长文本中衰减严重)。目前,几乎所有主流预训练模型(如BERT、GPT、T5等)均以Transformer为基础,成为NLP任务(翻译、问答、文本生成等)的核心架构。 Transformer的整体结构 Transformer由Encoder(编码器) 和Decoder(解码器)...
无标题
1.ThreadsPerBlock和Blocks的数量受哪些条件约束。 2.理论占用率怎么计算? 3.什么是warp,什么是warp divergence? 4.cuda的内存模型里有多少种memory,它们的位置(片上还是板上),带宽和延迟的相对大小? 5.global memory的访存合并是什么? 6.什么样的变量会被分配在register上?什么样的变量会被分配在local memory上? 7.Block是怎么被SM调度执行的? 8.什么是cuda core? 什么是tensor core? 9.什么是bank confict+?怎么避免bank confict,你能想到多少方法? 10.描述-下Block reduce的大致实现。 11.描述-下double buffer(ping pong buffer)的大概原理和实现。 12.什么是roofline model?什么是memory bound,什么是computation bound? 13.kernel...
无标题
123456789// 1. 向上取整#define CEIL(a, b) ((a + b - 1) / (b))// 2. FLOAT4,用于向量化访存,以下两种都可以// c写法#define FLOAT4(value) *(float4*)(&(value))// c++写法#define FLOAT4(value) (reinterpret_cast<float4*>(&(value))[0])
大模型训练过程总览
GPT-4o训练过程 GPT-4o 是 OpenAI 推出的多模态大语言模型(“o” 代表 “Omni”,强调全模态能力),其训练过程结合了大语言模型的通用训练逻辑与多模态融合的技术创新。由于 OpenAI 未完全公开训练细节,以下内容基于大模型训练的通用流程、行业惯例及公开信息(如技术博客、研究论文)进行合理梳理与推测,主要包括数据准备、模型架构设计、预训练、微调优化、多模态融合、评估迭代六大核心阶段。 一、数据准备:构建高质量多模态数据集 数据是模型训练的基础,GPT-4o 作为多模态模型,其数据涵盖文本、图像、音频等多种类型,且需经过严格清洗与处理。 1. 数据来源 文本数据:涵盖书籍、网页(过滤低质量内容)、学术论文、代码库、对话记录(如公开对话数据集)等,语言包括多语种(英语为主,兼顾其他主流语言)。 图像数据:包含照片、插图、图表、截图等,需与文本关联(如带描述的图像、图像-标题对、图文并茂的文档)。 音频数据:可能包括语音片段、音频解说、多语言语音等,需与文本转录对齐(如语音-文本字幕对)。 2....
2025年7月面试过程
408 多线程 python八股 大模型八股 Transformer,attention,qkv,embedding ⭐⭐⭐⭐⭐ only decoder/encoder cuda软件 llama结构,好的模型剪枝优化方法,qkv矩阵,如何减少模型训练时间 并行bn 手撕 手撕计算交并比IOU 手撕self-attention ⭐⭐⭐⭐⭐ leetcode 股票最大利润 把二叉树(不完全二叉树)按先序遍历顺序展开,储存为treenode(仅right=node,left=none)复杂度为O(n) 找到数组中第k个最大的数 将数组里面的奇数位置的数放在左边,偶数位置的数放在右边,原地操作 完全平方数 海康威视...
大模型各种算子手撕(实现)
注意力机制的代码实现- 1234567891011121314151617181920212223242526272829import torchimport torch.nn as nnimport torch.nn.functional as Ffrom math import sqrtclass SelfAttention(nn.Module): def __init__(self, input_dim, dim_k, dim_v): super(SelfAttention, self).__init__() self.q = nn.Linear(input_dim, dim_k) self.k = nn.Linear(input_dim, dim_k) self.v = nn.Linear(input_dim, dim_v) self.norm = sqrt(dim_k) def forward(self, x): Q =...
机器学习各种算法手撕(实现)
1. 手撕 k-means 算法 1234567891011121314151617181920212223242526272829303132333435import numpy as npimport matplotlib.pyplot as pltdef kmeans(data, K, max_iterations=100): # 随机初始化K个簇中心点 centers = data[np.random.choice(data.shape[0], K, replace=False)] # 迭代更新中心点 for _ in range(max_iterations): # 计算每个样本到各个中心点的距离 distances = np.linalg.norm(data[:, None] - centers, axis=2) # 等价于distances = np.linalg.norm(X[:, np.newaxis, :] - centers, axis=2) # 分配每个数据点到最近的簇 labels =...
深度学习各种算法手撕(实现)
目标检测-Iou (交并比) 1234567891011121314151617181920212223242526272829import numpy as np def ComputeIOU(boxA, boxB): ## 计算相交框的坐标 x1 = np.max([boxA[0], boxB[0]]) x2 = np.min([boxA[2], boxB[2]]) y1 = np.max([boxA[1], boxB[1]]) y2 = np.min([boxA[3], boxB[3]]) width = np.max([0, x2 - x1 + 1]) height = np.max([0, y2 - y1 + 1]) inter_area = width * height # 计算两个框的面积 area_A = (boxA[2] - boxA[0] + 1) * (boxA[3] - boxA[1] + 1) area_B = (boxB[2] - boxB[0] + 1) *...
操作系统八股文
第 1 章 操作系统概述 第 2 章 进程管理 线程与进程的区别⭐⭐⭐ 定义 进程是操作系统资源分配的基本单位,是一个独立运行的程序实例。每个进程有独立的内存空间、全局变量和系统资源。 线程是进程中的一个执行单元,是CPU调度的基本单位。多个线程共享同一个进程的内存和资源。 调度。线程是独立调度的基本单位,进程是拥有资源的基本单位。在同一进程中,线程的切换不会引起进程切换。在不同进程中进行线程切换,如从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。 拥有资源。进程都是拥有资源的基本单位,而线程不拥有系统资源,但线程可以访问其所属进程的系统资源。 并发性。在引入线程的操作系统中,不仅进程之间可以并发执行,而且多个线程之间也可以并发执行。 系统开销。进程创建、撤销和切换,所付出的开销远大于线程。 地址空间。进程的地址空间之间互相独立,同一进程的各线程间共享进程的地址空间。 通信方面。进程间需要用PV操作、共享存储、消息传递和管道通信等方式进行通信,而线程间可以直接读/写进程数据段(如全局变量)来进行通信。 进程、线程和协程的区别⭐ 1....