




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章FPGA类AI芯片的开发实践开发工具VitisAI概述VitisAI的常用参数化IP核VitisAI开发工具包目录CONTENTSVitisAI应用开发示例:应用Zynq监测道路裂缝本章习题VitisAI概述片硬件平台分类01开发工具VitisAI概述VitisAI平台是为AMD器件、板卡及Alveo数据中心加速卡提供的综合AI推断开发平台。它支持来自PyTorch、TensorFlow、TensorFlow2和Caffe的现成深度学习模型,提供可重复训练的优化模型,实现更快的执行速度和更高的性能。平台还包括VitisAI量化器、优化器、编译器、分析器及库等开发工具,提升AI芯片开发效率,加速AI算法在FPGA平台的落地应用,VitisAI结构图如图所示。为主流框架和最新模型提供支持,帮助其完成各种深度学习任务,如CNN、RNN和NLP等。功能强大的量化器和优化工具可提高优化模型的精度和处理效率。便捷的编译流程和高层次API可实现自定义模型的极速部署。可配置的高效率DPU内核能够充分满足边缘及云端对吞吐量、时延和电源的不同需求。VitisAI的常用参数化IP核02DPUZDX8G概述DPUCZDX8G是针对ZynqUltraScale+MPSoc优化的深度学习处理单元(DPU),是卷积神经网络专用的可配置计算引擎,其并行度可按目标器件和应用需求选择。它属于高层次微码计算引擎,具备高效指令集,能支持多种卷积神经网络推断。DPUCZDX8GIP可集成到ZynqUltraScale+MPSoc的可编程逻辑(PL)中,直接与处理器系统(PS)相连。用户可配置DPU的多个参数,以优化PL资源并自定义功能。其架构中,APU为应用处理单元,PE为处理引擎,DPU为深度学习处理单元。DPUZDX8G概述DPUCZDX8G启动时从片外存储器加载由VitisAI编译器生成的指令,编译器会进行层级融合等优化操作。片上存储器用于缓存输入激活、中间特征映射和输出数据,以提高吞吐量和效率,同时尽量复用数据以降低外部存储器带宽需求。计算引擎采用深度流水线设计,处理引擎(PE)充分利用Xilinx器件中的高精度组件,如乘法器、加法器和累加器。DPUZDX8G概述DPUCZDX8G启动时从片外存储器加载由VitisAI编译器生成的指令,编译器会进行层级融合等优化操作。片上存储器用于缓存输入激活、中间特征映射和输出数据,以提高吞吐量和效率,同时尽量复用数据以降低外部存储器带宽需求。计算引擎采用深度流水线设计,处理引擎(PE)充分利用Xilinx器件中的高精度组件,如乘法器、加法器和累加器。高性能通用CNN处理引擎DPUCVDX8GDPUCVDX8G是一种针对VersalAICore系列优化的高性能通用CNN处理引擎。与传统FPGA、CPU和GPU相比,Versal器件具有卓越的性能功耗比。DPUCVDX8G由AI引擎和PL电路组成。用户可以通过配置参数对AI引擎和PL资源进行优化,并自定义功能。高吞吐量通用CNN处理引擎DPUCVDX8HDPUCVDX8H是针对VersalAICore系列优化的高性能、高吞吐量CNN处理引擎,包含AI引擎和PL电路。它利用Versal器件的高性能AI引擎阵列、高带宽NoC、DDR/LPDDR控制器等优势,相比传统FPGA、CPU和GPU,性能功耗比出色。用户可通过配置参数优化资源,满足数据中心等应用需求。其架构中,Conv计算单元在AI引擎上实现,其他单元如转换控制、加载、保存和MISC(池化和元素处理)通过PL实现,所有处理引擎共享权重加载单元和调度器。系统内存(如DRAM)存储网络指令、输入图像、输出结果和中间数据,启动后DPU从系统内存获取指令控制操作。片上存储器缓冲权重、偏置和中间数据,特征映射库私有,权重缓冲区共享,通过数据复用减少内存带宽需求,处理引擎充分利用AI引擎计算能力以实现高性能。包含最优化的深度学习模型的VitisAIModelZooVitisAIModelZoo包含优化后的深度学习模型,可在Xilinx平台上加速深度学习推断,涵盖ADAS/AD、视频监控、机器人和数据中心等应用。其文件命名格式为:F_M_(D)H_W(P)_C_V,其中:F:训练框架(如tf为TensorFlow1.x,tf2为TensorFlow2.x,pt为PyTorch)。M:模型名称。D:训练数据集(私有数据集时无此字段)。H:输入张量高度。W:输入张量宽度。P:修剪比率(模型未修剪时无此字段)。C:每张图像的计算成本(单位为GGOPs)。V:VitisAI版本。例如,文件名pt_inceptionv3_imagenet_299_299_0.6_4.5G_3.0表示:使用ImageNet数据集,基于PyTorch训练的Inceptionv3模型,输入图像大小为299×299像素,修剪了60%,每张图像的计算成本为4.5GGOPs,VitisAI版本为3.0。VitisAI开发工具包03VitisAI量化器VitisAI量化器提供从自定义运算符检查、量化、校准、微调到将浮点模型转换为定点模型的完整流程。这一过程不仅加速运算,还提高计算效率。Xilinx通用型CNNDPU利用INT8量化训练网络,通常对预测精度的影响小于1%,适用于图像、视频、点云数据及多种采样数据系统。VitisAI量化器集成于TensorFlow或PyTorch,通过校准步骤分析激活分布,将权重和激活量化为8位整数,即训练后量化。量化后,使用验证数据重新测试网络准确性。若精度可接受,则量化完成。对于精度损失较大的网络,可采用量化感知训练(QAT)技术,通过多次反向传播优化量化权重。VitisAI量化器VitisAI量化器提供从自定义运算符检查、量化、校准、微调到将浮点模型转换为定点模型的完整流程。这一过程不仅加速运算,还提高计算效率。Xilinx通用型CNNDPU利用INT8量化训练网络,通常对预测精度的影响小于1%,适用于图像、视频、点云数据及多种采样数据系统。VitisAI量化器集成于TensorFlow或PyTorch,通过校准步骤分析激活分布,将权重和激活量化为8位整数,即训练后量化。量化后,使用验证数据重新测试网络准确性。若精度可接受,则量化完成。对于精度损失较大的网络,可采用量化感知训练(QAT)技术,通过多次反向传播优化量化权重。VitisAI优化器VitisAI优化器是Xilinx提供的一款工具,它通过利用神经网络中的稀疏性来降低推理的计算复杂度。它支持对深度神经网络进行剪枝,以减少网络中的冗余,这在网络主干针对预测准确性进行优化且训练数据集支持许多类时尤其有用。VitisAI优化器可以在对精度影响极小的情况下,将模型的复杂性降低5到50倍,从而显著提升AI推断性能。VitisAI优化器支持两种修剪形式:通道(内核)修剪和稀疏修剪,它能够在几乎不影响精度的情况下,通过深度压缩技术将AI推断性能提升到一个新的层次。VitisAI优化器VitisAI优化器的工作流程包括以下几个关键步骤:灵敏度分析:优化器首先执行灵敏度分析,旨在确定每一层的每个卷积内核(通道)对网络预测的影响程度。权重归零:在分析之后,要修剪的通道的内核权重归零,从而可以准确评估“建议的”修剪模型。微调:然后针对多个训练周期优化(微调)剩余的权重以恢复准确性。通常采用修剪的多次迭代,每次迭代后,都可以捕获状态,从而允许开发人员通过一次或多次修剪迭代进行回溯。转换:修剪的最后阶段,即转换步骤,删除为修剪选择的通道(以前为零的权重),从而减少最终计算图中每个修剪层的通道数。例如,以前需要计算128个通道(128个卷积内核)的层现在可能只需要计算87个通道的输出激活(即修剪了41个通道)。在转换步骤之后,模型采用可由VitisAI量化器摄取并部署在目标上的形式。VitisAI编译器VitisAI编译器将AI模型映射到高效的指令集和数据流,并进行复杂的优化,例如层融合、指令调度,以及尽可能多地重用片上存储器。这一过程涉及到将模型转换为Xilinx中间表示(XIR)格式,以消除不同框架之间的差异,并应用优化。编译器对图进行优化,并在必要时根据是否可以在DPU上执行子图运算符将其划分为多个子图。架构感知优化应用于每个子图,对于DPU子图,编译器生成指令流。最后,将优化的图形序列化为已编译的.xmodel文件。这一编译过程利用额外的输入作为DPUarch.json文件,此文件将目标架构传达给编译器,确保编译的图形适用于特定的DPU功能。如果未使用正确的文件,则编译的模型将不会在目标上运行。VitisAIPorofiler(分析器)VitisAI分析器是赛灵思公司推出的VitisAI开发平台中的一个工具,它用于对AI应用进行性能剖析和可视化,以便在不同器件之间查找瓶颈并分配计算资源。该分析器使用方便,无需更改任何代码,即可追踪函数调用和运行时,同时收集包括CPU、DPU和存储器利用率在内的硬件信息。这有助于开发人员深入分析AI推断实现方案的效率和利用率。VitisAIPorofiler(分析器)设置目标硬件和主机配置Linux操作系统以使用PetaLinux进行分析(如果需要)执行一个简单的跟踪VARTResent50示例使用VARTResent50示例执行细粒度跟踪将所有捕获的结果导入到分析器进行观察分析器主要工作流程VitisAIPorofiler(分析器)VitisAI分析器通过读取JSON配置文件来设置分析选项,并通过-c开关执行。在正常模式下,分析器将整个ResNet50模型作为单一任务进行追踪,捕获所有层为一个定时事件,便于比较DPU性能与其他系统数据处理块。用户可以通过cmd命令指定ResNet50应用程序和模型进行执行和分析,也可以通过trace_custom命令指定需要追踪的特定区域。完成分析后,生成的文件可以通过MobaXterm等工具传输到主机上,以便在VivadoTCL控制台启动Vitis分析器进行深入分析。Vitis分析器提供系统级视图,展示FPGA中不同计算单元的性能,包括DPU任务的运行状态和利用率、CPU的繁忙/空闲状态、各阶段的时间消耗、内存带宽、AI推理的实时吞吐量(FPS)、硬件信息如CPU型号/频率和DPU内核延迟等统计信息,从而帮助开发者优化AI模型的性能。VitisAI库VitisAI分析器是赛灵思公司推出的VitisAI开发平台中的一个工具,它用于对AI应用进行性能剖析和可视化,以便在不同器件之间查找瓶颈并分配计算资源。该分析器使用方便,无需更改任何代码,即可追踪函数调用和运行时,同时收集包括CPU、DPU和存储器利用率在内的硬件信息。这有助于开发人员深入分析AI推断实现方案的效率和利用率。VitisAI应用开发示例:应用Zynq监测道路裂缝04破损检测系统整体开发流程基于VitisAI平台在Zynq硬件上开发道路裂缝监测系统的应用开发流程。开发流程主要包括三个步骤:硬件系统搭建、网络模型移植和Zynq硬件平台部署。硬件系统基于ZynqUltraScale+MPSoC平台(如ZCU104开发板),利用其APU(四核ARMCortex-A53)和RPU(双核ARMCortex-R5)实现高效处理。网络模型移植阶段,通过VitisAI的量化器和优化器将预训练的CNN模型进行量化和优化,以适应FPGA硬件。最后,借助VitisAI编译器和运行时库将优化后的模型部署到Zynq平台,实现高效推理。整个系统中,VitisAI的API和XRT作为后端框架,负责接收前端CNN模型参数并调度DPU进行加速,最终在Zynq的可编程逻辑中实现低功耗、高效率的道路裂缝监测。DPU模块设计DPU是系统实现硬件卷积加速的核心模块。在部署DPU之前,需要设计硬件电路的基本模块,主要包括主控模块、AXI控制模块、时钟模块和中断模块。主控模块是系统的核心部分,负责实现与可编程逻辑(PL)之间的逻辑连接,并处理各个IP核和系统外设的集成。AXI控制模块用于控制总线的传输过程,执行总线传输的仲裁、通信和时序转换等操作,并能够将一个或多个AXI内存映射的控制设备连接到一个或多个内存映射的从设备中。时钟模块的主要功能是生成时钟信号。中断模块的主要功能是将多个外部中断输入集中到一个单一的中断输出,并将中断信号传输给系统处理器。DPU模块设计DPU(深度学习处理单元)作为卷积神经网络加速的核心模块,需要三个时钟:寄存器时钟、数据控制器时钟和计算单元时钟,其中计算单元时钟频率是数据控制器时钟的两倍且必须对齐。本系统为DPU设计了100MHz、200MHz和400MHz的时钟,并为每个时钟配备了独立的复位模块,以确保时钟频率的复位操作不会相互影响且与相应时钟同步,否则可能导致DPU无法正常工作。在数据传输方面,DPU通过AXI总线模块与主控模块连接,AXI总线是一种高性能、高带宽、低延迟的总线协议,支持非对齐传输和突发传输,本系统使用Xilinx的AXIInterconnectIP实现,能够连接不同数据宽度和时钟域的主从设备。DPU本身包含寄存器配置模块、数据控制器模块和卷积计算模块,支持卷积、深度卷积、反卷积、全连接、ReLU激活函数、Softmax、池化和批量归一化等操作,并使用专用指令集高效实现多种卷积神经网络,如VGG、ResNet、SSD和YOLO等。DPU模块设计本系统采用的DPU型号为DPUCZDX8G,专为Zynq器件设计,可集成到Zynq的PL端(可编程逻辑)并与PS端(处理器系统)通过AXI总线连接,实现高性能低功耗的卷积神经网络加速。DPU核心由四个处理引擎(PE)组成的混合计算阵列构成,以深度流水线方式设计,充分利用Zynq器件中的乘法器、加法器和累加器等硬件资源,避免资源浪费。DPU配备高性能调度器、指令提取单元和全局存储器池,支持从RAM中读取操作指令并控制PE计算。在系统搭建时,DPU的设置包括核心数量、卷积架构、DSP和UltraRAM的使用。本系统采用1个DPU核心,卷积架构选择B1152,启用通道增强以提高并行度和计算效率,但会增加额外的逻辑资源(如1744个LUT)。RAM用于存储网络权重和中间特征缓冲,RAMUsage选项决定片上RAM的使用量。本系统选择低RAM占用,以节约资源供其他模块使用。硬件设计完成后,需要配置GPIO、USB和DisplayPort等接口,用于裂缝图像采集和检测结果输出。最终,执行工程综合生成XSA文件(描述硬件结构和参数)和JSON文件(描述DPU架构信息),供后续流程使用。目标检测网络模型移植网络模型移植主要依赖VitisAI开发套件中的AI量化器和AI编译器,整个过程需在Linux环境下进行,本系统使用的是Ubuntu18.04.2。模型移植需在Xilinx提供的Docker镜像中的Anaconda环境中完成量化与编译。VitisAI开发套件依赖Docker容器支持,Docker是一种基于LXC的容器引擎技术,采用Go语言开发,提供轻量级、可移植的容器封装,允许将应用程序及其依赖软件封装后快速部署到任意Linux机器上。与传统虚拟机相比,Docker通过守护进程(DockerDaemon)代替虚拟机管理系统(Hypervisor)和从操作系统(GuestOS),直接与主操作系统通信,实现快速启动(仅需几毫秒)、资源高效利用,并节省大量硬盘空间。Docker的快速迭代和部署特性使其受到广泛欢迎。目标检测网络模型移植在Ubuntu18.04.2系统中安装Docker的步骤如下:卸载旧版Docker(如果已安装)。安装Docker的依赖包。添加Docker仓库的GPG密钥到系统中。将Docker的源添加到系统中。安装最新版本的DockerCE及相关工具。验证安装是否成功,运行Docker默认例程“helloworld”,若输出成功信息,则说明安装成功。安装XilinxVitis-AIDocker环境。Vitis-AIDocker是开发的关键环节,提供DPUKernel编译所需的工具。从DockerHub镜像库下载Vitis-AI镜像(约15GB,下载速度取决于网络环境)。下载完成后,启动Vitis-AIDocker。启动成功后,打印出相关信息,表示环境已就绪,可进行下一步操作。目标检测网络模型移植本系统的网络模型量化任务由VitisAI工具中的AI量化器完成,其作用是将32位浮点参数和激活参数转换为8位定点数,以减少运算复杂性并保持预测准确性。与浮点网络相比,定点网络具有更小的内存带宽占用、更高的运算速度和更低的功耗。AI量化器支持TensorFlow、PyTorch和Caffe框架,本系统使用vai_q_tensorflow量化器,支持卷积层、池化层、全连接层和批量归一化等常用层。量化过程需要以下输入文件:网络模型描述文件(本系统为H5格式,需转换为.pb格式)。无标签的校准数据集(本系统使用913张公路图像)。校准数据集通过input_fn函数转换为输入数据,用于量化校准。量化完成后,生成两个文件:quantize_eval_model.pb:用于在CPU/GPU上执行求值和硬件仿真。deploy_model.pb:用于DPU代码编译和部署,作为VitisAI编译器的输入文件。DPU无法直接使用量化后的模型文件,需通过VitisAI编译器将卷积网络模型映射为优化的DPU指令序列。编译器解析输入模型的拓扑结构,构建中间表示形式(IR),并优化指令调度。DPUCZDX8G采用基于XIR的XCompiler编译器,编译指令为vai_c_tensorflow,需使用deploy_model.pb和DPU架构信息的JSON文件(由Vivado生成)。编译完成后,生成的Xmodel文件包含8位定点权重值和计算图,可在边缘设备上被网络模型调用。Zynq部署Xilinx推出的PetaLinux开发套件包含Linux、U-Boot库、DeviceTree、源代码和YoctoRecipes,支持ZynqUltraScale+MPSoC、Zynq-7000和MicroBlaze,可与Vivado协同工作。PetaLinux简化了Linux系统的开发,允许硬件工程师定制U-Boot、Linux内核或应用。使用PetaLinux生成边缘设备所需的img系统镜像文件时,需使用硬件设计生成的XSA文件。镜像烧录可通过BalenaEtcher软件完成,耗时十几分钟。烧录完成后,使用MobaXterm软件通过SSH远程控制边缘设备。SSH是一种安全网络协议,使用前需确保主机与设备在同一网络下,并获取设备IP地址。登录后,可通过SCP命令将网络模型和移植后的文件传输到边缘设备上。运行路面破损检测程序后,检测结果显示在左上角,包含运行时间和帧率等信息。本章习题05本章习题解释VitisAI平台的设计理念及其在FPGA类AI芯片开发中的重要性。什么是常用参数化IP核?举例说明其在FPGA类AI芯片开发中的应用。简要介绍几种常用的参数化IP核,包括针对ZynqUltraScale+MPSoC的DPUCZDX8G和通用CNN处理引擎DPUCVDX8G。VitisAI开发工具包中包含哪些主要工具?分别描述它们的功能和用途。解释VitisAI量化器的作用,并说明在FPGA类AI芯片开发中的重要性。什么是VitisAI优化器?简要介绍其如何优化模型精度和处理效率。VitisAI编译器有什么作用?它如何实现自定义模型的极速部署?简要描述VitisAIProfiler(分析器)的功能和用途。VitisAI库提供了哪些功能?说明这些功能对于FPGA类AI芯片开发的重要性。举例说明VitisAI平台的一个应用开发示例,如何利用该平台进行道路裂缝检测?解释VitisAI平台的应用场景,并举例说明其在边缘计算和数据中心方面的应用。分析VitisAI平台在提高FPGA类AI芯片开发效率方面的贡献。VitisAI如何支持主流框架和最新模型?为什么这一点对于AI开发者很重要?说明VitisAI平台对于实现更快的执行、性能加速和生产的作用。总结VitisAI平台对于促进FPGA类AI芯片的开发和应用的重要性。VitisAI平台的设计理念是通过高度抽象化和自动化优化,简化FPGA类AI芯片的开发流程,同时提升AI推理性能和开发效率。该平台集成了模型量化、编译和优化工具链,支持主流深度学习框架(例如TensorFlow和PyTorch),并通过硬件加速库及预优化的IP核,实现AI模型在FPGA上的高效部署,降低开发门槛,从而推动边缘计算和数据中心中AI应用的实现。习题答案习题1常用参数化IP核是可以根据具体需求调整功能、性能和资源分配的可重用硬件模块,广泛应用于FPGA类AI芯片开发。典型的例子包括AXI总线接口IP(用于高速数据传输)、BRAM控制器IP(用于管理片上存储器)、DSPIP核(用于加速矩阵运算)和FFTIP核(用于信号变换)。在AI开发中,这些参数化IP核能够灵活配置,以优化神经网络加速器的计算性能和资源利用率,从而加速模型推理和数据处理过程。习题答案习题2常用的参数化IP核包括AXI接口IP(用于高速数据传输)、BRAM控制器IP(用于管理片上存储器)和DSPIP核(用于加速数值运算)。在FPGA类AI芯片中,DPUCZDX8G是针对ZynqUltraScale+MPSoC的可配置加速器IP,专用于深度学习推理,能够高效执行CNN模型。而DPUCVDX8G是一种通用CNN处理引擎,具有更强的可扩展性和性能优化能力,适用于复杂AI应用,例如自动驾驶和智能监控。习题答案习题3VitisAI开发工具包主要包括以下几个核心组件:VitisAICompiler,用于将训练完成的AI模型优化并编译成适用于FPGA的可执行代码;VitisAIOptimizer,负责对模型进行剪枝和量化,以提高推理效率;VitisAIRuntime,提供API接口,支持模型在不同硬件平台上的高效部署;以及VitisAILibrary,封装了常用的AI算法,便于快速集成到项目中。这些工具相互配合,极大地简化了在FPGA上进行AI模型的开发、优化和部署流程,显著提升了开发效率和模型性能。习题答案习题4VitisAI量化器的功能是将AI模型从高精度浮点数转换为低精度定点数(例如INT8),从而降低模型的计算和存储需求,同时尽量保持推理精度不变。在FPGA类AI芯片开发中,它的重要性体现在能够显著加快模型推理速度、降低功耗以及优化硬件资源的使用效率,进而实现高效能的边缘AI计算和实时处理能力。习题答案习题5VitisAI优化器是一种专门用于模型剪枝和结构优化的工具,主要目标是提升AI模型的推理效率和硬件适配性。它通过去除冗余的神经元和不重要的连接,减少模型的参数数量和计算复杂度。同时,结合量化和内存优化技术,在不损失模型精度的情况下,显著提高模型的处理速度并降低功耗。这种优化方式特别适用于FPGA类AI芯片的高效部署。习题答案习题6VitisAI编译器的功能是将训练完成的AI模型转化为适合FPGA硬件的高效可执行代码。它通过图优化、层融合和算子重排等技术对模型计算图进行优化,从而降低延迟和内存占用。此外,编译器支持硬件加速指令的映射,充分利用FPGA的并行计算能力,实现自定义模型的快速部署,进而提升推理性能和能效。习题答案习题7VitisAIProfiler(分析器)能够对AI模型在FPGA上的运行性能进行分析和可视化,帮助开发者识别性能瓶颈。它可监测计算延迟、资源利用率、数据传输效率等关键指标,并提供详细的性能报告,从而支持任务优化和调试,有效提升模型的推理速度和硬件资源利用率。习题答案习题8VitisAI库提供了预优化的AI算法函数、硬件加速API以及高效的数据处理接口,支持快速集成常见的深度学习模型(例如CNN和RNN)。这些功能能够直接调用FPGA硬件加速单元,从而简化开发流程,提升模型推理性能和资源利用率。对于加速边缘AI计算、降低开发复杂度以及实现高效部署,这些功能具有重要的意义。习题答案习题9在道路裂缝检测应用中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人之间借款合同标准文本
- 专业劳务分包合同标准文本
- 农用薄膜批发商市场定位考核试卷
- 劳务派遣合同标准文本南京
- 临时杂工合同标准文本
- 养虾工人合同标准文本
- 气缸内功率转换机理和发动机热力过程考核试卷
- 公司之间佣金合同标准文本
- 兰州新区混凝土合同标准文本
- 农民世界游戏托管合同标准文本
- 二年级下册心理健康课件-第二十三课 勤俭节约|北师大版 (共21张PPT)
- 小学班主任工作经验交流ppt
- 新版现代西班牙语第二册答案
- 福州市《加强我市建筑模板工程施工质量管理若干规定》
- 水利监理规划(水利部)
- KTV包房音响系统设计方案
- 常用物理英语词汇大全
- 城市轨道交通设备系统_第十一章_车辆段与综合基地
- GB_T3162-1991_滑动轴承薄壁轴瓦尺寸、结构要素与公差
- 中国银行房屋抵押银行贷款合同
- 如何挖掘商机PPT课件
评论
0/150
提交评论