Skip to content

Commit

Permalink
add ml
Browse files Browse the repository at this point in the history
  • Loading branch information
liqiankun1111 committed Jan 7, 2024
1 parent 62e0ab6 commit 13d8303
Show file tree
Hide file tree
Showing 11 changed files with 213 additions and 126 deletions.
15 changes: 11 additions & 4 deletions _posts/MachineLearning/2021-08-18-gpu.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ keywords: gpu

[CPU 和 GPU - 异构计算的演进与发展](https://draveness.me/heterogeneous-computing/)世界上大多数事物的发展规律是相似的,在最开始往往都会出现相对通用的方案解决绝大多数的问题,随后会出现为某一场景专门设计的解决方案,这些解决方案不能解决通用的问题,但是在某些具体的领域会有极其出色的表现。

GPU 的架构;内存管理;任务管理;数据类型。

## GPU

各种游戏里面的人物的脸,并不是那个相机或者摄像头拍出来的,而是通过多边形建模(Polygon Modeling)创建出来的。而实际这些人物在画面里面的移动、动作,乃至根据光线发生的变化,都是通过计算机根据图形学的各种计算,实时渲染出来的。
Expand Down Expand Up @@ -78,11 +80,9 @@ CPU和GPU的主要区别在于它们的设计目标。CPU的设计初衷是执

GPU架构总体如下图所示:

![](/public/upload/machine/gpu_sm.jpg)

SM内部包含什么?
![](/public/upload/machine/gpu_arch.jpg)

![](/public/upload/kubernetes/gpu_arch.png)
![](/public/upload/machine/gpu_sm.jpg)

流式多处理器(Streaming Multiprocessor、SM)是 GPU 的基本单元,每个 GPU 都由一组 SM 构成,SM 中最重要的结构就是计算核心 Core
1. 线程调度器(Warp Scheduler):线程束(Warp)是最基本的单元,每个线程束中包含 32 个并行的线程,它们**使用不同的数据执行相同的命令**,调度器会负责这些线程的调度;
Expand All @@ -94,6 +94,13 @@ SM内部包含什么?

与个人电脑上的 GPU 不同,数据中心中的 GPU 往往都会用来执行高性能计算和 AI 模型的训练任务。正是因为社区有了类似的需求,Nvidia 才会在 GPU 中加入张量(标量是0阶张量,向量是一阶张量, 矩阵是二阶张量)核心(Tensor Core)18专门处理相关的任务。张量核心与普通的 CUDA 核心其实有很大的区别,**CUDA 核心在每个时钟周期都可以准确的执行一次整数或者浮点数的运算**,时钟的速度和核心的数量都会影响整体性能。**张量核心通过牺牲一定的精度可以在每个时钟计算执行一次 4 x 4 的矩阵运算**。PS:就像ALU 只需要加法器就行了(乘法指令转换为多个加法指令),但为了提高性能,直接做了一个乘法器和加法器并存。


CUDA 编程主打一个多线程 thread,多个 thread 成为一个 thread block,同一个 block 内的 thread 共享Shared Memory/L1 cache/SRAM,而 thread block 就是由这么一个 Streaming Multiprocessor (SM) 来运行的。
1. 一个 SM 里面有多个 subcore,每个 subcore 有一个 32 thread 的 warp scheduler 和 dispatcher, 在一个 warp 中的所有线程都会同时执行相同的指令,但是输入的数据不同,这种机制也被称为 SIMD(单指令多数据)或 SIMT(单指令多线程)模型。
2. GPU 的调度单元以 warp 为单位进行调度,而不是单个线程。这意味着整个 warp 会被分配到一个流多处理器(SM)上并一起执行。在 CUDA 中,占用率是一个重要的性能指标,表示每个 SM 上激活的 warps 与 SM 可以支持的最大 warp 数量的比例。更高的占用率通常意味着更好的硬件利用率。
3. 如果 warp 中的所有线程都采取相同的分支路径(例如,都满足某个条件语句),则它们会继续同步执行。但是,如果线程在分支上有不同的路径(即分歧),则 warp 会执行每个路径,但不是所有线程都会在每个路径上活跃。这可能导致效率下降,因为即使某些线程在特定路径上没有工作,整个 warp 也必须等待该路径完成。为了确保高效执行,开发人员可能需要确保他们的代码减少 warp 分歧。
4. Global memory 就是我们常说的 显存 (GPU memory),其实是比较慢的。Global memory 和 shared memory 之间是 L2 cache,L2 cache 比 global memory 快。每次 shared memory 要到 global memory 找东西的时候, 会去看看 l2 cache 里面有没有, 有的话就不用去 global memory 了. 有的概率越大, 我们说 memory hit rate 越高, CUDA 编程的一个目的也是要尽可能提高 hit rate. 尤其是能够尽可能多的利用比较快的 SRAM (shared memory).但是因为 SRAM 比较小, 所以基本原则就是: 每次往 SRAM 移动数据的, 都可能多的用这个数据. 避免来来回回的移动数据. 这种 idea 直接促成了最近大火的 FlashAttention. FlashAttention 发现很多操作计算量不大, 但是 latency 很高, 那肯定是不符合上述的 "每次往 SRAM 移动数据的". 怎么解决呢?Attention 基本上是由 matrix multiplication 和 softmax 构成的. 我们已经知道了 matrix multiplication 是可以分块做的, 所以就剩下 softmax 能不能分块做? softmax 其实也是可以很简单的被分块做的. 所以就有了 FlashAttention.

### 执行模型


Expand Down
3 changes: 2 additions & 1 deletion _posts/MachineLearning/2022-03-02-embedding.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ Embedding 技术对深度学习推荐系统的重要性
1. Embedding 是处理稀疏特征的利器。因为推荐场景中的类别、ID 型特征非常多,大量使用 One-hot 编码会导致样本特征向量极度稀疏,而深度学习的结构特点又不利于稀疏特征向量的处理,因此几乎所有深度学习推荐模型都会由 Embedding 层负责将稀疏高维特征向量转换成稠密低维特征向量。
2. Embedding 可以融合大量有价值信息,本身就是极其重要的特征向量 。 相比由原始信息直接处理得来的特征向量,Embedding 的表达能力更强,特别是 Graph Embedding 技术被提出后,Embedding 几乎可以引入任何信息进行编码,使其本身就包含大量有价值的信息,所以通过预训练得到的 Embedding 向量本身就是极其重要的特征向量。

Word2vec 是生成对“词”的向量表达的模型,其中,Word2vec 的训练样本是通过滑动窗口一一截取词组生成的。在训练完成后,模型输入向量矩阵的行向量,就是我们要提取的词向量。

在自然语言处理(NLP)中,嵌入(Embedding)是一种将离散变量(如单词、短语、或者文档)转换为连续向量的方法。这种转换的目的是让计算机能更好地理解和处理自然语言数据。embedding矩阵的本质是一个查找表 ,每个单词会定位这个表中的某一行,而这一行就是这个单词学习到的在嵌入空间的语义。Word2vec 是生成对“词”的向量表达的模型,其中,Word2vec 的训练样本是通过滑动窗口一一截取词组生成的。在训练完成后,模型输入向量矩阵的行向量,就是我们要提取的词向量。

![](/public/upload/compute/embedding_sample.png)

Expand Down
2 changes: 2 additions & 0 deletions _posts/MachineLearning/2023-05-20-llm_try.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,8 @@ LangChain实时推荐天气

[大模型元年,万能的淘宝有了万能AI](https://mp.weixin.qq.com/s/QBEr2HwHdab53V97bUYTkw) 购物从需要明确知道要买什么,去搜索。变成了只要有需求,都可以询问AI。

[大模型BI:商业智能背后的3大关键技术](https://mp.weixin.qq.com/s/kSXcmb8UWDukshH_MQkpDw)LLM就像一个刚进公司的实习生,名牌大学毕业,基础知识储备扎实,但还是需要一个老师傅告诉他每一步该怎么做,他才可能完成任务执行。如果我提出这样的问题:“我该怎么做才能提高整体销量?”,那就要看是零售行业还是制造行业,每个行业的分析思路差别巨大。如何让大模型从一名实习生成长为一名资深从业人员,解决更有难度的问题,首先要深入行业内部,自己成为那个资深人员,才可能知道如何将行业知识与大模型深度融合,这里不是简单的堆数据做训练,然后发布XXX-GPT。

## 这一轮技术革命的真正“终局”是什么样子

LLM的强大之一在于其能够将众多的NLP下游任务都转换成统一的形式。即LLM可以定义为求解`P(output | input, task)`的过程。如,
Expand Down
Loading

0 comments on commit 13d8303

Please sign in to comment.