GPUDirect Storage(GDS)安装与使用
1 GDS 宿主机安装 1.1 环境要求 需要支持 GDS 的 NVIDIA GPU 和文件系统,具体可查阅官方文档。 1.2 安装GDS (不确定此处步骤是否有些可省略,仅供参考) 挂载iso 官网查找对应版本iso,上传至服务器root目录并挂载。 # 查看nvidia驱动版本 nvidia-smi # 查看ubunt版本 lsb_release -a # 挂载...
1 GDS 宿主机安装 1.1 环境要求 需要支持 GDS 的 NVIDIA GPU 和文件系统,具体可查阅官方文档。 1.2 安装GDS (不确定此处步骤是否有些可省略,仅供参考) 挂载iso 官网查找对应版本iso,上传至服务器root目录并挂载。 # 查看nvidia驱动版本 nvidia-smi # 查看ubunt版本 lsb_release -a # 挂载...
1 GDS 原理简介 下图是从SSD向GPU传送资料的传统I/O路径,资料会经由PCIe交换器、经过主机CPU、复制,写入主机记忆体回弹缓冲区(bounce buffer),再经由CPU、PCIe交换器,复制写入GPU的记忆体,供GPU存取。这整个过程需要经过6个环节,以及2次资料复制作业。 之所以必须采用这种繁琐的传输路径,是一系列原因造成的。 在储存装置与GPU之间的资料移动,...
1 Docker 是什么? 软件开发最大的麻烦事之一,就是环境配置。换一台机器,就要重来一次,旷日费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。 虚拟机(virtual machine)就是带环境安装的一种解决方案。它可以在一种操作系统里面运行另一种操作系统,比如在 Windows 系统里面运行 Linux 系统。对于底...
1 使用 PyTorch Profiler 进行分析 vLLM 支持使用 torch.profiler 对工作进程进行跟踪。可以通过设置 VLLM_TORCH_PROFILER_DIR 环境变量来启用跟踪,将其指向希望保存跟踪文件的目录:VLLM_TORCH_PROFILER_DIR=/mnt/traces/。例如: trace_dir = "/home/trace" os.makedi...
1 任务总览 任务细节:Tiny-LLM Week2-Day1 本节的核心目标是让模型支持 KV Cache,实现推理阶段的增量生成,加速“解码”过程。关键任务如下: 实现 TinyKvFullCache 类(src/tiny_llm/kv_cache.py) 提供唯一接口 update_and_fetch(key, value, mask_length=N...
1 任务总览 任务细节:Tiny-LLM Week1-Day7 之前我们已实现了最简单的“贪婪采样”(Greedy Sampling),即每次选择概率最高的 token。本章要扩展三种更灵活的采样方式: 温度采样(Temperature Sampling):通过温度参数控制生成的随机性。 Top-k 采样:只在概率最高的 k 个 token 中采样。 Top-p(核采样,...
在此之前,我们已经实现了多头注意力(MHA)、RMSNorm、RoPE、MLP 等模块。本章将把这些组件整合起来,构建完整的 Qwen2 模型,并让模型“动起来”——让它根据输入的提示(prompt)生成文本。 1 任务总览 任务细节 Tiny-LLM Week1-Day5 Tiny-LLM Week1-Day6 1.1 实现 Qwen2TransformerBlock ...
本章将实现 Qwen2 Transformer 架构的两个关键组件:RMSNorm 和 MLP(多层感知器) 模块,也称为前馈网络。RMSNorm 是一种层归一化技术,与传统的层归一化相比,它有助于以更少的计算开销稳定训练。MLP 模块是一个前馈网络,它处理注意力层的输出,并应用非线性变换来增强模型的表达能力。 1 任务总览 任务细节:Tiny-LLM Week1-Day4 1.1 实...
本节将介绍如何实现 Qwen2 中使用的 分组查询注意力(GQA):让多个 Query 头共享更少的 Key/Value 头,从而显著减少 KV 投影的内存与带宽开销(MQA 是 GQA 的极端特例,所有 Q 头共享 1 个 K/V 对)。 1 任务总览 任务细节:Tiny-LLM Week1-Day3 1.1 实现 scaled_dot_product_attention_group...
1 任务总览 在Transformer架构中,由于自注意力机制本身不包含位置信息,我们需要通过位置编码来为模型提供序列中token的顺序信息。本章将实现现代大语言模型广泛采用的旋转位置编码(RoPE)。 任务细节:Tiny-LLM Week1-Day2 1.1 实现传统 RoPE 在第一步中,我们需要在 src/tiny_llm/positional_encoding.py 中实现标...