Transformer——Q147 分析ZeRO优化器的内存节省量化模型

大模型训练ZeRO内存优化原理详解 本文介绍 Zero Redundancy Optimizer (ZeRO),如何减少内存使用并加速大规模模型的训练。 阅读详情

该问题归类到Transformer架构问题集——训练与优化——分布式训练。请参考LLM数学推导——Transformer架构问题集。

1. 问题背景或来源

在深度学习领域,尤其是大语言模型(LLM)的训练过程中,模型参数规模呈爆炸式增长。从 GPT-3 的 1750 亿参数,到 GPT-4、PaLM 等更为庞大的模型,如此巨量的参数对计算设备的内存提出了极高要求。以 GPT-3 为例,若采用 FP32 格式存储其参数,仅模型参数就需约 700GB 内存,而当前主流的 GPU 设备,如 NVIDIA A100,内存容量仅为 80GB,远远无法满足单卡训练的需求。

传统的训练方式,如数据并行,虽然可以通过多卡并行来处理大规模数据,但随着模型规模的扩大,每卡需要存储完整的模型参数、优化器状态以及中间激活值,导致内存占用急剧增加。当模型参数和中间计算结果超出设备内存容量时,训练过程就会因内存不足而中断。因此,如何在有限的内存资源下训练超大规模模型,成为深度学习领域亟待解决的关键问题。

ZeRO(Zero Redundancy Optimizer)优化器正是为解决这一问题而诞生的。它通过对模型参数、优化器状态和梯度进行分片存储与计算,打破了传统训练方式的内存限制,极大地提升了内存使用效率,使得在普通计算集群上训练超大规模模型成为可能。

2. 技术原理或数学理论的解析

2.1 ZeRO 优化器的核心技术

ZeRO 优化器主要通过三个阶段(ZeRO - Stage1、ZeRO - Stage2、ZeRO - Stage3)来实现内存节省,每个阶段在内存优化和通信开销之间进行不同的权衡。

ZeRO - Stage1:梯度分片

在传统的数据并行训练中,每个计算节点都保存完整的梯度信息。而在 ZeRO - Stage1 中,梯度被均匀地分片存储在不同的节点上。假设共有 N 个计算节点,模型的总梯度为 \nabla\theta,那么每个节点仅存储 \frac{1}{N} 的梯度信息。在参数更新时,各节点通过 All - Reduce 操作聚合梯度,再进行参数更新。

从内存占用角度来看,设模型参数数量为 P,每个参数占用的字节数为 b(如 FP32 格式下 b = 4 字节),则传统方式下每个节点的梯度内存占用为 P\times b。而在 ZeRO - Stage1 中,每个节点的梯度内存占用降低为 \frac{P\times b}{N}。

ZeRO - Stage2:优化器状态分片

除了梯度分片,ZeRO - Stage2 进一步对优化器状态进行分片。优化器状态(如 Adam 优化器中的一阶矩、二阶矩)在传统训练中也是每个节点完整保存。在 ZeRO - Stage2 中,优化器状态同样被划分为 N 份,每个节点仅保存和更新属于自己的那部分优化器状态。

设优化器状态的总大小与模型参数大小相同(实际可能因优化器类型有所差异),在传统方式下,每个节点的优化器状态内存占用为 P\times b。而在 ZeRO - Stage2 中,每个节点的优化器状态内存占用降低为 \frac{P\times b}{N}。结合梯度分片,此时每个节点的总内存节省为 P\times b + P\times b - (\frac{P\times b}{N} + \frac{P\times b}{N}) = 2P\times b(1 - \frac{1}{N})。

ZeRO - Stage3:参数分片

ZeRO - Stage3 是最激进的内存优化阶段,它将模型参数也进行分片存储。每个节点仅保存和更新模型参数的一部分,同时在计算过程中,通过通信机制获取必要的参数来完成前向传播和反向传播。这样,每个节点的模型参数内存占用降低为 \frac{P\times b}{N}。

此时,每个节点的总内存占用为 \frac{P\times b}{N} + \frac{P\times b}{N} + \frac{P\times b}{N} = \frac{3P\times b}{N},相较于传统方式,内存节省比例高达 1 - \frac{3}{N}。

2.2 内存节省量化模型推导

设 M_{traditional} 为传统数据并行训练方式下每个节点的内存占用,M_{ZeRO - Stage1}、M_{ZeRO - Stage2}、M_{ZeRO - Stage3} 分别为 ZeRO 优化器三个阶段每个节点的内存占用。

  • 传统数据并行:M_{traditional} = P\times b + P\times b + P\times b = 3P\times b(分别为模型参数、优化器状态、梯度的内存占用)
  • ZeRO - Stage1:M_{ZeRO - Stage1} = P\times b + P\times b + \frac{P\times b}{N} = P\times b(2 + \frac{1}{N}),内存节省量 \Delta M_1 = 3P\times b - P\times b(2 + \frac{1}{N}) = P\times b(1 - \frac{1}{N})
  • ZeRO - Stage2:M_{ZeRO - Stage2} = P\times b + \frac{P\times b}{N} + \frac{P\times b}{N} = P\times b(1 + \frac{2}{N}),内存节省量 \Delta M_2 = 3P\times b - P\times b(1 + \frac{2}{N}) = 2P\times b(1 - \frac{1}{N})
  • ZeRO - Stage3:M_{ZeRO - Stage3} = \frac{P\times b}{N} + \frac{P\times b}{N} + \frac{P\times b}{N} = \frac{3P\times b}{N},内存节省量 \Delta M_3 = 3P\times b - \frac{3P\times b}{N} = 3P\times b(1 - \frac{1}{N})

从上述公式可以清晰地看出,随着计算节点数量 N 的增加,ZeRO 优化器各阶段的内存节省量逐渐增大,尤其是在 ZeRO - Stage3 阶段,内存节省效果最为显著。

3. 根因分析

3.1 传统训练方式的内存瓶颈

传统数据并行训练方式为了保证各节点模型参数的一致性,每个节点都需要保存完整的模型参数、优化器状态和梯度。这种方式在模型规模较小时可以正常运行,但随着 LLM 模型参数呈指数级增长,内存占用也随之剧增,很快就会超过单个计算节点的内存容量,导致训练无法进行。

3.2 ZeRO 优化器的创新思路

ZeRO 优化器打破了传统方式中每个节点必须保存完整信息的固有模式,基于分布式系统中节点间通信的可行性,将梯度、优化器状态和模型参数进行分片存储。通过节点间的通信和协同计算,在保证训练结果一致性的前提下,大幅减少了每个节点的内存占用,从而突破了内存限制。其核心在于利用分布式系统的特性,在内存节省和通信开销之间找到平衡,实现高效的大规模模型训练。

4. 在 LLM 中的使用示例

4.1 GPT - 3 训练

以 GPT - 3 的训练为例,其拥有 1750 亿个参数。若采用 FP32 格式存储,参数占用内存约 700GB。假设使用 8 个计算节点进行训练:

  • 传统数据并行:每个节点需存储约 700GB 的模型参数,加上优化器状态和梯度,总内存占用远超当前 GPU 设备的内存容量。
  • ZeRO - Stage1:每个节点的梯度内存占用降低为 \frac{700}{8} = 87.5GB,相较于传统方式,仅梯度部分就节省了大量内存。
  • ZeRO - Stage2:结合优化器状态分片,每个节点的内存节省量进一步增加,缓解了内存压力。
  • ZeRO - Stage3:将模型参数也进行分片,每个节点仅需存储 \frac{700}{8} = 87.5GB 的模型参数,使得在普通计算集群上训练 GPT - 3 成为可能。

4.2 BERT - Large 微调

BERT - Large 模型包含 3.4 亿个参数,采用 FP32 格式存储约占用 136GB 内存。在微调过程中,若使用 4 个计算节点:

  • 传统方式:每个节点内存压力较大,可能因内存不足导致训练中断。
  • ZeRO - Stage3:每个节点仅需存储 \frac{136}{4} = 34GB 的模型参数,同时优化器状态和梯度也进行分片存储,显著降低了内存需求,保证了微调过程的顺利进行。

4.3 OPT 模型训练

OPT(Open Pretrained Transformer)模型同样具有庞大的参数量。在训练过程中,使用 ZeRO 优化器可以有效减少内存占用。例如,当使用 16 个计算节点时,ZeRO - Stage3 可以将每个节点的内存占用降低到原来的 \frac{1}{16},使得训练能够在有限的内存资源下高效进行。

5. 优缺点分析

5.1 优点

  • 显著节省内存:通过梯度、优化器状态和模型参数分片,ZeRO 优化器能够大幅降低每个计算节点的内存占用,使得超大规模模型的训练成为可能。
  • 灵活的配置:提供三个不同阶段的内存优化策略,用户可以根据计算节点数量、通信带宽和内存容量等实际情况,选择合适的阶段,在内存节省和通信开销之间找到最佳平衡。
  • 兼容性强:可以与多种深度学习框架和模型结构相结合,无需对模型进行大量修改即可应用,具有广泛的适用性。

5.2 缺点

  • 增加通信开销:由于参数、梯度和优化器状态的分片,节点之间需要频繁进行通信来聚合信息和协同计算,尤其是在 ZeRO - Stage3 阶段,通信开销显著增加。当网络带宽不足时,通信延迟可能会成为训练效率的瓶颈。
  • 训练复杂度提高:分片存储和计算增加了训练过程的复杂性,对分布式系统的管理和调试提出了更高的要求。同时,不同阶段的内存优化策略需要用户根据实际情况进行合理选择和配置,增加了使用难度。
  • 可能影响训练稳定性:在参数分片和通信过程中,可能会引入一些不确定性因素,影响训练的稳定性。例如,通信延迟或数据传输错误可能导致参数更新不一致,从而影响模型的收敛速度和最终性能。

6. 优化策略分析

6.1 通信优化

  • 压缩通信数据:采用梯度压缩技术,如量化、稀疏化等,减少节点间传输的数据量。例如,将梯度从 FP32 格式转换为 FP16 或更低精度格式进行传输,在保证精度损失可接受的前提下,降低通信开销。
  • 重叠计算与通信:利用计算和通信可以重叠进行的特性,在节点进行本地计算的同时,进行数据传输。例如,在计算前向传播的过程中,同时将上一轮的梯度发送出去,提高资源利用率。

6.2 混合并行策略

结合数据并行、模型并行和张量并行等其他并行策略,与 ZeRO 优化器协同使用。例如,在 ZeRO - Stage3 的基础上,再采用模型并行将模型的不同层分布到不同节点,进一步降低每个节点的内存压力,同时平衡计算负载和通信开销。

6.3 动态资源分配

根据训练过程中各节点的内存使用情况、计算负载和通信延迟等动态信息,实时调整 ZeRO 优化器的配置。例如,当某个节点内存占用过高时,自动调整参数分片策略,将部分数据转移到其他节点,实现资源的动态平衡。

7. 代码示例(基于 PyTorch 和 DeepSpeed)

import torch
import deepspeed

# 定义模型
class MyModel(torch.nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.fc1 = torch.nn.Linear(1024, 2048)
        self.fc2 = torch.nn.Linear(2048, 10)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        return self.fc2(x)

model = MyModel()
# ZeRO配置
config = {
    "train_batch_size": 32,
    "optimizer": {
        "type": "Adam",
        "params": {
            "lr": 0.001
        }
    },
    "zero_optimization": {
        "stage": 3,  # 使用ZeRO - Stage3
        "overlap_comm": True,  # 启用计算与通信重叠
        "contiguous_gradients": True,  # 连续梯度以提高通信效率
        "reduce_bucket_size": model.config.hidden_size * model.config.hidden_size,
        "stage3_prefetch_bucket_size": 0.9 * model.config.hidden_size * model.config.hidden_size,
        "stage3_param_persistence_threshold": 0
    }
}

# 初始化ZeRO
model_engine, optimizer, _, _ = deepspeed.initialize(
    model=model,
    model_parameters=model.parameters(),
    config=config
)

# 训练循环
for epoch in range(10):
    for batch in dataloader:
        inputs, labels = batch
        outputs = model_engine(inputs)
        loss = torch.nn.functional.cross_entropy(outputs, labels)
        model_engine.backward(loss)
        model_engine.step()

8. 代码解读

  • 模型定义:首先定义了一个简单的包含两个全连接层的神经网络模型 MyModel。
  • ZeRO 配置:通过字典 config 对 ZeRO 优化器进行配置。设置 stage 为 3,表示使用 ZeRO - Stage3 进行内存优化;overlap_comm 设置为 True,启用计算与通信重叠,以提高效率;contiguous_gradients 用于使梯度连续,优化通信过程;同时还设置了与内存和通信相关的其他参数,以适应模型和训练需求。
  • 初始化 ZeRO:使用 deepspeed.initialize 函数对模型、优化器等进行初始化,将普通的 PyTorch 模型转换为支持 ZeRO 优化的模型引擎。
  • 训练循环:在训练循环中,与普通的 PyTorch 训练类似,进行前向传播计算损失,然后通过 model_engine.backward 进行反向传播计算梯度,最后使用 model_engine.step 更新模型参数。在这个过程中,ZeRO 优化器会自动根据配置进行梯度、优化器状态和模型参数的分片处理和通信操作。

9. 总结

ZeRO 优化器通过梯度、优化器状态和模型参数分片的创新方式,为解决大语言模型训练中的内存瓶颈问题提供了有效的解决方案。通过详细的内存节省量化模型推导,我们可以清晰地看到其在不同阶段的内存优化效果。在 LLM 的实际训练中,ZeRO 优化器已经展现出强大的能力,使得超大规模模型的训练在普通计算集群上成为可能。

然而,ZeRO 优化器也存在通信开销大、训练复杂度高和可能影响训练稳定性等问题。通过采用通信优化、混合并行策略和动态资源分配等优化方法,可以在一定程度上缓解这些问题。随着深度学习模型规模的不断扩大,ZeRO 优化器及其相关技术将持续发展和完善,为大语言模型的训练和应用提供更有力的支持。

分布式训练数据并行极致优化:ZeRO 随着 ChatGPT 的爆火,大模型成为了近些年人工智能的研究热点。大模型能力惊艳,但是训练起来成本也不小。大模型,顾名思义,最大的特点就是 “大”。这里的 “大” 通常指的就是模型的参数量大。因此,在分布式训练中,如何利用有限的显存训练更大的模型就是重点。分布式的训练的常用范式包括数据并行和模型并行,其中模型并行又包括张量并行和流水线并行。Megatron-ML 等框架中实现的的张量并行已经是是训练大模型的标配,但是数据并行作为最简洁、最易理解、最易实现的分布式训练范式,近些年还是有了完善的优化。 阅读详情

相关推荐

深度学习之Encoder-Only原理与实战

【代码】深度学习之Encoder-Only原理与实战。

yumiwangzi30的博客 246

【DeepSpeed】零冗余优化器(Zero Redundancy Optimizer, ZeRO)

零冗余优化器(Zero Redundancy Optimizer, ZeRO)是 DeepSpeed 提供的一种分布式训练优化技术,旨在通过分片模型参数、梯度和优化器状态,显著降低显存占用,同时支持超大规模模型训练。核心思想:ZeRO 将模型参数、梯度和优化器状态分片(partition)到多个设备上,消除冗余存储,仅在需要时通过通信收集所需数据。分片级别:ZeRO Stage 1:分片优化器状态(如 Adam 的动量和方差)。ZeRO Stage 2:分片优化器状态和梯度。ZeRO Stage 3:分片优

彬彬侠的博客 3404

PTMs:大模型预训练技巧之ZeRO训练优化技术(DeepSpeed库-减少参数的冗余+优化通信+本质是时间换空间)的简介(四大核心技术(分布式训练/模型分片/梯度累积/内存优化)+ZeRO四个版本(

​ PTMs:大模型预训练技巧之ZeRO训练优化技术(DeepSpeed库-减少参数的冗余+优化通信+本质是时间换空间)的简介(四大核心技术(分布式训练/模型分片/梯度累积/内存优化)+ZeRO四个版本(优化器状态分片→梯度分片→参数分片→综合)、使用方法、案例应用之详细攻略 目录 相关文章 相关论文 ZeRO训练优化技术(DeepSpeed库)的简介 ZeRO训练优化技术的使用方法 相关文章 PTMs:大模型预训练技巧之ZeRO训练优化技术(DeepSpee

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 1924

Deepspeed的机制学习以及ZeRO-1、ZeRO-2和ZeRO-3的区别

ZeRO(Zero Redundancy Optimizer)是一种为了解决大规模分布式训练中的内存瓶颈问题而设计的优化器。它通过减少冗余数据来优化模型的内存使用,允许训练更大的模型。ZeRO分为三个优化级别:ZeRO-1、ZeRO-2和ZeRO-3,每个级别都在前一个级别的基础上进一步减少内存占用。ZeRO-1、ZeRO-2和ZeRO-3是递进的优化级别,每个级别都在前一个级别的基础上减少更多的内存冗余。

samoyan的博客,记录技术成长~ 3万+

【信息科学与工程学】【数据科学】第十八篇 数值分析 系列二 数值算法设计01

编号类型领域问题问题的数学分析及数值分析算法逐步推理思考的数学表达式参数列表及参数的边界范围及条件及常数关联知识1数值积分数值逼近计算定积分 I=∫ab​f(x)dx的近似值。数学分析:将积分区间等分,利用插值多项式近似被积函数,构造机械求积公式。数值分析:Newton-Cotes公式是等距节点的插值型求积公式。高阶公式(n≥8)因Cotes系数有正负,数值不稳定。偶阶公式(如Simpson)具有n+1次代数精度。为提高精度,常采用复化求积法(将区间细分后应用低阶公式)。

weixin_49199313的博客 156

【信息科学与工程学】计算机科学与自动化 第二百三十三篇 凤凰架构01

编号类型领域系统软件/硬件或系统集成方案及系统架构模块子模块函数名称/算法名称算法的数学分析及计算机体系架构及数据结构与算法详细设计及参数列表及数值范围设计关联知识1共识算法分布式基石状态机复制架构:Proposer/Acceptor/Learner 多节点角色模型,基于操作转移(Operation Transfer)分布式共识PaxosPaxos 协议(Prepare/Promise/Accept/Accepted 两阶段)数学基础:多数派(Quorum)投票,基于鸽巢原理保证 W+R>N 时读写集合必有

weixin_49199313的博客 263

中英双语介绍DeepSpeed 的 ZeRO 优化

DeepSpeed introduces the ZeRO (Zero Redundancy Optimizer) optimization technique, a groundbreaking solution to reduce memory usage and improve efficiency during training.

阿正的梦工坊 2801

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 12 公有云里的“多Region + 多AZ“ 02 运营算法01

算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)云厂商提高闲置资源利用率。算法复杂度为O(N),N为实例数量。

weixin_49199313的博客 279

ZeRO论文阅读

在深度学习中,通常会使用多个GPU来加速训练过程,这就需要在GPU之间有效地传输模型参数、梯度和其他相关数据。的技术,通过减少模型参数和计算过程中的精度要求来降低计算成本。这种方法有助于克服单个设备内存的限制,并提高训练大型模型的效率。份,避免重复-------->参与服务器的思想-------->内存使用下降。模型并行是一种用于训练大型神经网络的分布式计算策略,旨在将模型参数。的时候,将其分散开来,需要的时候调用即可,该技术则是应用于此。半精度是一种表示数值的方法,使用。地方---->和参数服务器一样。

omit250的博客 1538

如何在huggingface上申请下载使用llama2/3模型

huggingface-cli download --resume-download 模型名称 --local-dir 存放模型的位置 --local-dir-use-symlinks False --resume-download --token token序列号xxxxxxx。登录huggingface,在模型详情页面上,找到这个表单,填写内容,提交申请。需要使用梯子,country填写梯子的位置吧(比如美国)等待一小时左右,会有邮件通知。

a61022706的博客 1万+

《QMT量化实战系列》支持自定义筛选与排序的多因子策略,实测年化收益超100%

【QMT量化实战系列】推出《支持自定义筛选与排序的多因子策略》,通过Tushare获取38个核心因子数据,实现股票多维筛选(剔除ST股、次新股及特定板块)。策略创新性地采用多因子加权排名机制,通过(股票数-排名+1)/股票数*100的算法计算各因子得分,支持自定义权重组合。该策略提供完整代码及详细注释,涵盖数据获取、因子筛选、权重排序等核心环节,帮助用户构建个性化量化模型。系列内容每月更新1-2期,由浅入深讲解QMT平台实战应用。

qq_46262068的博客 1255

图灵-NLG、DeepSpeed 和 ZeRO 优化器

微软最新语言模型:规模庞大,能力超群 这段文字介绍了微软最新推出的一个大型语言模型。该模型属于“Transformer”架构,其参数数量高达 170 亿,远超之前的 BERT(3.4 亿参数)、GPT2(15 亿参数)和 Megatron LM(83 亿参数)。 模型的功能: 语言建模: 模型可以根据输入的文字,预测下一个词语或句子,并生成流畅自然的文本。 问答系统: 模型可以根据给定的文本...

YannicKilcher的博客 277

大华摄像头GB28181协议接入EasyCVR全流程(附常见错误排查)

本文详细阐述了大华摄像头通过GB28181协议接入EasyCVR视频管理平台的全流程,涵盖从核心原理、前期参数规划、Web界面配置到平台侧验证的完整步骤。重点针对网络端口、SIP参数配置等关键环节提供了深度排错指南,并总结了设备无法注册、在线不稳定、拉流失败等常见问题的排查思路与解决方案,旨在帮助安防工程师与系统集成商高效完成设备接入与调试。

weixin_29279153的博客 307

大模型训练中优化策略(数据并行、模型并行、ZeRO等)

在微调时,模型显存占用主要包括和四个部分。对于一个参数量的模型,它的模型参数占用为:将模型参数视为基准,模型梯度占用量与模型参数相同。优化器主采用,它核心计算公式如下:由于需要保存 m 和 v,而 m 和 v 规模与参数梯度相同,因此优化器需要两倍显存容量。同时,在计算中得到的中间结果需要保存在显存中,以便反向传播时计算梯度。对于每一个中间结果,其数据形状为 [Batch, SeqLen, Dim]。

2301_78285120的博客 2378

kaggle-NeurIPS - Open Polymer Prediction 2025-0.069

本文摘要: 本研究基于多任务学习框架,开发了聚合物物理化学性质预测模型,能够根据SMILES字符串同步预测玻璃化转变温度(Tg)、分数游离体积(FFV)等5种关键性质。针对数据缺失率高、样本不均衡等挑战,采用"先补充后扩充"策略整合多源数据,并融合RDKit分子描述符、ChemBERTa语义特征和自编码器特征构建多维度表征。模型采用硬参数共享架构,结合动态加权损失函数和早停机制,在验证集上表现出色,其中密度预测R²达0.92。研究为聚合物性能的高通量预测提供了有效解决方案,对材料智能设计具有重要参考价值。

2302_78976920的博客 782

DeerFlow 系列教程 第十一篇 | Sandbox 沙箱与 Memory 记忆——安全执行与持久认知

用户请求│▼Lead Agent├── 系统提示词组装│ ├── <memory> 段 ← Memory 系统注入用户记忆│ ├── <skill_system> 段│ └── <subagent_system> 段│├── 工具调用│ ├── read_file ├── Sandbox 系统提供隔离执行│ ├── write_file├── 路径虚拟化 + 安全验证│└── 对话结束│▼│├── 过滤消息(去除工具调用中间步骤)├── 检测纠正/强化信号。

weixin_43674738的博客 161

Hugging Face高效训练技术二:大模型分布式训练策略——ZeRO、FSDP

介绍了两种大模型分布式训练策略:ZeRO和FSDP。

qq_56591814的博客 7968

把入库交货单的 GOS 附件自动带进审批 Work Item:用 SOFM 对象打通 SAP Workflow 附件链路

本文介绍了一种在SAP ECC系统中将入库交货单的GOS附件自动附加到Workflow审批项中的解决方案。通过使用BOR对象引用列表和SOFM业务对象,审批人可直接在Work Item中查看附件,无需返回原单据界面。文章详细阐述了从BUS2015业务对象获取附件连接、转换LOIO_ID为SOFM对象引用,并将附件列表绑定到User Decision步骤的具体实现方法。该方案适用于经典SAP Business Workflow+BOR架构,核心ABAP代码可直接复用,有效解决了审批流程中的附件可见性问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 246

大模型训练内存优化技术ZeRO介绍篇

ZeRO 是一项在2020年前后提出的、革命性的内存优化技术,旨在消除数据并行和模型并行中的 **内存冗余**。它保持**低通信开销**和**高计算粒度**,使得模型大小能够与设备数量成比例扩展,同时保持高效率。

585

引以为戒:一个“看不见”的空格,导致上下文超限——从 `llama-server` 错误说起

文章摘要: 本文分享了Qwen工程团队在部署llama-server时遇到的参数失效问题:明明设置了-c 32768上下文参数,却仍报错"超出4096 tokens限制"。经排查发现,问题根源是批处理脚本中续行符^后存在两个空格,导致参数被忽略。文章详细解析了Windows批处理中^的严格语法规则(必须紧贴前字符),对比了错误与正确写法的差异,并给出4条实用建议:使用编辑器显示空白字符、调试时关闭@echo off、预检完整命令、优先单行命令。最后强调在AI系统部署中,此类"隐

刘一说的IT专栏 533

【C#程序员入门AI】向量数据库入门:C#集成Chroma/Pinecone,实现AI知识库检索(RAG基础)

向量存语义,检索补知识!向量数据库:解决AI知识库存储和语义检索问题,让AI有据可查C#集成:Chroma轻量本地练手,Pinecone企业云端落地,一套逻辑无缝切换RAG闭环:检索+大模型,让AI回答精准不瞎编,是AI落地的必经之路咱C#程序员有.NET生态加持,集成向量数据库比Python更简洁、更稳定,不管是个人做智能助手,还是企业做知识库,这套技术栈都能直接落地,2026年必学技能!

人工智能AI技术 999

zero:seo技术领域的搜索引擎优化指南

理解用户的需求、了解搜索引擎的原理、明白如何通过搜索引擎优化对网站产生价值,这是SEO学习中应该陆续深入的三个部分。以个人经验,总结以下搜索引擎优化指南: 理解用户的需求 在做排名前,先将自己放到一个搜索者的位置——“我想通过搜索引擎找到什么?”。结合搜索意图三分法:导航型、信息型、事务型,可以实际的了解到什么是用户想要的、搜索引擎想展现的、网站所应该提供的。 了解搜索引擎的原理

焦大的SEO专栏 2094

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ZeRO & DeepSpeed:可以让训练模型拥有超过1000亿个参数的优化(微软)

来源:AINLPer 微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2020-2-12 论文获取方式: 1、官网地址下载:https://arxiv.org/abs/1910.02054 2、关注 AINLPer 回复: ZeRO 引言     人工智能的最新趋势是拥有更大的自然语言模型提供更好的准确性。但是,由于成本、时间和代码集成简单(没有对代码进行专门的优化),这将...

yinizhilianlove的博客 1963

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习0:数学知识:正态分布1

步骤内容结果1引入e−x2e^{-x^2}e−x2钟形曲线2算它的面积I∫−∞∞e−x2dxI∫−∞∞​e−x2dx3平方变成二重积分I2I^2I24换极坐标简化计算5算出I2πI^2 = \piI2πIπIπ​6代入σ\sigmaσ和μ\muμ做变量替换得到σ2πσ2π​7除以它归一化得到正态分布公式2π2π​不是随便写的,它来自高斯积分∫−∞∞e−x2。

tellmewhoisi的博客 178

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

AlexNet技术剖析:2012年那场ImageNet比赛如何引爆深度学习

2012年,AlexNet在ImageNet竞赛中将图像识别错误率从26.2%降至15.3%,开启深度学习革命。其成功源于三大创新:ReLU激活函数缓解梯度消失、Dropout防止过拟合、GPU并行加速训练。结合大规模标注数据(ImageNet)与数据增强策略,AlexNet突破传统特征工程瓶颈,推动计算机视觉进入“

大雾的小屋的博客 339

计算机毕设:基于深度学习的狗狗品种图像分类

本课题研究基于深度学习的狗狗品种图像分类方法,面向 120 个犬种、20580 张图像构建细粒度分类模型。数据处理采用分层划分并固化清单,模型以 ImageNet 预训练网络做迁移学习,配合标签平滑与数据增强应对标注噪声,评估以 Macro-F1 为主指标并分析易混品种。系统使用 Python 与 Django 实现上传识别、批量识别、资料浏览与记录查询,验证了方法在实际使用场景中的可行性。

WEIXIN_JSJBSZDS的博客 268
上一篇: Transformer——Q146 推导混合并行的资源分配优化公式
下一篇: Transformer——Q148 验证异步训练(Async Training)的收敛条件
墨顿
博客等级 码龄22年 1346粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨顿

唵嘛呢叭咪吽

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值