首页 > 其他分享 >大模型分布式计算的优化方法思考

大模型分布式计算的优化方法思考

时间:2024-10-24 14:31:30浏览次数:1  
标签:计算 模型 并行 分布式计算 通信 并行计算 思考 GPU 优化

转发请附原文链接:https://mp.weixin.qq.com/s/2Dox8nG2hKFQUfGoTvkNCQ

一‍ 引言
近年来,以ChatGPT、Sora为代表的通用生成式大模型的研究取得了显著进展。生成式大模型的参数规模已实现了从千万级别到万亿级别的飞跃,并朝着十万亿级别前进。由于大模型的参数规模巨大,单块GPU无法装在整个模型,需要多块GPU组成集群以数据、流水或张量并行的方式进行分布式计算。这样原本在GPU内部通过总线在各个计算单元之间进行的数据交换,会暴露到GPU外部,加载到GPU间的高速互联网络或者通过PCIe总线,甚至服务器间互联网络上面。这样的架构,是否会导致GPU的计算性能大幅下降?通过哪些优化能够优化GPU的分布式计算性能?
二 跨GPU的并行计算
并行化技术是实现大型模型高效训练和推理的核心手段,它不仅解决了单个GPU内存限制导致的无法完整加载大型模型的问题,还显著增强了这些模型的训练和推理性能。主要的并行化策略包括:数据并行、模型并行以及流水线并行。•  数据并行(DP):数据并行是一种常见的并行化技术,它将大型数据集分割成多个小块,然后在多个处理器或设备上同时进行训练。每个处理器都拥有模型的一个副本,并且使用其分配到的数据子集进行训练。在训练过程中,每个处理器计算出梯度,然后将这些梯度汇总(通常通过平均)来更新模型的参数。这种方法可以显著减少训练时间,但当数据集非常大时,通信开销可能会成为一个问题。
•  流水并行(PP):流水并行是一种将模型的不同部分分配到不同的处理器上的技术。这种方法通常用于处理那些模型非常大,以至于单个处理器无法容纳整个模型的情况。在流水并行中,模型被分解成多个阶段或块,每个阶段在不同的处理器上执行。数据在这些阶段之间流动,类似于工厂流水线。这种方法可以提高内存效率,但设计和实现起来可能比较复杂。
•  张量并行(TP):张量并行是一种将单个张量(即多维数组,是深度学习中的基本数据结构)分割成多个部分,并在不同的处理器上并行计算的技术。这种方法特别适用于那些模型参数非常多,单个处理器无法处理的情况。通过将张量分割,可以使得每个处理器只处理模型的一部分,从而提高计算效率。
图1:‌并行计算的三种基本类型
通过并行计算,可以将大模型训练和推理的计算过程拆解成多个计算进程,分别部署到不同GPU上面同时运行,一方面可以解决GPU纵向扩展时的容量限制问题,另一方面也可以提高大模型训练、推理的计算效率和处理速度。
三 ‍‍‍跨GPU的集合通信
集合通信在并行计算中扮演着至关重要的角色,它通过促进不同计算节点间的高效数据交换与同步,确保了分布式系统中各部分的协调运作,进而加速了计算任务的执行。一个高效的通信机制对于提升并行算法的性能、降低延迟以及增强整体计算效率具有决定性的影响。集合通信是并行计算的主要通信模式,涉及一组进程间的通信,其中所有进程都参与数据的发送和接收。这种通信方式包括了多种操作,如广播(Broadcast)、收集(Gather)、散播(Scatter)、归约(Reduce)和全局归约(Allreduce)等。集合通信的关键在于它允许在多个计算节点之间进行高效的数据交换和同步,这对于数据并行、流水并行和张量并行的计算任务至关重要。
•  采用数据并行(DP)的模型训练中的集合通信操作分析
采用数据并行的模型训练时,每块GPU上都有完整且独立的模型,训练发生在每块GPU内部,每块GPU在完成反向传播之后,都会有自己独立的梯度,需要将所有GPU上的梯度进行汇总并累积,然后再将累积后的梯度分发回各个GPU,用于更新模型的权重参数,如下图所示。
图2:数据并行计算时集合通信操作流程示意图
在数据并行计算过程中,分散在各个GPU上的模型梯度,采用集合通信库的All Reduce原语操作进行汇总和分发。
•  采用流水并行(PP)的模型训练中的集合通信操作分析
采用最基本的流水并行时,每块GPU拥有完整模型中的某一层或某几层,整个训练过程需要跨越相关GPU,将各层前向传播和反向传播的流程串联起来,组成一个环路,如下图所示。
图3:流水并行计算时集合通信操作流程示意图
在流水并行计算过程中,跨GPU的前向和反向传播数据传递,采用集合通信库的MPI.Send和MPI.Recv原语操作。
•  采用张量并行(TP)的模型训练中的集合通信操作分析
以矩阵乘法为例,其中为激活输入,为算子权重。矩阵乘法采用张量并行计算有列切分和行切分两种计算方法。

  1. 权重矩阵按列切分的张量并行计算
    将  按列切分为  和  ,即 。  。将  和  安排在两个不同GPU上同时计算得到,  ,  ,聚合后可以得到  ,如下图所示。
    图4:张量并行计算时权重矩阵按列切分的集合通信操作流程示意图
    在采用列切分权重矩阵的矩阵乘法计算时,子矩阵的计算完成后,采用集合通讯库的All Gather原语操作进行结果汇总。
  2. 权重矩阵按行切分的张量并行计算
    图5:张量并行计算时权重矩阵按行切分的集合通信操作流程示意图
    在采用行切分权重矩阵的矩阵乘法计算时,首先要将激活矩阵  进行列切分,并通过集合通讯库的 Split 原语操作将列切分结果分发给其他 GPU 。在其它 GPU 完成各自子矩阵计算后,再通过集合通讯库的 All Gather 原语操作进行结果汇总。
    在并行计算中,数据并行(DP)在每个 GPU 上拥有完整模型,由于处理不同的数据子集,迭代后各个 GPU 需要通过 AllReduce 进行梯度聚合。为了简化计算,假设每层网络输入和输出维度都是  ,每层网络的权重矩阵和梯度大小均为   ,  为网络的层数,则每个 batch 计算产生的通信量约为  。流水并行(PP)将模型以层为单位进行组合和分割,交由不同 GPU 处理, GPU 之间涉及中间激活值的传递。假设,在一个 batch 计算过程中,每个 PP 层之间发送的中间变量大小和输入的激活值   大小相同均为  ,由于正向和反向传播各需进行一次,因此整个模型的通信次数 () 。整个 batch 训练产生的通信量约为 () 。其中,  是一个训练批次中的微批次(mini-batch)的数量;  是序列长度(即每个训练样本中的元素数量);  是网络输入或输出维度(假设输出与输入维度相等);  是模型网络的层数;  是流水并行(PP)中将每个模型切片中包含的网络层数。
    张量并行(TP)将模型权重分割并分布在不同 GPU 上,每次更新模型权重时 GPU 之间有大量数据交换以同步梯度。权重矩阵的切分有很多方式,将第一个权重矩阵(W1)纵向切分,第二个权重矩阵(W2)横向切分,可以确保每个MLP只进行一次All-Reduce操作,从而优化通信效率。在这种方式下,每个 batch 计算产生的通信量约为  。其中,  是一个训练批次中的微批次(mini-batch)的数量;  是序列长度(即每个训练样本中的元素数量);  是网络输入或输出维度(假设输出与输入维度相等);  是模型网络的层数。
    一般而言  会大于  ,如果  是  的1/10,则可以推测出并行计算中通讯量最大的是张量并行,最小的是数据并行,流水并行居中,即:张量并行通讯量 > 流水并行通讯量 > 数据并行通讯量。四
    数据交换通道集合通信是并行计算中实现数据同步和聚合的关键机制,而其高效实施则依赖于强大的数据交换通道,数据交换通道构成了通信数据传输的物质基础。
    GPU计算单元间的数据交换分为片内和片间两种形式。片内交换涉及流处理器间通过共享内存总线和HBM存储单元的数据传递。而片间数据交换则通过PCIe总线、多芯互联网络或RDMA网络等多样化的数据通道实现,如下图所示。
    图6:多芯互联、PCIe和RDMA三种数据通道在GPU数据交换时的数据路径示意图
    •  PCIe总线:同一主机内部多个GPU之间可以通过PCIe总线进行数据交换。PCIe通信有通过CPU中转和不通过CPU中转(Peer-to-Peer)两种通信方式。通过CPU中转,不仅会增加延迟,而且在高负载情况下可能会成为瓶颈。
    •  多芯互联网络:通常是由GPU生产厂家开发的一种高速互连技术,允许GPU以极快的速度在共享内存池中发送和接收数据。多芯互联在高性能计算领域尤为重要,它通过简化、高速、点对点的网络连接,减少通信开销,提高了计算性能。
    •  RDMA网络:是一种高性能网络通信技术,它允许数据直接在两台计算机的内存之间传输,无需双方操作系统内核介入,从而实现高吞吐、低延迟的网络通信,适用于大规模并行计算,通过消除CPU中转延迟和瓶颈,提高GPU跨主机通信效率。
    PCIe总线适用于计算机内部硬件设备间的连接,如CPU、GPU和RDMA网卡等,适合成本敏感且对带宽和延迟要求不高的场景。多芯互联网络是为高性能GPU设计的高速互连技术,常用于需要多GPU紧密协作的高性能计算。而RDMA网络则适用于数据中心和云计算环境,为跨服务器部署的GPU提供低延迟和高吞吐的通信,适合大规模并行处理和数据密集型任务。根据不同的应用需求和性能要求,合理选择这些技术可以显著提升系统的整体性能和效率。五
    数据通道性能分析接下来,以英伟达的A100 GPU为例,深入分析GPU内存总线、PCIe、多芯互联和RDMA网络的性能。分析将揭示GPU通信链路各环节的性能特点,为网络的规划与设计提供科学的依据。优化这些环节将确保在构建大规模并行计算系统时,数据传输的高效性、稳定性和可靠性,进而提升整体的计算性能,降低延迟,增强系统的可扩展性和适应性,以适应日益增长的高性能计算需求。
    (一)GPU内存总线性能分析
    A100的最大时钟频率为1.41 GHz,内部有108个流处理器(SM)。每个SM在一个时钟周期能够加载64 Byte的显存数据。根据测算,整个GPU(108个SM)每秒最大请求量 = 64 Byte×108 SM×1.41 GHz = 9.75 TeraByte/sec。然而,A100中HBM2的带宽为1.56 TeraByte/sec。因此,HBM2能够提供的最大带宽,比A100所有计算单元的最大请求速度低了6.25倍。
    (二)PCIe总线性能分析
    A100 GPU最高可以支持PCI Express Gen 4总线。PCI Express Gen 4最多支持16个通道,每个通道的速率为16.0 Gb/秒,因此编码后16条通道的总带宽是252 Gb/s,如下表所示。一台服务器最多可以接入8块A100 GPU,但是PCIe 4.0每条通道的速率只有GPU内存总线带宽的1.03%,16条通道的总带宽只有8块GPU内存总线带宽的2.05%。由此可见,PCIe总线承载GPU通信的能力非常薄弱。
    表1:PCIe 1.0到6.0的通道带宽和总带宽列表
    (三)多芯互联网络性能分析
    第三代 NVLink 主要适配Ampere架构的GPU,每对信号的数据传输速率为 50 Gbit/s。链路总数为12个,总带宽为 600 Gbit/s,如下表所示。对比PCIe总线,NVLink3每对信号的速率是PCIe4每条通道的速率的3倍,而且专网专用,NVLink网络的负荷能力较PCIe总线有了大幅提高。
    表2:NVLink1到NVLink5的链路带宽和总带宽列表注:英伟达未提供转发时延数据,我们估计第三代NVLink的转发时延50~100纳秒(ns)。
    (四)RDMA网络性能分析
    英伟达ConnectX-8网卡是InfiniBand网卡中性能最高的,端口速率可达到800 Gb/s,如下表所示。但是,RDMA网卡需要通过PCIe总线与GPU连接,网卡吞吐性能受到PCIe总线通道速率的限制。因此,网卡选型需要与PCIe的处理能力相匹配。网卡选型的性能不能太差,形成GPU通信的堵点。但是,单纯提高RDMA网卡的性能,也并不能大幅提高GPU之间的吞吐性能。
    表3:RDMA网卡的端口速率和带宽列表
    英伟达Quantum-X800是InfiniBand交换机中吞吐性能最高的交换机,具有115.2Tb/s 的数据交换能力,能够提供114个非阻塞的800Gb/s的网络连接端口,如下表所示。选择交换机时,交换机端口的速率不能低于网卡速率,同时端口组交换容量、接口板交换容量和交换机背板的交换容量不能低于下辖端口带宽总和,否则会形成阻塞结构,导致性能瓶颈。
    表4:Infiniband交换机的交换性能列表
    InfiniBand交换机的延迟低于以太网交换机。以太网交换机的端口到端口延迟大约为400 ns。与InfiniBand交换机相比,在端口数相同的情况下,InfiniBand交换机的延迟大约为130 ns。选择交换机时,应尽量选择低延迟交换机。六
    数据通道性能优化‍在网络设计和优化中,选择了网卡和交换机等的高性能设备只是具备了GPU高性能通信的物质基础。有了高性能的物质基础,还需要通过拓扑设计和资源调度,帮助GPU通信构建出低延迟、高吞吐的数据通道。
    (一)网络拓扑优化
    在AI计算中,特别是在模型训练过程中,网络表现出的是周期性的行为, 计算、通信和同步连续不断、周而复始。在这个过程中,一个GPU的通信对象数量通常是固定的,只有几个或者几十个。但是一旦开始通信,一个100G的网卡或者PCIe通道会在一瞬间将传输容量用满。为了提高GPU Tensor Core的利用率,减少数据同步的等待时间,要求尽量减少传输通道的时延。
    评估GPU可用的多芯互联网络、PCIe总线和RDMA网络三个数据通道的吞吐性能和扩展性能,多芯互联网络可以用于服务器内部各个GPU的高速互连,以避免GPU通信时瞬间巨量数据导致PCIe的拥塞。RDMA网络用于GPU跨服务器通信。
    在构建RDMA网络时,多级交换系统可能显著增加转发延迟,不利于实现低延迟目标;多根级联光纤的传输容量通常远低于交换机背板的交换容量,这限制了高吞吐量的需求。因此,推荐采用扁平化的分层网络设计:对于千卡规模的集群,可以通过单层交换机实现互联;而对于万卡规模的集群,则可以通过两层交换机实现互联,以优化性能。
    在通过扁平化减少交换机转发时延的同时,还需要优化交换机、服务器以及机架的布局,要使得交换机到服务器的光纤平均长度最短。因为,不仅交换转发会导致通信时延,光传输也会导致通信时延。光在光纤中传输,每0.2米会产生1纳秒的时延。光每传输46米,就会产生230纳秒时延,与一次高性能交换机的转发时延相当。
    图7:千卡、万卡集群的扁平化网络架构
    当前,构建RDMA网络有三种方式:InfiniBand、ROCE和iWARP,它们可以在高性能计算环境中提供低延迟和高吞吐量的通信。
    •  InfiniBand是一种为高性能计算设计的专用网络技术,提供最高带宽为800Gbps,具有低延迟和低CPU占用率。InfiniBand需要使用专门的硬件和布线,部署成本较高,但提供了卓越的性能。它支持服务质量(QoS)、多路径和链路聚合。
    •  ROCE是一种在标准以太网上实现RDMA的协议,有V1和V2两个版本。ROCE可以利用以太网基础设施,部署成本较低。ROCE V1缺乏拥塞控制机制,容易导致丢包和性能下降。ROCE V2是V1的改进版本,提供端到端拥塞控制。
    •  iWARP是一种构建在TCP/IP网络上的RDMA的协议,可以实现长距离的高效数据传输和低延迟通信。可以在标准的IP网络上运行,不需要专用的硬件。
    图8:RDMA的四种实现方案
    综合三种技术,InfiniBand在带宽和延迟方面具有优势,但成本较高;ROCE V2提供了良好的性价比和易用性,适合需要高性能且成本的场景;iWARP适用于跨越广域网的高效数据传输的场景。每种技术都有其特定的应用场景和优势,选择时可以根据具体需求进行权衡。
    (二)资源调度优化
    网络中,GPU间通信带宽和延迟受其位置影响较大。一些GPU通过NVLink连接,能够提供800Gb/s的高速通信;另一些GPU则只能能依赖100Gb/s的RoCE网络。同机柜服务器可以通过接入交换机直接连接,通信距离最短,转发延迟最低;而位于不同机柜或甚至不同机房的服务器则需经过接入、汇聚甚至核心交换机的多次转发,通信距离增加和转发延迟上升。
    如果GPU资源能够以拓扑感知的方式进行资源的优化调度,实现大模型并行计算集群内部集合通信的成本最小,那么可以显著降低通信延迟,提高GPU的计算效率,优化整个计算集群的性能表现,使得大规模的性能得到质的飞跃。
    我们做一个测算:英伟达A100 GPU 32位浮点张量计算性能为156TFlops,即156000次/纳秒。它的计算依赖前道GPU的计算结果。因为光在光纤中的速度为  m/s,如果它与前道GPU之间光传输距离能够缩短20米,就能节省100纳秒的时间,可以增加  次的计算量。如果交换机转发也能减少一跳,交换机的转发延迟也是100纳秒,则又可以增加  次的计算量。集合通信中一次通信的数据块大小(bucket size)为200MB,如果传输线路平均带宽能够从100Gb/s增加到150Gb/s,通信协议平均效率按80%计算,数据传输时间能缩短5.33毫秒,可以增加  次的计算量。七
    总结与展望
    随着大型模型参数数量的激增,单一GPU的计算能力已不足以应对,因此,采用多GPU集群的分布式计算成为了关键解决方案。然而,在这种集群环境中,传统网络的传输效率往往无法与GPU的高性能计算需求相匹配,这导致GPU在等待数据传输上的时间增加,而实际计算的时间减少。
    本文通过对集合通信和网络传输技术的深入分析,提出了两个优化方向:网络拓扑优化和资源调度优化。网络拓扑优化通过采用扁平化设计和选择适合的RDMA技术,旨在降低通信延迟并提升带宽使用率。而资源调度优化则侧重于根据GPU的物理布局和网络特性,智能地分配资源,以减少数据传输的距离和延迟,进而提高整体的计算效率。
    随着硬件技术的持续进步和大模型应用的深化,预计新一代GPU和互联技术将带来更强大的计算和通信性能。同时,人工智能和机器学习算法的发展也将对基础设施提出新的挑战。通过不断的研究和创新,我们有望构建出更高效、更智能、更可靠的大模型基础设施,从而推动人工智能技术的快速发展和广泛应用。参考资料[1] Ronny Krashinsky,Olivier Giroux,Stephen Jones.深度了解NVIDIA Ampere架构 [EB/OL] (2020-05-14). [2024-08-15]. 
    [2] NVIDIA Corporation. NVLink和NVLink Switch [EB/OL]. [2024-08-16]. [3] Debendra Das Sharma. The Evolution of the PCI Express Specification: On its Sixth Generation, Third Decade and Still Going Strong [EB/OL] (2022.01.11). [2024.08.16]. [4] Alexander Ishii, Ryan Wells. THE NVLINK-NETWORK SWITCH: NVIDIA'S SWITCH CHIP FOR HIGH COMMUNICATION-BANDWIDTH SUPERPODS [EB/OL]. [2024.08.16]. [5] NVIDIA Corporation. ConnectX-8 SuperNIC:Highest-performance 800G networking designed for massive-scale AI [EB/OL]. [2024-08-16].[6] NVIDIA Corporation. NVIDIA Quantum-X800 InfiniBand Switches:Accelerate AI workloads with 800G InfiniBand [EB/OL]. [2024-08-16].[7] 一路. Infiniband相较与以太网的优势在哪里?EB/OL. [2024-08-16].[8] Roy. 探索InfiniBand网络、HDR和IB在超级计算中应用的意义 [EB/OL] (2024-02-28). [2024-08-16]. [9] Will Constable. PyTorch Distributed Overview [EB/OL]. [2024-08-19]. [10] Shenggui Li, Siqi Mai. Paradigms of Parallelism [EB/OL]. [2024-08-19]. [11] 麦络、董豪、金雪锋、干志良. 机器学习系统:设计和实现 [EB/OL]. [2024-08-20].[12] Cheny1m. Transformer模型分布式并行通信量浅析 [EB/OL]. [2024-08-21]. [13] Python算法实战. 用通俗易懂的方式讲解大模型分布式训练并行技术:流水线并行 [EB/OL]. [2024-08-21].[14] 席永青. 网络架构如何支持超万卡的大规模 AI 训练?[EB/OL] (2024-06-25). [2024-08-22].[15]唐宏,武娟,徐晓青,等.生成式大模型承载网络架构与关键技术探索[J].中兴通讯技术,2024,30(02):50-55.[16] FS Network. FS HPC Data Centre Network Solution: InfiniBand VS. RoCE Solution [EB/OL] (2024-05-08). [2024-08-27].

标签:计算,模型,并行,分布式计算,通信,并行计算,思考,GPU,优化
From: https://www.cnblogs.com/StarOnline/p/18499556

相关文章

  • 一文彻底弄懂MySQL的优化
    在企业级Web开发中,MySQL优化是至关重要的,它直接影响系统的响应速度、可扩展性和整体性能。下面从不同角度,列出详细的MySQL优化技巧,涵盖查询优化、索引设计、表结构设计、配置调整等方面。一、查询优化1.合理使用索引单列索引:为查询频繁的字段(如WHERE、ORDERBY、GROUP......
  • Linux系统性能优化实战指南
    引言Linux,作为开源操作系统的代表,凭借其高效、稳定、灵活的特性,在服务器、嵌入式设备、云计算等多个领域占据主导地位。然而,随着业务的发展和系统负载的增加,Linux系统的性能优化成为运维和开发人员必须面对的重要课题。本文将从硬件资源优化、内核参数调整、文件系统优化、......
  • centos7 nginx优化
    优化nginx进程个数的策略在高并发、高访问量的web服务场景,需要事先启动好更多的nginx进程,以保证快速响应并处理大量并发用户的请求。worker_processes1;一般调整到与CPU的颗数相同查看LInux可查看CPU个数及总核数grepprocessor/proc/cpuinfo|wc-l优化绑定不同......
  • OB案例、金融行业核心系统跑批SQL优化
    最近在南宁出差,搞某个银行的核心系统跑批优化项目。Oracle19cAix生产环境跑完整体的批要40多分钟左右,在Ob国产环境(国产系统+国产海光CPU)跑要3个小时......
  • 高斯模糊性能优化
    常见高斯模糊方法假设被模糊图片分辨率宽为\(W\),高为\(H\),假设高斯模糊核大小为\(S\),半径为\(R\)(不包含中心点,即\(S=2×R+1\))。按照高斯模糊原始用法,渲染单个像素需要对周围\(S×S\)个像素进行采样,并乘以对应的符合高斯分布的权值,公式为:G(x,y)=12πσexp(−x2+y22σ2)......
  • Spark 优化
    Spark优化定义和目标定义:Spark优化是指通过调整Spark应用程序的配置参数、代码结构和数据处理方式,以提高Spark作业的性能和效率。目标:优化的目标包括减少作业的执行时间、降低资源消耗、提高吞吐量等。优化可以涉及到多个方面,如内存管理、数据分区、任务调度、代码优......
  • 质量流量计优化燃油滤清器泄漏测试的效率
    组件的质量部分取决于其压力或泄漏完整性。组件的一些示例包括燃料箱、机油和燃料过滤器、散热器、空调和加热系统组件、歧管、齿轮箱、软管等。在向汽车制造商交付零部件之前,零部件供应商通常需要测试和记录零部件的质量。一家领先的燃油滤清器制造商希望提高其质量控制测......
  • 反弹shell优化
    做个记录https://www.bilibili.com/video/BV1qp4y1Z7Pv?t=385.6有时反弹得到的shell是这样的:这种shell只能进行ls、cat这样的简单的查询动作,而对于进入mysql-uroot-p这种进入MySQL终端的交互行为就无能为力,这时就要在此shell上进行优化优化方式1:python3-c'importpty;p......
  • 图论优化
    图论优化三元环计数首先给所有边定向,从度数小的点指向度数大的点,如果度数一样,则从编号小的指向编号大的,最终形成一张DAG。枚举\(u\)以及\(u\)指向的点\(v\)以及\(v\)指向的点\(w\),如果\(u\)也指向\(w\)则成三元环。如果要一开始是有向图计数则最后判断一下\(u,v,w\)的方向即可......
  • 【PowerShell】如何优化脚本性能?
    优化PowerShell脚本性能可以从多个方面着手,以下是一些常见的策略和具体的例子来说明如何实现这些优化:1.减少不必要的循环描述:在处理大量数据时,避免使用过多的循环。可以考虑使用管道和内置cmdlet来替代。示例:低效代码:$files=Get-ChildItem-PathC:\Tempforeach(......