Llama 3.1 技术研究报告-2

news2024/12/29 11:21:39

3.3 基础设施、扩展性和效率

我们描述了⽀持Llama 3 405B⼤规模预训练的硬件和基础设施,并讨论了⼏项优化措施,这些措施提⾼了训练效率。

3.3.1 训练基础设施

Llama 1和2模型在Meta的AI研究超级集群(Lee和Sengupta,2022)上进⾏了训练。随着我们进⼀步扩展,Llama 3的训练迁移到了Meta的⽣产集群(Lee等⼈,2024)。此设置优化了⽣产级别的可靠性,这对于我们扩⼤训练⾄关重要。
在这里插入图片描述

计算。Llama3 405B在⾼达16K的H100 GPU上进⾏训练,每个GPU运⾏在700W TDP下,配备80GB HBM3,使⽤Meta的Grand Teton AI服务器平台(Matt Bowman,2022)。每个服务器配备有⼋个GPU和两个CPU。在服务器内部,这⼋个GPU通过NVLink连接。使⽤MAST(Choudhury等⼈,2024),Meta的全球规模训练调度器,来安排训练作业。

存储。Tectonic(Pan等⼈,2021),Meta的通⽤分布式⽂件系统,⽤于为Llama 3预训练构建存储⽹络(Battey和Gupta,2024)。它提供了7,500个配备SSD的服务器上的240PB存储空间,并⽀持2TB/s的可持续吞吐量和7TB/s的峰值吞吐量。⼀个主要挑战是⽀持在短时期间饱和存储⽹络的⾼突发性检查点写操作。检查点保存每个GPU的模型状态,每个GPU的范围从1MB到4GB,⽤于恢复和调试。我们的⽬标是最⼩化检查点期间GPU的暂停时间,并增加检查点频率,以减少恢复后丢失的⼯作量。

⽹络。Llama 3 405B使⽤了基于Arista 7800和Minipack2开放计算项⽬OCP机架交换机的RDMA over Converged Ethernet (RoCE)⽹络。Llama 3系列中较⼩的模型使⽤Nvidia Quantum2 Infiniband⽹络进⾏训练。RoCE和Infiniband集群都在GPU之间利⽤400Gbps的互连。尽管这些集群的底层⽹络技术存在差异,但我们调整了它们,以便为这些⼤型训练⼯作负载提供等效的性能。由于我们完全拥有RoCE⽹络的设计,我们将更详细地阐述我们的RoCE⽹络。

网络拓扑。我们的基于RoCE的AI集群由24K GPU组成,通过三层Clos⽹络连接(Lee等⼈,2024)。在底层,每个机架托管16个GPU,分成两台服务器,并通过单个Minipack2机架顶部(ToR)交换机连接。在中层,192个这样的机架通过集群交换机连接,形成⼀个拥有3,072个GPU的pod,具有完整的双⼯带宽,确保没有过订。在顶层,同⼀数据中⼼⼤楼内的⼋个这样的pod通过聚合交换机连接,形成⼀个24K GPU的集群。然⽽,在聚合层的⽹络连接没有保持完整的双⼯带宽,⽽是有⼀个1:7的过订⽐率。我们的模型并⾏⽅法(⻅第3.3.2节)和训练作业调度器(Choudhury等⼈,2024)都针对⽹络拓扑进⾏了优化,旨在最⼩化跨pod的⽹络通信。

负载均衡。⼤型语⾔模型(LLM)训练产⽣的⽹络流量很⼤,这使得使⽤传统的如等价成本多路径(ECMP)路由⽅法在所有可⽤⽹络路径上进⾏负载均衡变得困难。为了应对这⼀挑战,我们采⽤了两种技术。⾸先,我们的集合库创建了16个⽹络流进⾏负载均衡。其次,我们增强的ECMP(E-ECMP)协议通过在RoCE数据包头部的额外字段上进⾏哈希处理,有效地在不同⽹络路径上平衡了这16个流。
在这里插入图片描述

拥塞控制。我们在主⼲⽹上使⽤了深度缓冲交换机(Gangidi等⼈,2024年),以适应由集合通信模式引起的瞬态拥塞和缓冲。这种设置有助于限制由慢服务器引起的持续拥塞和⽹络反压的影响,这在训练中很常⻅。最后,通过E-ECMP实现的更好的负载均衡显著降低了拥塞的可能性。有了这些优化,我们成功地运⾏了⼀个24K GPU集群,⽽⽆需使⽤传统的拥塞控制⽅法,如数据中⼼量化拥塞通(DCQCN)。

3.3.2 模型扩展的并⾏性

为了扩展我们最⼤模型的训练,我们采⽤了4D并⾏性⸺结合四种不同类型的并⾏⽅法来切分模型。
这种⽅法有效地在多个GPU之间分配计算,并确保每个GPU的模型参数、优化器状态、梯度和激活能够适应其HBM。我们在图5中展⽰了4D并⾏性的实现。它结合了张量并⾏性(TP;Krizhevsky等⼈(2012年);Shoeybi等⼈(2019年);Korthikanti等⼈(2023年))、流⽔线并⾏性(PP;Huang等⼈(2019年);Narayanan等⼈(2021年);Lamy-Poirier(2023年))、上下⽂并⾏性(CP;Liu等⼈(2023年))和数据并⾏性(DP;Rajbhandari等⼈(2020年);Ren等⼈(2021年);Zhao等⼈(2023年))。

张量并⾏性将个别权重张量分割成不同设备上的多个块。流⽔线并⾏性通过层将模型垂直划分为不同的阶段,以便不同的设备可以并⾏处理完整模型流⽔线的不同阶段。上下⽂并⾏性将输⼊上下⽂分割成段,减少了⾮常⻓的序列⻓度输⼊的内存瓶颈。我们使⽤的是完全分⽚的数据并⾏性(FSDP;Rajbhandari等⼈,2020年;Ren等⼈,2021年;Zhao等⼈,2023年),它在实现数据并⾏性的同时,对模型、优化器和梯度进⾏分⽚,该数据并⾏性在多个GPU上并⾏处理数据,并在每个训练步骤后同步。我们在Llama 3中使⽤FSDP对优化器状态和梯度进⾏分⽚,但对于模型分⽚,在前向计算后我们不重新分⽚,以避免在反向传递期间产⽣额外的全收集通信。

GPU利⽤率。通过对并⾏配置、硬件和软件的精⼼调整,我们实现了表4所⽰配置的BF16模型FLOPs利⽤率(MFU;Chowdhery等⼈(2023年))为38-43%。在16K GPU上,当DP=128时MFU略有下降⾄41%,⽽8K GPU上DP=64时为43%,这是由于在训练期间需要保持每个批次的全局标记数恒定,因此每个DP组的批量⼤⼩需要降低。

流⽔线并⾏性改进我们在使⽤现有实现时遇到了⼏个挑战

批量⼤⼩限制。当前实现对每个GPU⽀持的批量⼤⼩有限制,要求它可以被流⽔线阶段的数量整除。例如,在图6中的流⽔线并⾏性的深度优先调度(DFS)中(Narayanan等⼈,2021年),需要N = PP = 4,⽽⼴度优先调度(BFS;Lamy-Poirier(2023年))需要N = M,其中M是微批次的总数,N是同⼀阶段的前向或后向的连续微批次的数量。然⽽,预训练通常需要调整批量⼤⼩的灵活性。

内存不平衡。现有的流⽔线并⾏性实现导致资源消耗不平衡。第⼀阶段由于嵌⼊和热⾝微批次⽽消耗更多的内存。

计算不平衡。在模型的最后⼀层之后,我们需要计算输出和损失,使这个阶段成为执⾏延迟的瓶颈。
在这里插入图片描述

为解决这些问题,我们修改了流⽔线调度计划,如图6所⽰,该计划允许灵活设置N⸺在本例中N=5,可以在每个批次中运⾏任意数量的微批次。这允许我们执⾏

(1) 当我们在⼤规模时有批量⼤⼩限制时,运⾏的微批次少于阶段数;或者(2) 运⾏更多的微批次以隐藏点对点通信,寻找DFS(深度优先调度)和BFS(⼴度优先调度)之间的最佳通信和内存效率的平衡点。为了平衡流⽔线,我们分别从第⼀和最后阶段各减少⼀个Transformer层。这意味着第⼀阶段的第⼀个模型块仅有嵌⼊层,⽽最后阶段的最后⼀个模型块仅有输出投影和损失计算。为了减少流⽔线泡沫,我们采⽤了交错调度(Narayanan等⼈,2021年),在⼀个流⽔线等级上使⽤V个流⽔线阶段。整体流⽔线泡沫⽐率是(PP−1)/V*M。

此外,我们在PP中采⽤异步点对点通信,这在⽂档掩码引⼊额外计算不平衡的情况下显著加快了训练速度。我们启⽤了TORCH_NCCL_AVOID_RECORD_STREAMS,以减少异步点对点通信的内存使⽤。

最后,为了减少内存成本,基于详细的内存分配分析,我们主动释放了未来计算中不会使⽤的张量,包括每个流⽔线阶段的输⼊和输出张量。通过这些优化,我们得以在不使⽤激活检查点的情况下对8K标记的Llama 3进⾏预训练。

⻓序列的上下⽂并⾏性。我们利⽤上下⽂并⾏性(CP)在扩展Llama 3的上下⽂⻓度时提⾼内存效率,并能够训练⻓达128K的极⻓序列。在CP中,我们跨序列维度进⾏分区,特别是我们将输⼊序列划分为2 × CP块,以便每个CP等级接收两个块以实现更好的负载平衡。第i个CP等级接收了第i个和第(2 × CP − 1 − i)个块。

与现有的在环状结构中重叠通信和计算的CP实现不同(Liu等⼈,2023年),我们的CP实现采⽤了基于all-gather的⽅法,我们⾸先all-gather关键(K)和值(V)张量,然后计算局部查询(Q)张量块的注意⼒输出。尽管all-gather通信延迟在关键路径上暴露出来,但我们仍然采⽤这种⽅法,主要有两个原因
(1) 在基于all-gather的CP注意⼒中,⽀持不同类型的注意⼒掩码(如⽂档掩码)更容易、更灵活;

(2) 由于使⽤了GQA(Ainslie等⼈,2023年),通信的K和V张量⽐Q张量⼩得多,因此暴露的all-gather延迟很⼩。因此,注意⼒计算的时间复杂度⽐all-gather⼤⼀个数量级(O(S^2)与O(S),其中S表⽰全因果掩码中的序列⻓度),使all-gather的开销可以忽略不计。
在这里插入图片描述

⽹络感知的并⾏配置。并⾏维度的顺序[TP, CP, PP, DP]针对⽹络通信进⾏了优化。最内层的并⾏需要最⾼的⽹络带宽和最低的延迟,因此通常限制在同⼀个服务器内。最外层的并⾏可以跨越多跳⽹络,并应能容忍更⾼的⽹络延迟。因此,基于对⽹络带宽和延迟的要求,我们按照[TP, CP, PP, DP]的顺序放置并⾏维度。DP(即FSDP)是最外层的并⾏,因为它可以通过异步预取分⽚模型权重和减少梯度来容忍更⻓的⽹络延迟。在避免GPU内存溢出的同时,找到最⼩化通信开销的最佳并⾏配置是具有挑战
性的。我们开发了⼀个内存消耗估计器和性能预测⼯具,帮助我们探索各种并⾏配置,并有效预测整体训练性能和识别内存缺⼝。

数值稳定性。通过⽐较不同并⾏设置之间的训练损失,我们解决了⼏个影响训练稳定性的数值问题。

为确保训练收敛性,我们在多个微批次的反向计算中使⽤FP32梯度累积,并在FSDP中跨数据并⾏⼯作器使⽤FP32进⾏reduce-scatter梯度。对于在前向计算中多次使⽤的中间张量,例如视觉编码器的输出,反向梯度也以FP32累积。

3.3.3 集体通信

我们的Llama 3集体通信库是基于Nvidia的NCCL库的⼀个分⽀,称为NCCLX。NCCLX显著提⾼了NCCL的性能,特别是对于⾼延迟⽹络。回想⼀下,平⾏维度的顺序是[TP, CP, PP, DP],其中DP对应于FSDP。最外层的平⾏维度,PP和DP,可能通过多跳⽹络进⾏通信,延迟⾼达数⼗微秒。原始的NCCL集合体⸺FSDP中的all-gather和reduce-scatter,以及PP中的点对点⸺需要数据分块和分阶段数据复制。这种⽅法存在⼏个效率问题,
包括(1)需要在⽹络上交换⼤量的⼩控制消息以促进数据传输,
(2)额外的内存复制操作,以及(3)使⽤额外的GPU周期进⾏通信。对于Llama 3训练,我们通过调整分块和数据传输以适应我们的⽹络延迟来解决这些效率问题的⼀个⼦集,这些延迟在⼤型集群中可能⾼达数⼗微秒。我们还允许⼩控制消息以更⾼的优先级穿越我们的⽹络,特别是避免在深缓冲核⼼交换机中被阻塞。我们为未来Llama版本进⾏的持续⼯作涉及在NCCLX中进⾏更深⼊的更改,以全⾯解决上述所有问题。
在这里插入图片描述

3.3.4 可靠性和运营挑战

16K GPU训练的复杂性和潜在故障场景超过了我们运营的更⼤的CPU集群。此外,训练的同步性质使其对故障的容忍度较低⸺单个GPU故障可能需要重启整个作业。尽管存在这些挑战,对于Llama 3,我们在⽀持⾃动化集群维护(如固件和Linux内核升级(Vigraham和Leonhardi,2024年))的同时,实现了超过90%的有效训练时间,这导致⾄少每天有⼀次训练中断。有效训练时间衡量的是流逝时间内⽤于有⽤训练的时间。

在预训练的54天快照期间,我们经历了总共466次作业中断。其中,47次是计划内的中断,由于⾃动化维护操作,如固件升级或操作员启动的操作,如配置或数据集更新。其余419次是意外的中断,在表5中有分类。约78%的意外中断归因于确认的硬件问题,如GPU或主机组件故障,或疑似与硬件相关的问题,如静默数据损坏和计划外的单个主机维护事件。GPU问题是最⼤的类别,占所有意外问题的58.7%。尽管失败数量众多,但在这段时间内,仅三次需要重⼤⼿动⼲预,其余问题由⾃动化处理。

为了增加有效训练时间,我们减少了作业启动和检查点时间,并开发了快速诊断和问题解决⼯具。我们⼴泛使⽤PyTorch内置的NCCL⻜⾏记录器(Ansel等⼈,2024年),这是⼀个捕捉集体元数据和堆栈跟踪到环形缓冲区的功能,因此允许我们在⼤规模上快速诊断挂起和性能问题,特别是与NCCLX相关的。利⽤这个,我们有效地记录了每个通信事件和每次集体操作的持续时间,并且在NCCLX看⻔狗或⼼跳超时时⾃动转储跟踪数据。我们通过在线配置更改(Tang等⼈,2015年)根据需要在⽣产中选
择性地启⽤更多计算密集型的跟踪操作和元数据收集,⽆需代码发布或作业重启。

调试⼤规模训练中的问题由于我们⽹络中混合使⽤NVLink和RoCE⽽变得复杂。

NVLink上的数据传输通常通过由CUDA内核发出的加载/存储操作进⾏,远程GPU或NVLink连接的故障通常表现为CUDA内核内的加载/存储操作停滞,⽽没有返回清晰的错误代码。NCCLX通过与PyTorch的紧密共同设计,提⾼了故障检测和定位的速度和准确性,允许PyTorch访问NCCLX的内部状态并跟踪相关信息。虽然由于NVLink故障引起的停滞⽆法完全防⽌,但我们的系统监控通信库的状态,并在检测到此类停滞时⾃动超时。此外,NCCLX跟踪每个NCCLX通信的内核和⽹络活动,并提供失败的NCCLX集体的内部状态的快照,包括所有等级之间已完成和待定的数据传输。我们分析这些数据以调试NCCLX扩展问题。

有时,硬件问题可能导致仍在运⾏但缓慢的落后者,这很难检测。即使是单个落后者也可以减慢数千个其他GPU的速度,通常表现为通信功能正常但速度慢。我们开发了⼯具,以优先处理选定进程组中可能存在问题的通信。通过仅调查少数⼏个头号嫌疑对象,我们通常能够有效地识别落后者。

⼀个有趣的观察是环境因素对⼤规模训练性能的影响。对于Llama 3 405B,我们注意到基于⼀天中的时间的⽇间1-2%的吞吐量变化。这种波动是由于中午更⾼的温度影响GPU动态电压和频率缩放所致。

在训练期间,数万个GPU可能同时增加或减少功耗,例如,由于所有GPU等待检查点或集体通信完成,或整个训练作业的启动或关闭。当这种情况发⽣时,它可能导致数据中⼼的功耗瞬间波动数⼗兆⽡,考验电⽹的极限。随着我们为未来的、甚⾄更⼤的Llama模型扩展训练,这是我们⾯临的⼀个持续挑战。

3.4 训练配方

⽤于预训练Llama 3 405B的配⽅包括三个主要阶段:
(1)初始预训练,
(2)⻓上下⽂预训练,以及
(3)退⽕。
下⾯分别描述这三个阶段。我们使⽤类似的配⽅来预训练8B和70B模型。

3.4.1 初始预训练

我们使⽤余弦学习率计划对Llama 3 405B进⾏预训练,峰值学习率为8 × 10^−5,线性预热8,000
步,然后在1,200,000个训练步骤中衰减到8 × 10^−7。我们在训练初期使⽤较⼩的批量⼤⼩以提⾼训
练稳定性,并随后增加它以提⾼效率。具体来说,我们最初的批量⼤⼩为4M个标记,序列⻓度为4,096,然后在预训练了252M个标记后,将这些值加倍到8M个标记,序列⻓度为8,192。
我们在预训练了2.87T个标记后再次将批量⼤⼩加倍到16M。我们发现这种训练配⽅⾮常稳定:我们观察到的损失峰值很少,并且不需要⼲预来纠正模型训练发散。

调整数据混合。在训练期间,我们对预训练数据混合进⾏了⼏次调整,以提⾼模型在特定下游任务上的性能。特别是,我们在预训练期间增加了⾮英语数据的百分⽐,以提⾼Llama 3的多语⾔性能。我们还上采样数学数据以提⾼模型的数学推理性能,我们在预训练的后期增加了更多最新的⽹络数据以推进模型的知识截⽌⽇期,并且我们对后来被识别为质量较低的预训练数据⼦集进⾏了下采样。

3.4.2 长上下文预训练

在预训练的最后阶段,我们对⻓序列进⾏训练,以⽀持⾼达128K个标记的上下⽂窗⼝。我们之所以没有提前对⻓序列进⾏训练,是因为⾃注意⼒层的计算在序列⻓度上呈⼆次⽅增⻓。我们逐步增加⽀持的上下⽂⻓度,直到模型成功适应增加的上下⽂⻓度。我们通过测量(1)模型在短上下⽂评估上的性能是否完全恢复,以及(2)模型是否能够完美解决⻓达那个⻓度的“针尖上的针”任务来评估成功的适应。在Llama 3 405B预训练中,我们从最初的8K上下⽂窗⼝开始,逐步增加了上下⽂⻓度,经过六个阶段,最终达到128K上下⽂窗⼝。这个阶段的⻓上下⽂预训练使⽤了⼤约800B个训练标记。 在这里插入图片描述

3.4.3 退火

在最后的40M个标记的预训练中,我们将学习率线性退⽕⾄0,同时保持上下⽂⻓度为128K个标记。在这个退⽕阶段,我们还调整了数据混合,以增加对极⾼质量数据源的采样;⻅第3.1.3节。最后,在退火期间,我们计算模型检查点(Polyak(1991年)平均)的平均值,以产⽣最终的预训练模型。

注:上述文章内容来自于LLama3.1的技术报告,本文是翻译文章!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2158237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模型融合创新性Max!5种模型融合方法刷新SOTA!发顶会必看!

近年来,关于模型融合的研究逐渐火热,出现了很多效果出众的成果。模型融合(Model Merging)技术,即利用现有模型的参数、架构和特性,巧妙结合成一个新的、功能更强大的模型,这不仅减少了从头训练大…

计算机毕业设计新闻资讯知识施肥技术网站推荐评论搜索猜你喜欢留言/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序

摘要‌ 随着互联网的快速发展,新闻网站成为人们获取新闻资讯的重要途径。本文旨在介绍一款新闻网站毕业设计的开发与实现过程,该系统集新闻发布、用户互动、个性化推荐等功能于一体,采用Spring Boot、Vue等前后端分离技术,旨在提…

风力发电场集中监控解决方案

0引言 风力发电装机容量近年来快速增长。截至7月底,全国发电装机容量达27.4亿千瓦,同比增长11.5%。其中,太阳能和风力发电装机容量分别为4.9亿千瓦和3.9亿千瓦,同比增长42.9%和14.3%。风力发电场分陆上和海上风电,常位…

asp.net core grpc快速入门

环境 .net 8 vs2022 创建 gRPC 服务器 一定要勾选Https 安装Nuget包 <PackageReference Include"Google.Protobuf" Version"3.28.2" /> <PackageReference Include"Grpc.AspNetCore" Version"2.66.0" /> <PackageR…

C++ 异步编程中:future与promise、packaged_task、async

原文链接&#xff1a;C 异步编程之future与promise、async、packaged_task_std::promise和std::future异步发送-CSDN博客 1、std::future std::future类模板来关联线程运行的函数和函数的返回结果&#xff0c;这种获取结果的方式是异步的 std::future 通常由某个 Provider 创建…

BOE(京东方)携故宫博物院举办2024“照亮成长路”公益项目落地仪式以创新科技赋能教育可持续发展

2024年9月20日&#xff0c;BOE&#xff08;京东方&#xff09;“照亮成长路”智慧教室落成暨百堂故宫传统文化公益课山西活动落地仪式在山西省太原市娄烦县实验小学隆重举行。自“照亮成长路”教育公益项目正式设立以来&#xff0c;BOE&#xff08;京东方&#xff09;持续以创新…

食家巷苦豆粉,香得很哟

苦豆粉&#xff0c;它看似普通&#xff0c;却承载着西北的厚重历史与浓郁风情。那一抹淡淡的绿色粉末&#xff0c;蕴含着大自然的馈赠和西北人民的智慧。 苦豆&#xff0c;这种生长在西北土地上的植物&#xff0c;经过精心研磨&#xff0c;变成了细腻的苦豆粉。它的味道独特&am…

Kimi助你快速完成开题报告【超详细实操教程】

随着人工智能的飞速发展&#xff0c;AI技术已经渗透到我们生活的方方面面&#xff0c;包括学术研究。在接下来的文章中手把手教你如何利用AI工具来优化每一个部分&#xff0c;让你的开题报告不仅内容丰富&#xff0c;而且结构严谨&#xff0c;逻辑清晰&#xff0c;为你的毕业论…

01.前端面试题之ts:说说如何在Vue项目中应用TypeScript?

文章目录 一、前言二、使用Componentcomputed、data、methodspropswatchemit 三 、总结 一、前言 与link类似 在VUE项目中应用typescript&#xff0c;我们需要引入一个库vue-property-decorator&#xff0c; 其是基于vue-class-component库而来&#xff0c;这个库vue官方推出…

通过 Flink 的火焰图定位反压

在 Apache Flink 中&#xff0c;Web UI 提供了丰富的监控工具来帮助用户分析和解决作业性能问题&#xff0c;其中火焰图&#xff08;Flame Graph&#xff09;是用于分析反压问题的一个强有力的工具。反压可能是由于作业中某些算子处理速度过慢&#xff0c;或者资源耗尽导致的。…

深度学习模型之BERT的24个小模型源码与预训练紧凑模型的重要性

原始信息 论文&#xff1a; Well-Read Students Learn Better: On the Importance of Pre-training Compact Models作者&#xff1a;Iulia Turc, Ming-Wei Chang, Kenton Lee, Kristina Toutanova地址&#xff1a;arxiv.org/pdf/1908.08…中文&#xff1a;阅读良好的学生学得更…

人工智能时代的学与教

疫情逐渐散去之后&#xff0c;最最吸引全球目光的应该就是ChatGPT-3了。美国政治家亨利基辛格领衔出版的新书《AI世代与我们人类的未来》(The Age of AI and Our Human Future)中举了一个例子来说明ChatGPT-3的能力。首先让ChatGPT-3阅读关于它自身能力的哲学评论之后&#xff…

【Go】Go语言中深拷贝和浅拷贝

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

windows自定义路径docker安装

环境: win11(win10也是同样流程) docker:Docker version 27.1.1, build 6312585 目录 1.下载docker 2.自定义路径安装 3.修改镜像保存路径 非win系统的同学可以参考&#xff1a;官方说明文档 1.下载docker docker官网下载链接 进入官网后选择对应的系统版本下载即可。 …

IDEA明明模块和环境变量配置的是JDK8但是显示别的版本解决方案

IDEA明明模块和环境变量配置的是JDK8但是显示别的版本解决方案 我目前系统中存在JDK8&#xff0c;JDK11,JDK17等多个版本&#xff0c;方便开发使用&#xff0c;但是有些时候也是比较烦人的&#xff0c;因为不同版本的JDK包有所区别。 需要注意的几个地方。方便自己排查一下。

Vue3:具名插槽

目录 一.性质与作用 1.基本性质 2.使用方式 3.作用 4.应用场景 5.注意事项 二.使用 1.父组件 2.子组件 三.代码 1.父组件代码 2.子组件代码 四.效果 具名插槽在Vue3中用于为组件提供一种方式&#xff0c;允许父组件向子组件注入内容&#xff0c;并且可以指定这些内…

硬盘数据能否自己在家恢复?探索数据恢复的可行性与方法

随着数字化时代的到来&#xff0c;硬盘作为我们存储大量重要数据的设备&#xff0c;其重要性不言而喻。然而&#xff0c;当硬盘出现问题&#xff0c;如误删除、硬盘损坏、病毒感染等&#xff0c;导致数据丢失时&#xff0c;我们往往会感到十分焦虑。那么&#xff0c;硬盘数据能…

阿里巴巴新推出Java版AI 应用开发框架-Spring AI Alibaba

[Spring AI Alibaba 是一款 Java 语言实现的 AI 应用开发框架&#xff0c;旨在简化 Java AI 应用程序开发&#xff0c;让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用。Spring AI Alibaba 基于 Spring AI 开源项目构建&#xff0c;默认提供阿里云基础模型服务、开源…

【BetterBench博士】2024年华为杯E题:高速公路应急车道紧急启用模型 Python代码实现

题目 【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析 【BetterBench博士】2024年中国研究生数学建模竞赛 E题&#xff1a;高速公路应急车道紧急启用模型 问题分析 【BetterBench博士】2024年中国研究生数学建模竞赛 C题&#xff1a;数据驱动…

杰发科技——Eclipse环境安装

文件已传到网盘&#xff1a; 1. 安装文件准备 2. 安装Make 默认路径&#xff1a;C:\Program Files (x86)\GnuWin32\bin\ 不复制的话会报错 Error: Program "make" not found in PATH 3. 安装工具链 默认路径&#xff1a;C:\Program Files (x86)\Arm GNU Toolchain…