FPGA 如何进入 AI 领域的思考

        FPGA在AI领域如何发力,如何抢碗饭吃?大多数提到是硬件加速,在AI工程里,完成数据前处理(加速)。大家很少提到AI模型的本身的推理过程,让FPGA成为AI模型的推理/算力芯片,这自然是 FPGA厂商们的梦想。否则,仅仅是加速,那就是个配角。

        Intel(ateral)和 AMD(Xlinx) 已做过大量的尝试,但是效果似乎并不好,这是为什么呢?我们仔细来看看原因。

        在详细解决部署之前,我们还是先从头讲起,看看重要的历史。

一:微软与FPGA

        FPGA 的加速应用,最有名的就是为微软 Bing 搜索引擎加速了,

        在第一个阶段,具体的做法是:

        在数据中心1632台服务,安装了 Intel 的 Stratix V系列的FPGA 几千张。
        1:将核心的文件排名 C++算法(3万行的文件排名) 卸载到 FPGA上 ,完成硬件加速。
        2:CPU 通过 PCIe 总线访问FPGA。可以通过网络访问远端的FPGA。这是一个基础设施。
        结果还是不错的,获得了95%吞吐量提升,达到了加速的目标。可以看出,它利用的是FPGA的并行运算能力,当然,排序算法可能变化,所以,也用到FPGA的可编程性。但从代码量上看,据说有上万行代码,这种用法不是小玩家都完成的,想想都头疼。

        到了第二阶段,形成的这么大规模的 FPGA集群,微软拿来做了其它尝试,提供深度神经网络的部署/推理。

        1:导出已训练好的模型的计算流程图。(深度学习的模型实际上也就是一系列的数据运算流程),模型的训练与传统做法没有什么不同,这里不讲。
        2:计算流图的流程可以进行分解,分解成若干的小图,方便后续可映射到单块FPGA运行。
因为目前具有的集群FPGA,我们可以把任务分派到不同FPGA。
        3:不适合 FPGA运行的部分映射到与FPGA相连的 CPU上。
        4:在FPGA上完成一个 IP软核 :DPU,用于承载第2步的任务,开发者通过指令级IP核调用,降低开发难度。
        注意,微软的FPGA硬件是一个集群,而不是单张FPGA卡。所以,有几个特点:
        1:运算中数据缓存,并没有使用DDR,而是将数据全部存在FPGA的片上高速RAM中,因为集群中有过上千张的FPGA卡,频率高达 600G,基本可以形成35T左右的处理带宽。这只有微软的这种情况才能实现。使用高速RAM,速度自然会更快。DDR是较慢的,因为需要通过接口不停的读取有消耗。
        2:微软自定义了 ms-fp-8, ms-fp-9 这两种低精度的浮点数,可以理解就是量化,通过调低精度,降低算力和存储要求。
        3:硬件工程师会开发和维护 NPU 软核和指令集,软件工程师基于NPU IP 和指令集进行应用开发。注意:这个指令集类似SIMD(GPU的指令集)。我们可以理解,就是在模仿GPU的做法。

        上面形成的这个脑波NPU,微软也在Bing中应用了(TuringPrototype,DeepScan) ,效果如何,没有资料提及。

        从上面的例子可以看出,微软对FPGA使用很深。     

二:AMD 的 ACAP

        ADM几年前推出的ACAP,往往被认为是用来应对 AI 浪潮的,我们来看看它到底是如何策略的。

Adapt Compute Accerlate Platform
        Adapt:可适应的,可适配的。
        Compute:仍然立足于运算。
        Accerlerate:主要用途是数据加速。
        Platform:提供的是一个平台,可以理解是面向一个工程的整体解决方案,而非局部。

        从字面上理解,除了数据加速,并看不出和AI有什么直接关系。

仔细看一下ACAP的结构,可以看出点内容:

1:芯片固化了一组 AI Engine(实际后续还出了一款 AI Engine ML )。内置RISC处理器,一个向量处理器。可以进行SIMD的定点和浮点并行计算。配有分布式内存和组存,每个AI Block之间可以DMA方式共享内存。这妥妥的就是GPU的做法。可以理解为一个为了做AI运算的ASIC芯片,类似Google的TPU。(当然,也有说法,一开始并不是专为AI设计的,我后面会说)

2:提供了片上网络(NoC),提供高速的数据传输能力。将数据传输与运算做了分离。其实这很重要,因为运算速度并不是单由算力决定,还有数据传输能力和速度。

3:FPGA中的CLB架构变化,单个CLB中 LUT数量变大。还有一些其它变化,这可以提升运算性能(减少芯片后端实现时的走线压力),但好像和AI没啥关系。

4:如此复杂的芯片结构,采用了SSI技术(堆叠)来完成加工生产。

5:推出Vitis开发工具链,其中包括了收购的深鉴公司的 DNNDK(包含了模型的深度压缩,量化,剪枝功能)。并内置了一些深度模型,但据可靠人士反馈,真实可用的,很少(官方model zoom中的可用模型不多,也不包括transformer,并且更多要使用ML版本)。

我们曾经想用VCK5000的卡部署 Llamma的vicume模型,但发现根本就不支持。

所以,综上所述,ACAP 对于AI 有野心,但没有啥效果。我最近一次去参加了AMD线下的技术大会,会上对于AIE的介绍,基本上都用用来解决DSP的问题。基本上是基于Vitis的API编程,而不是AI编程。

三:AI模型需要近似处理

        对于AI模型(深度学习模型)推理的影响因素,最容易想到的是算力(计算复杂度),性能(推理准确度),存储(模型的大小)。不加处理,直接拿来用,基本上是不可能的。

        做为一个实际的项目/产品,除了上面三个因素外,还有一些其它方面需要考虑:实时性(吞吐最),功耗(耗电,发热降温),成本…… 因为推理的场景会很多,比如:数据中心,基站,自动驾驶,摄像头……

        我们把对AI模型的处理称为近似处理,它可以在几乎不损失精度的情况下,减少计算复杂度,存储量。近似处理的方法很明确,我之前文章也提到了。量化,剪枝,深度压缩。

        为什么要提这几种处理?因为这些处理实际上适合 FPGA 和 ASIC(Google的TPU,华为的昇腾,RK的SOC(NPU)),它实际上是将AI模型部署到特定硬件的关键。

3.1:低精度定点代替浮点

        这里不再细述,简单说就是将模型中的权重的激活函数输出进行精度降低(具体的方法,我之前有一篇文章有提到)。可参见:深度学习的量化和剪枝_深度学习中的剪枝-CSDN博客

        另外,FPGA中的DSP有较多的不同精度运算的支持,使得FPGA相比ASIC和GPU有更灵活的优势。

3.2:网络剪枝

        去掉网络结构中多余的神经元或者连接。深鉴科技就是凭借相关的论文,成功将自已卖给了Xilinx。

        注意:剪枝往往会将密集型网络转换成稀疏网络。这刚好也是FPGA合适的(不合适GPU)。

3.3:深度压缩

        其实,这并不是一种单独技术,是多种处理的集成。一般分为三个步骤:

        1:迭代剪枝,去掉低权重网络分支。

        2:权值量化和共享。共用相同权重(保持索引),保存时减少了位宽。

        3:采用霍夫曼编码,对非均匀的权重进行进一步无损压缩。

        深度压缩主要是降低了模型大小,减少内存使用。尽量少使用片外内存,提升性能。

四:FPGA大厂的AI尝试

        好了,我们来看看领先的FPGA厂商都做了一些什么。

4.1:在FPGA 中 提供 DPU IP

         使用逻辑单元来完成 AI 运算,当然,更多情况使用的是DSP + RAM + 外部DDR。但这些会封装成一个IP 给到用户使用。

        典型应用就是Xilinx vivado 提供的 DPU IP。

4.2:添加芯片与FPGA异构集成

        使用SSI,EMIB等方式将其它ASiC芯片与FPGA进行集成(合封)。异构系统可以将FPGA和ASIC 芯片的优势进行互补。工具也使用ASIC芯片自带的生态。

        比如:Xilinx 的 AIE 就是一颗ASIC 芯片。

4.3:开发语言

        直接使用RTL的开发语言,易用性太差。于是:

        OpenCL:FPGA的高层次开发语言。这是跨平台的高层次开发语言,Intel , Xilinx都支持

        OpenVINO:Intel 发布的深度学习开发套件。它与Intel其它平台兼容。

4.4:提升可变精度的DSP

        Intel 的FPGA 提供可变精度的DSP,可以接受多种量化模型,提升运算速度。

五:FPGA部署AI模型的实验

        并不能拿到国内比较好的ASIC的AI芯片(或者NPU),我们就拿 华为海思的 Hi3559AV 200 和SS927,Google端侧的TPU,以及RK的芯片为例 ,做一下比较。

       我们从 能效比,成本,生态几方面来比较:

5.1 FPGA 的优势?

        RK:

CPUNPUMIPIISPPCIe
RK35664核A551 TOPS @ INT82.5G * 48MGen2*1
RK3588

4核 A55

4枋 A76

6 T2.5G * 416MGen3*4

        TPU / Coral:

                4 TOPS @ INT8,价格:20美金   功耗:2W

        Hi3559 AV 200 / SS927:

                2.5 Tops 价格:百元人民币

        AMD/Xilinx:

 从上面的数据对比,可以看出:一地鸡毛啊

        从算力,功耗,成本上看,FPGA 都完全不占优势。相同算力,FPGA需要10倍的成本,汗。

        从生态上看,GPU > NPU(ASIC)  > FPGA ,因为拿最有名的 AMD的 Vitis AI 来看,基本没有什么成功的项目,因此极少有人使用(Model zoonm里面的模型也非常少),基本没有生态。

        据Xilinx内部人说:AIE设计之初就不是针对AI的,而是针对ME(通讯相关的信号处理),类似DSP的PipeLine计算,所以,在后续往AI上转时,硬件架构支撑本身就不好,对神经网络这种多层运算支持不好,因为需要不停的从DDR取缓存的数据,这会导致AIE效率不高。后续新增了一个 ML 版本(添加了运算枋间的片上内存),但是,到了 AMD时代,公司的重点转到 CPU,基本把FPGA的 AIE 给完全取消了(在中国地区的ACAP 的 AI 支持团队全部裁了)。

        所以,简单分析,可得出结论,单从技术指标上看,FPGA在AI领域没什么优势

5.2:FPGA 与 AI的融合方案

        什么AI融合,这里只是随便想的一个并不很恰当的名词,大概意思就是,FPGA不要作为AI的主芯片,只是在合适的AI项目中参与,融合,比如:对于需要实时的AI场景,在成本允许的情况下,不仅可以用FPGA解决数据预处理,还可以进一步用FPGA 卸载掉部分 AI 推理的功能,达成场景进一步优化性能的目标。

        如何理解上面的AI 融合 方案?

        1:使用FPGA(DSP)来完成AI推理。软核

        软IP,提供灵活通用的算子,或者定制算子,在FPGA中部署 CNN,LSTM,Transformer等AI 深度学习模型。

        DSP因为支持多种精度运算(FP32,FP16,INT16,INT8),所以,对于量化后的模型有一定的优势。整体算力可以从 0.3 —— 50 TOP要@ INT8(2KK的FPGA芯片)

        2:在需要直接与多种接口取数,且需要快速推理时,使用FPGA

        丰富的硬件可编程SIO,UIO,GT,支持PCIe,MIPI,以太网,LVDS等接口接入。

        利用FPGA的接口多,速度快,吞吐量大的优势。为AI推理提供数据通路。

        如:直接从感应器获取数据,通过FPGA丰富,高速的接口,直接获取数据,进行推理。

        3:需要实时性高,需要ns级的数据预处理和后处理,完成系统同步。

        这种场景,如果要做简单的AI运算,可以使用FPGA来完成,充分利用 可编程逻辑和片上存储。

        同步处理:高精度时钟级并行处理,完成数据预处理以及时间同步,为AI推理降低部分运算负载。见 下5。

        4:注意,和微软的方案不同,片上存储一般无法完成AI的运算所需,一定需要借助DDR。需要有DDR接口和外置DDR。

        5:处理完成后,可以再交给 重度的AI推理给到  SoC(NPU),继续处理。

        6:应用领域:工业自动化,医疗,电力,汽车,音视频处理,高性能计算……

        以上的方案,有一些牵强,受限于应用场景,应该并不能广泛应用。我们理解为一种软核IP的应用方案。完全使用FPGA来完成部分AI推理的功能。缺点很明显,成本(开发成本和实际芯片的成本)。

     5.3:行业的发展

        除了大力发展 GPU,国内也还有一些同行在致力于专用的 AI 芯片以及与FPGA的整合。

        公司H :某国内知名企业,实际上已经生产了较强算力的 AISC (AI推理)芯片,可以达到20T以上的算力(并不是上文提及的芯片),此芯片资料很少,并不作为单芯片销售,只支持模组(板卡)集成芯片,国内一些特种行业有很多在使用。因该该司有不错的AI开发生态,可以说,是国内最有潜力的AI芯片大厂。

        公司F:某低调 FPGA 企业,已经自研了 专用AI芯片多年(5 - 6年了吧),现在已经可以生产出 20 T以上算力的芯片,而且因为该公司有FPGA,已经将该芯片做为硬核  IP 植入自有最新的某款FPGA(功能自带,根据用户是否选择而开启)。相对已经比较成熟,一些特种行业已经在使用。因为完全不公开,没有大规模使用,工具链无法评判,只是据说是可用的。自然谈不上什么生态,作为特种行业的应用,基本已经足够,也具有很强的领先优势。

        公司R:某 多年 MCU,SoC厂商,最新的SoC内置了 NPU,差不多有6T算力,能满足不少应用(包括小型的大模型)。但是可理解为集成产品,因为该司芯片自研能力一般。一些有高要求的特种行业并不敢使用。但目前用户较多,成本很低,加上有简单的工具链可用,也是一支潜力股。之前我参加过它们的生态大会,差不多有5000人参加,生态链还是相当不错的。

六:思考

        FPGA的设计局限,懂的都懂,它设计之初就是为了做ASIC原型验证的。然后用于一些数据预处理,图像视频处理,协议转换等场景,主打一个快周期,运算快,可编程。和AI运算需要的并行运算并非一条路子。

        另外,在量大情况下,FPGA的成本高于ASIC,如果应用于一个用量非常大的场景(百万),加上性能肯定略低于ASIC,一定是不合适的,FPGA的终点是ASIC。

        对于,深度学习模型推理,这是一个相对固定,用量极大的场景,并不适合使用FPGA来完成。对于上面提到的FPGA AI +的方案,如果有办法将两颗芯片合封到一起,或者通过一个协议异构配合,也是可以替代 AI+方案的。(AI+方案注定规模小,无生态,属于定制项目型)

        所以,我认为 Xilinx 的技术方案本身是没有问题的,目前没做起来,原因是没有将AIE当做一个独立的芯片来打造(投入太少),但野心太大,想与GPU(NVIDA)分庭抗礼。AIE 的定位是正确的,但是投入是不够的,它只是一个附庸。因为对于GPU/CPU,除了硬件,更重要的是还需要打造强大的生态,AMD肯定考虑过,所以有Vitis AI 这个产品,但是,骨子里的基因,并不具备这个能力,所以,只开了一个头。话说回来,NVIDA能够成功,也是有偶然因素的,因为GPU最早还是定位于显示,因为有了比特币,积累了一把财富,等到了AI的爆发。而老黄对于CUDA平台的建立,是非常超前的,提前做了很大的布局和投入。各种机缘巧合,加上天才的黄教主,才形成了NVIDA的强大的壁垒。

        Xilinx的策略,是让资方相信,它可以进入AI领域这个更大的市场,于是,以一个非常不错的价格将自已打包卖给了AMD。AMD试图沿着Xilinx的想法,继续尝试,但花了一段时间去市场验证,结果很不好,基本没有落地的AI项目(竟争不过GPU,甚至NPU的解决方案),主要问题从表面上看是工具链存在问题,实际上还是一个生态的问题。于是, AMD很快放弃了 Xilinx原有的思路,将 AIE 引入 PC市场,看起来,已经暂时放弃了 FPGA + AIE 的组合(在中国的支持团队基本全部撤掉了)。当然,这也可能是因为AMD本身就有GPU的产品和市场,两者是有冲突的。但不管怎么说,实际情况就是,AMD撤掉了原来的VITIS AI的开发团队/售前团队,转向Ryzen AI (基于CPU的开发平台)。

        既然自已做不到,能否找其它团队合作,买,买,买呢?很不幸,市场上并没有类似可以合作的企业, Google?太大了,人家不会理你。一些小的创业公司?没有生态,价值不大。

        那国内的FPGA厂商应该如何做呢?放弃?或者采用喝一口汤的融合方案(打个下手)?

        我的建议是:不能放弃,不要融合,寻求合作。

        第一步:AI 模型训练

        企业自身具有 AI 应用模型(主要是深度学习,神经网络模型的训练能力)的技术能力,这是根本,否则无法进行下面的步骤。至少有那么一两位资深人士。这是进入这个领域的前提。有了这样的人,才能能进入后面的步骤。不要小看这一点,这其实是很大难度的(因为人才跨领域的)。

        第二步:软核IP

        建立AI实验室,做一些预研的工作。预研的目标是完成2个目标。FPGA 的软IP(DPU)的简单尝试。注意,只是简单尝试,找到FPGA本身在AI运算上的特点,这个必须要掌所握,但是,这一定不是主要方向,但可以快速切入AI领域,用一两个外部项目,一方面打磨AI模型层的能力,而一方面的市场上形成可演示的产品。

软核IP的实现方法:

  • 设计与实现:通过 HDL(如 Verilog 或 VHDL)设计一个定制的软 IP 核,利用 FPGA 内部的 DSP 单元、BRAM、逻辑单元等资源实现深度学习的推理。主要包括卷积、矩阵乘法、激活函数等操作的硬件加速器。
  • 优化与调优:使用高层次综合(HLS)工具优化硬件架构,以实现更高效的运算单元布局。还可以通过流水线技术、并行计算等方法提高推理速度。

优点:

  • 灵活性高:可以根据具体需求灵活配置和优化计算资源,适合多种神经网络结构和应用场景。
  • 可定制化:软 IP 可以完全根据需求定制,适应性强,且能够在 FPGA 中进行快速迭代和升级。
  • 节省成本:无需额外的硬件投入,仅依赖 FPGA 本身资源,适合小批量或快速开发。

缺点:

  • 性能有限:相较于硬 IP 或专用芯片,软 IP 在计算密集型任务(如大规模深度学习推理)上的性能可能较弱,推理速度受 FPGA 资源限制。软核IP可以独立综合(固化在某个区域,提升性能和稳定设计),也可以和设计一起综合。
  • 开发复杂度高:需要深入的 FPGA 开发经验和对深度学习算法的理解,开发周期较长。   

        第三步:硬核IP或合封AI芯片

        建立AI实验室(如果有实力,可以和第二步并行),购买或自研 硬核 IP(实现深度学习模型的推理)。硬核IP一般需要在软件层面包装一个Macro IP。如果无法购买硬核IP,还可以找一款成熟的ASIC AI 芯片与FPGA合封,通过I/O进行调用。

硬核IP的实现方法:

  • 硬 IP 集成:使用预先设计和验证好的 DPU(Deep Learning Processing Unit)硬 IP,如 Xilinx 的 DPU,可以直接在 FPGA 中集成该硬件加速单元,用于高效执行深度学习模型推理。
  • 设计集成:通过设计工具(如 Vivado)将 DPU 硬 IP 集成到 FPGA 设计中,结合其他逻辑单元,实现完整的应用系统。

优点:

  • 高性能:DPU 硬 IP 是为深度学习推理专门优化的硬件,加速效果显著,性能优于纯软 IP 实现。
  • 开发难度低:由于 DPU 硬 IP 已经过优化和验证,开发者可以专注于系统集成和应用开发,减少了开发难度和时间。
  • 兼容性强:通常支持多种深度学习框架(如 TensorFlow、Caffe),能够直接部署已有模型。

缺点:

  • 灵活性受限:硬 IP 的配置较为固定,灵活性不如软 IP,难以针对特定应用进行深度定制。
  • 成本较高:引入硬 IP 可能会增加开发成本,特别是在需要许可费或资源消耗较大的情况下。

合封实现方法:

  • 芯片合封:将成熟的 ASIC AI 芯片(如 TPU、NPU)与 FPGA 芯片封装在一起,利用高速 IO 接口实现两者之间的数据通信与协同处理。
  • 系统集成:通过设计专用的接口协议和数据路径,使 FPGA 控制系统能够高效地调用 AI 芯片进行深度学习推理任务。

优点:

  • 最高性能:ASIC AI 芯片通常为特定任务高度优化,性能强大,适合高吞吐量、低延迟的深度学习推理应用。
  • 工作负载分担:FPGA 负责系统控制与数据处理,AI 芯片专注于推理计算,两者协同工作可以充分发挥各自优势。
  • 可扩展性:这种方案适合需要大规模部署的应用,可以根据需要选择不同的 AI 芯片,升级容易。

缺点:

  • 成本最高:合封设计和生产成本高,同时需要处理复杂的集成和通信问题。
  • 开发复杂度高:需要处理两种不同架构的协调工作,涉及高速 IO 设计、协议设计等复杂问题。
  • 空间占用:合封可能增加整体芯片面积和功耗,尤其在资源受限的环境下可能受到限制。

    第四步:完成集成的开发工具链

        最终,还是要形成一个统一的自主产权的开发工具链。可能一部分是集成三方的。

          所以,综上所述,FPGA要进入AI赛道,通过合作是必须的,但也要对相关的技术要有一定的掌控。不然,也没法定义合作的产品。

        合作方,比如找到上面的H公司,F公司合作,等…… 

        但是,AI开发生态是关键,这往往也是合作的障碍,有生态的看不起你,没生态的,你看不起人家。但它是能否做成的关键。就好像现在没有人再去做PC 操作系统一样。如果好的生态确实不存在,那就寻求一个更好的开发工具链了。

        可见的 Cuda 这座大山就在那里,很难跨越,但如果只针对某一些行业和场景(FPGA有可替代性),只要AI模型的部署不要太困难,还是很有机会。

        FPGA在AI领域的定位,这个问题困扰我很久了,本文算是给自已一个答复。

        

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2535. 解密 [CSP-J 2022]

代码 #include <bits/stdc.h> using namespace std; long long m,n; int check(int x){if(x * (m - x) n) return 0;if(x * (m - x) < n) return 1;if(x * (m - x) > n) return 2; } int main(){int k;cin >> k;while(k--){long long e, d,p0,q0;scanf(&q…

如何抠去PPT图片的背景?推荐这款AI智能抠图软件!

做ppt的过程中&#xff0c;我们会用到各式各样的图片素材&#xff0c;其中有些图片不能完全满足我们的需求&#xff0c;得先对图片进行处理&#xff0c;最常见的是抠图&#xff0c;去除图片原有的背景&#xff0c;得到一张包含透明像素的图片&#xff0c;方便我们排版PPT页面上…

高德企业用车负责人:以AI技术革新出行服务体验

在助力产业数字化转型的大潮中&#xff0c;高德企业用车以其前沿的科技理念和创新服务&#xff0c;正在成为出行领域的领跑者。近日接受采访时&#xff0c;高德地图行业合作业务总经理姜义丹先生分享了AI技术在出行领域应用的思考&#xff0c;以及如何提升企业服务智能化水平&a…

【C/C++】typedef用法

typedef用法讲解&#xff0c;时隔半年&#xff0c;再看typedef。 &#x1f381;typedef可以简化结构体关键字 #include<iostream> using namespace std;struct Person {char name[64];int age; };void test01() {struct Person p { "张三",18 };//不用type…

005、架构_数据节点

​DN组件总览 ​ DN节点包含进程 dbagent进程:主要提供数据节点高可用、数据导入导出、数据备份恢复、事务一致性、运维类功能、集群的扩缩容、卸数等功能;MySQL进程:主要提供数据一致性、分组管理、快同步复制、高低水位等;

卡在恢复模式怎么办?这样操作一键轻松退出iPhone 恢复模式

iOS 18beta版本发布后&#xff0c;已经成功升级到iOS 18beta并享受新功能的小伙伴们真是太幸运了。但是还有一些小伙伴在更新iOS 18beta的过程中遇到了各种问题&#xff0c;比如iPhone卡在恢复模式是常见问题。如果你也遇到此问题&#xff0c;不要着急&#xff0c;接下来我们将…

Graylog日志丢失解决方案

问题描述 目前公司使用的日志方案是Graylog5.0版本&#xff0c;当接入的日志并发多时&#xff0c;就会出现日志丢失的情况。 目前硬件系统centos7.9 内核5.16.13。一台graylog和一台es服务器。 两台机器硬件配置 graylog CPU 36C 内存 150G 系统硬盘 500G &#xff08;固态&…

[论文阅读] mobile aloha实验部分

DP:[1] CHI C, FENG S, DU Y, et al. Diffusion Policy: Visuomotor Policy Learning via Action Diffusion[J]. 2023. Diffusion Policy: Visuomotor Policy Learning via Action Diffusion精读笔记&#xff08;一&#xff09;-CSDN博客 哥伦比亚大学突破性的方法- Diffusio…

Android中apk安装过程源码解析

本文中使用的Android源码基于Android 14 1 三方应用安装apk调用方法 public void installApk() {Intent intent new Intent(Intent.ACTION_VIEW);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);/** 自Android N开始&#xff0c;是通过FileProvider共享相关文件&#xff0…

git提交本地项目到远程仓库

1、查看项目目录&#xff0c;是否存在.git文件夹&#xff08;若存在则删除&#xff09; 2、登录git并新建一个空白项目 3、idea创建本地git仓库&#xff08;选择本地项目&#xff09; 4、添加要提交的项目&#xff08;项目右键&#xff09; 5、提交代码到本地仓库 6、配置远程…

SQLserver中的游标的分类和游标的生命周期

SQLserver中的游标的分类 在 SQL Server 中&#xff0c;游标&#xff08;Cursor&#xff09;是一种数据库对象&#xff0c;用于逐行处理结果集中的数据。游标可以用于复杂的数据处理任务&#xff0c;尤其是那些不能通过简单的 SELECT 语句和 JOIN 操作完成的任务。SQL Server …

48.x86游戏实战-封包抓取进图call

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

OpenAI API: How to count tokens before API request

题意&#xff1a;“OpenAI API&#xff1a;如何在 API 请求之前计算令牌数量” 问题背景&#xff1a; I would like to count the tokens of my OpenAI API request in R before sending it (version gpt-3.5-turbo). Since the OpenAI API has rate limits, this seems impor…

OpenLayers3,地图探查功能实现

文章目录 一、前言二、代码实现三、总结 一、前言 图层探查&#xff0c;即对置于地图下方的图层进行一定范围的探查&#xff0c;以便用户查看到不易察觉的地理地况。本文基于OpenLayers3&#xff0c;实现地图探查的功能。 二、代码实现 <!DOCTYPE HTML PUBLIC "-//W…

基于Transformer架构的大模型推理硬件加速器设计

概述 当前大模型的基础架构正在向 Transformer 结构收敛1&#xff0c;Transformer架构自谷歌2017年提出后比较稳定&#xff0c;因此针对Transformer的计算设计专用的ASIC加速器很有必要。 尤其是“Attention is All you Need”》“Money is All you Need”&#xff0c;哈哈哈…

MySQL的源码安装及基本部署(基于RHEL7.9)

这里源码安装mysql的5.7.44版本 一、源码安装 1.下载并解压mysql , 进入目录: wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz tar xf mysql-boost-5.7.44.tar.gz cd mysql-5.7.44/ 2.准备好mysql编译安装依赖: yum install cmake g…

使用vueuse在组件内复用模板

1. 安装vueusae pnpm i vueuse/core2. 组件内复用模板 createReusableTemplate 是vueuse中的一个实用工具&#xff0c;用于在 Vue 3 中创建可重复使用的模板片段&#xff0c;同时保持状态的独立性。这对于需要在多个组件中重复使用相同的结构和逻辑时非常有用。 因为这些可复…

链表OJ题——使用栈实现单链表的逆序打印

文章目录 一、题目链接二、解题思路三、解题代码 一、题目链接 题目描述&#xff1a;使用栈&#xff0c;实现单链表的逆序打印 二、解题思路 三、解题代码 /*** 非递归实现单链表的顶逆序打印——>通过栈来实现* param*/public void printReverseListFromStack(){Stack<…

短视频SDK解决方案,原开发团队,一对一技术支持

美摄科技&#xff0c;作为行业领先的视频技术提供商&#xff0c;凭借深厚的技术积累和敏锐的市场洞察&#xff0c;隆重推出其短视频SDK解决方案&#xff0c;旨在为全球开发者及内容创作者搭建一座通往无限创意与高效生产的桥梁。 【一站式解决方案&#xff0c;赋能创意无界】 …

【js原型和原型链】

js原型和原型链 一、构造函数和原型对象中的this二、原型对象的constructor属性三、原型链四、关系图五、普通函数和函数对象 参考文章链接: link 一、构造函数和原型对象中的this 指向实例对象 // 定义构造函数function Star(name,age){this.name name;this.age age;conso…