上图是一个通常的多batch的LLM的Inference过程。其中黄色表示用户的prompt,蓝色表示LLM生成的文本,红色表示结束符号。
这是改进后的continuous batching的示意图。
https://www.anyscale.com/blog/continuous-batching-llm-inference
How continuous batching enables 23x throughput in LLM inference while reducing p50 latency
https://www.zhihu.com/tardis/zm/art/647813179
大模型文本生成——解码策略(Top-k & Top-p & Temperature)
https://b23.tv/OfdfBnz
如何设置大模型推理参数,top_k,top_p, temperature, num_beams
https://blog.csdn.net/HUSTHY/article/details/125990877
Contrastive Search Decoding——一种对比搜索解码文本生成算法
https://zhuanlan.zhihu.com/p/656707466
DoLa:层对比解码改善LLM的真实性
投机采样使用两个模型:一个是原始目标模型,另一个是比原始模型小得多的近似模型。近似模型用于进行自回归串行采样,而大型模型则用于评估采样结果。
https://zhuanlan.zhihu.com/p/651359908
大模型推理妙招—投机采样(Speculative Decoding)
LLM Inference的性能评估主要有以下几个方面:
https://www.databricks.com/blog/llm-inference-performance-engineering-best-practices
LLM Inference Performance Engineering: Best Practices
https://docs.vllm.ai/en/latest/
Easy, fast, and cheap LLM serving for everyone
Retrieval Augmented Generation(检索增强生成):通过检索获取相关的知识并将其融入Prompt,让大模型能够参考相应的知识从而给出合理回答。因此,可以将RAG的核心理解为“检索+生成”,前者主要是利用向量数据库的高效存储和检索能力,召回目标知识;后者则是利用大模型和Prompt工程,将召回的知识合理利用,生成目标答案。
https://zhuanlan.zhihu.com/p/668082024
一文搞懂大模型RAG应用
https://blog.csdn.net/v_JULY_v/article/details/137711599
RAG进阶之通用文档处理:从RAGFlow、TextMonkey到mPLUG-DocOwl 1.5
https://zhuanlan.zhihu.com/p/695299235
RAG路线图: Reliable, Adaptable, and Attributable Language Models with Retrieval
假设有一个10w的外部数据,我们的原始输入Prompt长度为100,长度限制为4k,通过查询-检索的方式,我们能将最有效的信息提取集中在这4k的长度中,与Prompt一起送给大模型,从而让大模型得到更多的信息。此外,还能通过多轮对话的方式不断提纯外部数据,达到在有限的输入长度限制下,传达更多的信息给大模型。
https://blog.csdn.net/qq_40491305/article/details/130898052
一文看懂LlamaIndex用法,为LLMs学习私有知识
向量搜索在搜索、推荐、NLP等众多应用领域被广泛的使用,典型的互联网业务,包括电商、出行、点评、地图等都大量使用相关技术。随着ChatGPT带来的AI技术应用新热潮,向量数据库又一次地获得了更多的关注。它可以解决LLM不长记性(Memory,记忆)的问题。
普遍认为LLM+Vector Search+API pool会变成复杂AI场景的标准解决方案。
类似Pinecone,Weaviate,Qdrant,Chroma这样的专用向量数据库最初是为了解决ChatGPT的记忆能力不足而出现的Workaround。
最发布的ChatGPT 3.5的上下文窗口只有4K Token,也就是不到两千个汉字。然而当下GPT 4的上下文窗口已经发展到了128K,扩大了32倍,足够塞进一整篇小说了。而且未来还会更大。这时候,用作临时周转的垫脚石——向量数据库SaaS就处在一个尴尬的位置上了。
https://www.zhihu.com/question/603117242
为什么各大VC最近都在投向量数据库?
https://zhuanlan.zhihu.com/p/668509885
向量数据库凉了吗?
gradient_accumulation_steps用于处理当模型的参数数量超过GPU内存容量时的情况。在训练大型模型时,尤其是在使用较小的GPU进行训练时,可能会遇到内存不足的问题。这时,可以使用梯度累积来分割批次,从而使得每个小批次的计算都在GPU的内存限制范围内。
如果设置了gradient_accumulation_steps=N,那么模型会先对N个批次的数据进行前向和反向传播,将这些批次的梯度累积起来,然后才进行一次权重更新。这样,实际上的批次大小相当于 per_device_train_batch_size * N。
https://mp.weixin.qq.com/s/39MYrsB3gXpfzTTOgQjDwg
幻方AI DeepSeek模型背后的万卡集群建设
Alpa是一个自动探索分布式策略的工具。
论文:
《Alpa: Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning》
代码:
https://github.com/openxla/xla/tree/main/xla/hlo/experimental/auto_sharding
文档:
https://alpa.ai/index.html
在介绍Alpa之前,先介绍一下Google的optimization库:
https://github.com/google/or-tools
文档:
https://developers.google.com/optimization
ILP可以分为下列几种类型:
(1)纯整数线性规划(Pure integer linear programming):指全部决策变量都必须取整数值的整数线性规划。有时,也称为全整数规划。
(2)混合整数线性规划(Mimed integer linear programming):指决策变量中有一部分必须取整数值,另一部分可以不取整数值的整数线性规划。
(3)0-1型整数线性规划(Zero-one integer linear programming):指决策变量只能了取值0或1的整数线性规划。
ILP相关的库还有pyomo、cyipopt等。
为了评估不同Sharding策略的好坏,我们需要对Sharding策略建立cost model。
这里的cost主要包括:
其中,Memory cost为该ILP问题的约束条件,其他几个为决策变量的影响因子。
Resharding cost是不同sharding之间切换产生的开销:
MLIR中有mesh dialect用于描述Sharding Spec:
module @sharding_test {
mesh.mesh @mesh_2d(shape = 4x8)
func.func @matmul_on_operand_shard_batch_and_k(%arg0: tensor<32x1000x4096xf32>, %arg1: tensor<32x4096x8192xf32>) -> tensor<32x1000x8192xf32> {
%sharding_annotated = mesh.shard %arg0 to <@mesh_2d, [[0], [], [1]]> annotate_for_users : tensor<32x1000x4096xf32>
%sharding_annotated_0 = mesh.shard %arg1 to <@mesh_2d, [[0], [1]]> annotate_for_users : tensor<32x4096x8192xf32>
%0 = tosa.matmul %sharding_annotated, %sharding_annotated_0 : (tensor<32x1000x4096xf32>, tensor<32x4096x8192xf32>) -> tensor<32x1000x8192xf32>
%sharding_annotated_1 = mesh.shard %0 to <@mesh_2d, [[0]], partial = sum[1]> : tensor<32x1000x8192xf32>
return %sharding_annotated_1 : tensor<32x1000x8192xf32>
}
}
如何用数学语言表示一个二维的one-hot:
\[\begin{aligned} \forall (v,u) \in E, \ & \forall i \in [0, k_v), & \sum_{j \in [0, k_u)}\mathbf{e}_{vu} [i,j] \leq \mathbf{s}_v[i] \\ & \forall j \in [0, k_u), & \sum_{i \in [0, k_v)}\mathbf{e}_{vu} [i,j] \leq \mathbf{s}_u[j] \\ \end{aligned}\]参考:
https://zhuanlan.zhihu.com/p/487588274
用ILP和DP自动探索DL分布式策略——Alpa
https://zhuanlan.zhihu.com/p/571836701
Alpa论文解读
FairScale是由Facebook Research开发的PyTorch扩展库。FSDP就是首发于这个库。
https://zhuanlan.zhihu.com/p/412118353
Kokkos:一个异构并行计算通用平台
数据流并行是Pipeline并行的高阶版本。广义的数据流希望通过图编译找到全局最优策略,本质上是一种把编译器当万金油的惰性做法,深度学习框架在系统调度这种比较粗放的尺度,围绕数据流做了这么多年的自动并行化,最后业界主流实际上的并行策略还是预设的这些Pipeline、Tensor并行的组合,而不是编译器搜出来的自动化的并行策略。
https://mp.weixin.qq.com/s/_1Yr_BbFhlNEW7UtYvAaoA
分布式深度学习,93页ppt概述最新DDL技术发展
https://mp.weixin.qq.com/s/jC5v9BKQvlxa2_6cikXV9w
分布式算法与优化,118页pdf
https://zhuanlan.zhihu.com/p/58806183
深度学习的分布和并行处理系统
https://zhuanlan.zhihu.com/p/56991108
一文说清楚Tensorflow分布式训练必备知识
https://mp.weixin.qq.com/s/r951Iasr4dke6MPHsUO0TA
开源DAWN,Stanford的又一力作
https://mp.weixin.qq.com/s/2jrMDeMcb47zpPfFLEcnIA
深度学习平台技术演进
https://mp.weixin.qq.com/s/L4CMKS53pNyvhhqvQhja0g
5种商业AI产品的技术架构设计
https://mp.weixin.qq.com/s/IqjKdAlGYREqCR9XQB5N1A
伯克利AI分布式框架Ray,兼容TensorFlow、PyTorch与MXNet
https://mp.weixin.qq.com/s/aNX_8UDYI_0u-MwMTYeqdQ
开发易、通用难,深度学习框架何时才能飞入寻常百姓家?
https://mp.weixin.qq.com/s/UbAHB-uEIvqYZCB7xIAJTg
机器学习新框架Propel:使用JavaScript做可微分编程
https://mp.weixin.qq.com/s/Ctl65r4iZNEOBxiiX2I2eQ
Momenta王晋玮:让深度学习更高效运行的两个视角
https://zhuanlan.zhihu.com/p/371499074
OneFlow——让每一位算法工程师都有能力训练GPT
您的打赏,是对我的鼓励