CANN/ge静态Shape运行时约束文档
静态Shape运行时约束文档【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge核心设计思想静态shape模块是GE运行时的高频执行路径对性能要求极高。所有设计决策都必须以性能为核心考量确保在保证正确性的前提下最小化执行开销。一、性能优化规则执行流程性能约束新需求涉及DavinciModel::NnExecute流程要评估新增流程对执行性能的影响不允许有性能劣化执行热路径中禁止分配内存、禁止增加非必要日志、禁止有获取时间戳操作内存申请优化执行时应尽量避免动态申请内存这可能导致随机性能劣化如果必须申请内存应该使用预分配的内存池或栈上内存同步异步执行一致性执行流程新增下发拷贝类的类型需和模型的同异步执行方式保持一致根据is_async_mode_的值做同步异步的判断异步H2D拷贝必须配合HOST_TO_DEVICE_EX选项否则可能导致host内存提前销毁引发问题二、模块职责解耦规则TaskInfo职责边界taskinfo仅负责本nodetask相关的下发任务处理不感知其它node、model级处理TaskInfo的职责限定在单个节点的任务构建和分发不涉及模型级别的资源管理和状态维护模块间解耦ModelArgsManager负责模型参数的整体规划和分配DavinciModel负责模型的生命周期管理和协调TaskInfo负责具体任务的构建和执行各模块通过明确的接口交互避免跨模块的直接访问三、ArgsFormat统一处理规则ArgsFormat全场景覆盖涉及算子args的处理无argsformat场景都要增加相关处理逻辑无args format的场景补充默认的公共处理流程按照归一的args format处理重构ArgsFormatInfo提供统一的args描述和处理能力四、地址刷新策略规则更新策略设计支持多种更新策略kNoNeedUpdate, KUpdateHostInput, kUpdateModelIo, kUpdateFmAndModelIo, kInitOneTime根据内存地址变化情况自动选择最优更新策略支持算子化刷新UpdateModelParam_static_bin和传统H2D拷贝两种方式支持PCIE BAR拷贝优化小数据量场景地址刷新性能优化对于频繁刷新的场景优先使用算子化刷新方式通过UpdateModelParam_static_bin算子在Device侧批量刷新地址减少H2D拷贝次数仅刷新变化的地址段避免全量刷新维护last_bases_缓存快进检测地址变化五、内存管理规则内存类型处理支持多种内存类型HBM, TS, HostSVM使用GetRtsMemoryType获取正确的内存类型TS内存根据大小自动选择最优的TS内存类型内存对齐要求所有内存分配都要满足对齐要求通常32字节或64字节对齐host_input_size需要32字节对齐args table需要按对齐大小分配确保访问效率零拷贝场景处理对于可零拷贝的输入输出使用零拷贝减少数据搬运不可零拷贝的场景需要显式拷贝通过ATTR_IS_ZERO_COPY_BLOCK标识是否支持零拷贝六、编译期约束规则图编译阶段禁止改图图编译模块内存复用处理阶段禁止改图多种复用算法会多线程并发处理改图会导致异常ArgsFormat验证ArgsFormat需要在编译期生成包含完整的tensor描述信息运行时严格按照ArgsFormat描述进行args组装ArgsFormat的任何变化都需要经过充分验证七、调试和可维护性规则关键日志定位功能边界需要有关键日志用于定界问题调用adump接口等关键位置打日志日志内容简洁明了包含必要的上下文信息DFX信息统计维护详细的执行阶段时间统计记录地址刷新的次数和耗时支持性能分析和问题定位八、兼容性和稳定性规则老版本兼容虚拟内存使用场景(rtReserveMemAddress)需要做兼容性设计老版本的DRV不支持该接口要确保业务流程正常无ERROR日志流和资源管理资源释放时先流同步再释放内存最后再销毁device确保资源的正确生命周期管理九、特殊场景处理多流和流拆分物理流承载的task数量有限需要按阈值拆分流拆分后需要更新流激活关系HCCL算子特殊处理HCCL算子有特殊的连续内存要求纯静态图中HCOM算子的虚拟地址和物理地址都不支持刷新无featureBaseRefreshableHCCL算子物理地址不支持刷新十、并发和安全规则线程安全涉及资源处理时需要考虑资源规格和限制shared resource需要做好保护ScalableAllocator不支持多线程并发无锁设计禁止被多线程调用溢出检测和异常处理所有数值计算都要检查溢出使用AddOverflow, MulOverflow等安全函数防止整数溢出导致的安全问题【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2598851.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!