Posts
Johney Zheng
Cancel

Modern-C++_工程实践

开发环境 编译环境 C++ 编译器是将 C++ 源代码转换为机器代码的工具。不同平台/系统有不同的C++编译器支持,几个主流的C++编译器如下: GCC(GNU Compiler Collection): 跨平台,Linux常用,与GNU工具链集成,优化能力强,适合高性能计算和嵌入式开发。基础使用: Clang: 跨平台,原生支持...

Modern-C++_并发

并发编程 通俗地说,“并发”是指在一个时间段里有多个操作在同时进行,而“多线程”是实现并发的一种方式。 多线程 线程概念 C++而言,线程就是一个能够独立运行的函数: auto f = []() // 定义一个lambda表达式 { cout << "thread id:" << this_thread::get_id() << endl;...

LLMs位置编码

前言 在大规模语言模型(LLMs, Large Language Models)中,由于 Transformer 模型本身不具备天然的序列感知能力,所以需要引入位置编码的目的是帮助模型捕捉和理解输入序列中位置关系和顺序信息。 绝对位置编码 绝对位置编码将每个位置直接编码为唯一的固定向量。常见的绝对位置编码包括: 可学习位置编码 每个位置对应一个可训练向量,由...

集群通信

前言 简述分布式通信相关知识栈(work with ChatGPT)。 总线/通信协议 PCIe   PCIe 1.0 PCIe 2.0 PCIe 3.0 PCIe 4.0 PCIe 5.0 PCIe 6.0 Year 2003...

LLMs存储

LLMs存储 前言 简述存储相关知识栈(work with ChatGPT)。 存储技术 多级存储 现代CPU为了提升执行效率,减少CPU与内存的交互(交互影响CPU效率),一般在CPU上集成了多级缓存架构,常见的为三级缓存结构,即L1 Cache、L2 Cache、L3 Cache的三级缓存结构。缓存级别越小,越靠近CPU,同样也意味着速度越快,但是对应的容量越少: ...

RLHF算法以及部署概述

概述 大型语言模型 (Large Language Model,LLM) 生成领域的新训练范式:RLHF (Reinforcement Learning from Human Feedback) ,即以强化学习方式依据人类反馈优化语言模型。 RLHF 的意义在于能够结合人类的偏好与强化技术,对模型的输出进行优化,使模型更加符合人类期望,避免传统训练方法中问题,如:输出仅考虑语法的正确性和...

Modern-C++_STL_容器

前置背景 序列容器 关联容器 前置背景 C++ STL(Standard Template Library) 是 C++ 标准库的重要组成部分,提供了丰富的数据结构和算法的实现。 STL 是基于泛型编程的,设计目标是高效、灵活和易用。它包含了通用的容器、算法、迭代器和函数对象。 STL 容器用于存储和管理数据,有多种类型,适合不同的应用场景,可分为:序列容器、关联式容器...

Modern-C++_编程范式

前置背景 面向过程编程(Procedural Programming) 面向对象编程(Object-Oriented Programming) 泛型编程(Generic Programming) 函数式编程(Functional Programming) 元编程(Meta Programming) 前置背景 C++支持多范式编程语言,允许开发者根据具体需求选择...

Modern-C++_语言基础

C++概述 生命周期和编程范式 数据类型与关键字 内存管理 基础概念 左值和右值 指针 C++类 C++概述 C++特点: C++ 是一门多范式的通用编程语言。 C++支持”面向对象编程”、“泛型编程”、”函数式编程”: 面向对象:核心在于抽象和封装,通过高内聚低耦合的对象之间的通信协作来完成任务。 泛型编程:核心是“一切皆为类型”,通过...

LLM长文本优化策略

LLM长文本优化策略 长文本对LLM带来的挑战主要在于显存上的,核心原因是: 原始Attention的计算过程中,中间变量的大小是$O(N^2)$增长的,可以通过FlashAttention的Tiling设计来降低中间变量显存为$O(\frac {N ^ 2}{M})$,$KV_Cache$和FFN层的激活都为$O(N)$,所以核心思路是降低$sequence\ length$,主要有以...