当前位置: 首页 > article >正文

CANN/ops-nn动态量化RMS归一化融合算子

aclnnAddRmsNormDynamicQuantV2【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn 查看源码产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品×Atlas 推理系列产品×Atlas 训练系列产品×功能说明接口功能RmsNorm算子是大模型常用的归一化操作相比LayerNorm算子其去掉了减去均值的部分。DynamicQuant算子则是为输入张量进行对称动态量化的算子。AddRmsNormDynamicQuant算子将RmsNorm前的Add算子和RmsNorm归一化输出给到的1个或2个DynamicQuant算子融合起来减少搬入搬出操作。aclnnAddRmsNormDynamicQuantV2相较于aclnnAddRmsNormDynamicQuant在RmsNorm计算过程中增加了偏置项betaOptional参数即计算公式中的beta以及新增输出配置项outputMaskOptional参数用于配置是否输出对应位置的量化结果。计算公式$$ xx_{1}x_{2} $$$$ y \operatorname{RmsNorm}(x)\frac{x}{\operatorname{Rms}(\mathbf{x})}\cdot gammabeta, \quad \text { where } \operatorname{Rms}(\mathbf{x})\sqrt{\frac{1}{n} \sum_{i1}^n x_i^2epsilon} $$$$ input1 \begin{cases} y\cdot smoothScale1Optional \ \ smoothScale1Optional \ y !\ smoothScale1Optional \end{cases} $$$$ input2 \begin{cases} y\cdot smoothScale2Optional \ \ smoothScale2Optional \ y !\ smoothScale2Optional \end{cases} $$$$ scale1Out\begin{cases} row_max(abs(input1))/127 (outputMask[0]True\ ||\ !outputMask) y1Out为INT8 \ row_max(abs(input1))/7 (outputMask[0]True\ ||\ !outputMask) y1Out为INT4 \ 无效输出 outputMask[0]False \end{cases} $$$$ y1Out\begin{cases} round(input1/scale1Out) outputMask[0]True\ ||\ !outputMask \ 无效输出 outputMask[0]False \end{cases} $$$$ scale2Out\begin{cases} row_max(abs(input2))/127 (outputMask[1]True\ ||\ (!outputMask\ \ smoothScale1Optional\ \ smoothScale2Optional)) y2Out为INT8 \ row_max(abs(input2))/7 (outputMask[1]True\ ||\ (!outputMask\ \ smoothScale1Optional\ \ smoothScale2Optional)) y2Out为INT4 \ 无效输出 outputMask[1]False\ ||\ (!outputMask\ \ (!smoothScale1Optional\ ||\ !smoothScale2Optional)) \end{cases} $$$$ y2Out\begin{cases} round(input2/scale2Out) outputMask[1]True\ ||\ (!outputMask\ \ smoothScale1Optional\ \ smoothScale2Optional)\ 无效输出 outputMask[1]False\ ||\ (!outputMask\ \ (!smoothScale1Optional\ ||\ !smoothScale2Optional)) \end{cases} $$公式中的row_max代表每行求最大值。函数原型每个算子分为两段式接口必须先调用aclnnAddRmsNormDynamicQuantV2GetWorkspaceSize接口获取入参并根据计算流程所需workspace大小再调用aclnnAddRmsNormDynamicQuantV2接口执行计算。aclnnStatus aclnnAddRmsNormDynamicQuantV2GetWorkspaceSize( const aclTensor *x1, const aclTensor *x2, const aclTensor *gamma, const aclTensor *smoothScale1Optional, const aclTensor *smoothScale2Optional, const aclTensor *betaOptional, double epsilon, const aclBoolArray *outputMaskOptional, aclTensor *y1Out, aclTensor *y2Out, aclTensor *xOut, aclTensor *scale1Out, aclTensor *scale2Out, uint64_t *workspaceSize, aclOpExecutor **executor)aclnnStatus aclnnAddRmsNormDynamicQuantV2( void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)aclnnAddRmsNormDynamicQuantV2GetWorkspaceSize参数说明参数名输入/输出描述使用说明数据类型数据格式维度(shape)非连续Tensorx1aclTensor*输入表示标准化过程中的源数据张量。对应公式中的x1。支持空Tensor。FLOAT16、BFLOAT16ND2-8√x2aclTensor*输入表示标准化过程中的源数据张量。对应公式中的x2。支持空Tensor。shape和数据类型需要与x1保持一致。FLOAT16、BFLOAT16ND2-8√gammaaclTensor*输入表示标准化过程中的权重张量。对应公式中的gamma。支持空Tensor。数据类型需要与x1保持一致。shape需要与x1最后一维一致。FLOAT16、BFLOAT16ND1√smoothScale1OptionalaclTensor*输入表示量化过程中得到y1Out使用的smoothScale张量。对应公式中的smoothScale1Optional。支持空Tensor。可选参数支持传入空指针。shape和数据类型需要与gamma保持一致。FLOAT16、BFLOAT16ND1√smoothScale2OptionalaclTensor*输入表示量化过程中得到y2Out使用的smoothScale张量。对应公式中的smoothScale2Optional。支持空Tensor。可选参数支持传入空指针。shape和数据类型需要与gamma保持一致。FLOAT16、BFLOAT16ND1√betaOptionalaclTensor*输入表示标准化过程中的偏置项。对应公式中的beta。支持空Tensor。可选参数支持传入空指针。shape和数据类型需要与gamma保持一致。FLOAT16、BFLOAT16ND1√epsilondouble输入表示用于防止除0错误对应公式中的epsilon。建议传入较小正数如1e-6。----outputMaskOptionalaclBoolArray*输入表示输出的掩码对应公式中的outputMask。支持传空指针或长度为2的数组。----y1OutaclTensor*输出表示量化输出Tensor对应公式中的y1Out。支持空Tensor。shape需要与输入x1保持一致。INT4、INT8、HIFLOAT8、FLOAT8_E5M2、FLOAT8_E4M3FNND2-8√y2OutaclTensor*输出表示量化输出Tensor对应公式中的y2Out。支持空Tensor。如果y2Out为有效输出时shape和数据类型需要与y1Out保持一致如果y2Out为无效输出时shape为[1]。INT4、INT8、HIFLOAT8、FLOAT8_E5M2、FLOAT8_E4M3FNND2-8√xOutaclTensor*输出表示x1和x2的和对应公式中的x。支持空Tensor。shape和数据类型需要与输入x1/x2一致。FLOAT16、BFLOAT16ND2-8√scale1OutaclTensor*输出表示第一路量化的输出对应公式中的scale1Out。支持空Tensor。shape需要与输入x1除了最后一维后的shape一致或者与x1除了最后一维的乘积一致。FLOAT32ND1-8√scale2OutaclTensor*输出表示第二路量化的输出对应公式中的scale2Out。支持空Tensor。当smoothScale2Optional不存在时此输出无意义。shape需要与scale1Out一致。FLOAT32ND1-8√workspaceSizeuint64_t*输出返回需要在Device侧申请的workspace大小。-----executoraclOpExecutor**输出返回op执行器包含了算子计算流程。-----返回值aclnnStatus返回状态码具体参见aclnn返回码。第一段接口完成入参校验出现以下场景时报错返回码错误码描述ACLNN_ERR_PARAM_NULLPTR161001如果传入参数是必选输入输出或者必选属性且是空指针则返回161001。ACLNN_ERR_PARAM_INVALID161002输入或输出的数据类型不在支持的范围之内。outputMaskOptional为空指针时输入smoothScale2Optional而没有输入smoothScale1Optional。aclnnAddRmsNormDynamicQuantV2参数说明参数名输入/输出描述workspace输入在Device侧申请的workspace内存地址。workspaceSize输入在Device侧申请的workspace大小由第一段接口aclnnAddRmsNormDynamicQuantV2GetWorkspaceSize获取。executor输入op执行器包含了算子计算流程。stream输入指定执行任务的Stream。返回值aclnnStatus返回状态码。具体参见aclnn返回码约束说明数据格式说明所有输入输出tensor的数据格式推荐使用ND格式其他数据格式会由框架默认转换成ND格式进行处理。当outputMaskOptional不为空时参数smoothScale1Optional有值时则outputMaskOptional[0]必须为True。参数smoothScale2Optional有值时则outputMaskOptional[1]必须为True。当outputMaskOptional不为空时outputMaskOptional[0]与outputMaskOptional[1]不能同时为False。当outputMaskOptional为空时参数smoothScale2Optional有值时参数smoothScale1Optional也必须有值。各产品型号支持数据类型说明Atlas A3 训练系列产品/Atlas A3 推理系列产品 、 Atlas A2 训练系列产品/Atlas A2 推理系列产品 参数y1Out和y2Out数据类型仅支持int4和int8。Ascend 950PR/Ascend 950DT 暂不支持可选属性output_mask的配置。参数y1Out和y2Out数据类型不支持int4。确定性计算aclnnAddRmsNormDynamicQuantV2默认确定性实现。调用示例示例代码如下仅供参考具体编译和执行过程请参考编译与运行样例。#include iostream #include vector #include acl/acl.h #include aclnnop/aclnn_add_rms_norm_dynamic_quant_v2.h #define CHECK_RET(cond, return_expr) \ do { \ if (!(cond)) { \ return_expr; \ } \ } while (0) #define LOG_PRINT(message, ...) \ do { \ printf(message, ##__VA_ARGS__); \ } while (0) int64_t GetShapeSize(const std::vectorint64_t shape) { int64_t shape_size 1; for (auto i : shape) { shape_size * i; } return shape_size; } int Init(int32_t deviceId, aclrtStream* stream) { // 固定写法资源初始化 auto ret aclInit(nullptr); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclInit failed. ERROR: %d\n, ret); return ret); ret aclrtSetDevice(deviceId); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclrtSetDevice failed. ERROR: %d\n, ret); return ret); ret aclrtCreateStream(stream); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclrtCreateStream failed. ERROR: %d\n, ret); return ret); return 0; } template typename T int CreateAclTensor( const std::vectorT hostData, const std::vectorint64_t shape, void** deviceAddr, aclDataType dataType, aclTensor** tensor) { auto size GetShapeSize(shape) * sizeof(T); // 调用aclrtMalloc申请device侧内存 auto ret aclrtMalloc(deviceAddr, size, ACL_MEM_MALLOC_HUGE_FIRST); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclrtMalloc failed. ERROR: %d\n, ret); return ret); // 调用aclrtMemcpy将host侧数据拷贝到device侧内存上 ret aclrtMemcpy(*deviceAddr, size, hostData.data(), size, ACL_MEMCPY_HOST_TO_DEVICE); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclrtMemcpy failed. ERROR: %d\n, ret); return ret); // 计算连续tensor的strides std::vectorint64_t strides(shape.size(), 1); for (int64_t i shape.size() - 2; i 0; i--) { strides[i] shape[i 1] * strides[i 1]; } // 调用aclCreateTensor接口创建aclTensor *tensor aclCreateTensor( shape.data(), shape.size(), dataType, strides.data(), 0, aclFormat::ACL_FORMAT_ND, shape.data(), shape.size(), *deviceAddr); return 0; } int main() { // 1. 固定写法device/stream初始化参考acl API手册 // 根据自己的实际device填写deviceId int32_t deviceId 0; aclrtStream stream; auto ret Init(deviceId, stream); // check根据自己的需要处理 CHECK_RET(ret 0, LOG_PRINT(Init acl failed. ERROR: %d\n, ret); return ret); // 2. 构造输入与输出需要根据API的接口自定义构造 std::vectorint64_t xShape {2, 8}; std::vectorint64_t gammaShape {8}; std::vectorint64_t betaShape {8}; std::vectorint64_t reduceShape {2, 1}; void* x1DeviceAddr nullptr; void* x2DeviceAddr nullptr; void* gammaDeviceAddr nullptr; void* betaDeviceAddr nullptr; void* smooth1DeviceAddr nullptr; void* smooth2DeviceAddr nullptr; void* y1DeviceAddr nullptr; void* y2DeviceAddr nullptr; void* xDeviceAddr nullptr; void* scale1DeviceAddr nullptr; void* scale2DeviceAddr nullptr; aclTensor* x1 nullptr; aclTensor* x2 nullptr; aclTensor* gamma nullptr; aclTensor* beta nullptr; aclTensor* smooth1 nullptr; aclTensor* smooth2 nullptr; aclTensor* y1 nullptr; aclTensor* y2 nullptr; aclTensor* x nullptr; aclTensor* scale1 nullptr; aclTensor* scale2 nullptr; int64_t xShapeSize GetShapeSize(xShape); int64_t gammaShapeSize GetShapeSize(gammaShape); int64_t betaShapeSize GetShapeSize(betaShape); int64_t reduceShapeSize GetShapeSize(reduceShape); std::vectorshort x1HostData(xShapeSize, 0x3800); std::vectorshort x2HostData(xShapeSize, 0x3800); std::vectorshort gammaHostData(gammaShapeSize, 0x3e00); std::vectorshort betaHostData(betaShapeSize, 0x3e00); std::vectorshort smooth1HostData(gammaShapeSize, 0x3e00); std::vectorshort smooth2HostData(gammaShapeSize, 0x3e00); std::vectorshort y1HostData(xShapeSize, 0); std::vectorshort y2HostData(xShapeSize, 0); std::vectorshort xHostData(xShapeSize, 0); std::vectorshort scale1HostData(reduceShapeSize, 0); std::vectorshort scale2HostData(reduceShapeSize, 0); float epsilon 1e-6; // 创建x1 aclTensor ret CreateAclTensor(x1HostData, xShape, x1DeviceAddr, aclDataType::ACL_FLOAT16, x1); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建x2 aclTensor ret CreateAclTensor(x2HostData, xShape, x2DeviceAddr, aclDataType::ACL_FLOAT16, x2); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建gamma aclTensor ret CreateAclTensor(gammaHostData, gammaShape, gammaDeviceAddr, aclDataType::ACL_FLOAT16, gamma); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建beta aclTensor ret CreateAclTensor(betaHostData, betaShape, betaDeviceAddr, aclDataType::ACL_FLOAT16, beta); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建 smooth1 aclTensor ret CreateAclTensor(smooth1HostData, gammaShape, smooth1DeviceAddr, aclDataType::ACL_FLOAT16, smooth1); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建 smooth2 aclTensor ret CreateAclTensor(smooth2HostData, gammaShape, smooth2DeviceAddr, aclDataType::ACL_FLOAT16, smooth2); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建y1 aclTensor ret CreateAclTensor(y1HostData, xShape, y1DeviceAddr, aclDataType::ACL_INT8, y1); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建y2 aclTensor ret CreateAclTensor(y2HostData, xShape, y2DeviceAddr, aclDataType::ACL_INT8, y2); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建x aclTensor ret CreateAclTensor(xHostData, xShape, xDeviceAddr, aclDataType::ACL_FLOAT16, x); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建outScale1 aclTensor ret CreateAclTensor(scale1HostData, reduceShape, scale1DeviceAddr, aclDataType::ACL_FLOAT, scale1); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建outScale1 aclTensor ret CreateAclTensor(scale2HostData, reduceShape, scale2DeviceAddr, aclDataType::ACL_FLOAT, scale2); CHECK_RET(ret ACL_SUCCESS, return ret); // 3. 调用CANN算子库API需要修改为具体的API uint64_t workspaceSize 0; aclOpExecutor* executor; // 调用aclnnAddRmsNormDynamicQuantV2第一段接口 ret aclnnAddRmsNormDynamicQuantV2GetWorkspaceSize( x1, x2, gamma, smooth1, smooth2, beta, epsilon, nullptr, y1, y2, x, scale1, scale2, workspaceSize, executor); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclnnAddRmsNormDynamicQuantV2GetWorkspaceSize failed. ERROR: %d\n, ret); return ret); // 根据第一段接口计算出的workspaceSize申请device内存 void* workspaceAddr nullptr; if (workspaceSize 0) { ret aclrtMalloc(workspaceAddr, workspaceSize, ACL_MEM_MALLOC_HUGE_FIRST); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(allocate workspace failed. ERROR: %d\n, ret); return ret;); } // 调用aclnnAddRmsNormDynamicQuantV2第二段接口 ret aclnnAddRmsNormDynamicQuantV2(workspaceAddr, workspaceSize, executor, stream); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclnnAddRmsNormDynamicQuantV2 failed. ERROR: %d\n, ret); return ret); // 4. 固定写法同步等待任务执行结束 ret aclrtSynchronizeStream(stream); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclrtSynchronizeStream failed. ERROR: %d\n, ret); return ret); // 5. 获取输出的值将device侧内存上的结果拷贝至host侧需要根据具体API的接口定义修改 auto size GetShapeSize(xShape); std::vectorint8_t y1Ret(size, 0); ret aclrtMemcpy( y1Ret.data(), y1Ret.size() * sizeof(y1Ret[0]), y1DeviceAddr, size * sizeof(int8_t), ACL_MEMCPY_DEVICE_TO_HOST); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(copy result from device to host failed. ERROR: %d\n, ret); return ret); for (int64_t i 0; i size; i) { LOG_PRINT(result[%ld] is: %d\n, i, y1Ret[i]); } // 6. 释放aclTensor和aclScalar需要根据具体API的接口定义修改 aclDestroyTensor(x1); aclDestroyTensor(x2); aclDestroyTensor(gamma); aclDestroyTensor(beta); aclDestroyTensor(smooth1); aclDestroyTensor(smooth2); aclDestroyTensor(y1); aclDestroyTensor(y2); aclDestroyTensor(x); aclDestroyTensor(scale1); aclDestroyTensor(scale2); // 7. 释放device资源需要根据具体API的接口定义修改 aclrtFree(x1DeviceAddr); aclrtFree(x2DeviceAddr); aclrtFree(gammaDeviceAddr); aclrtFree(betaDeviceAddr); aclrtFree(smooth1DeviceAddr); aclrtFree(smooth2DeviceAddr); aclrtFree(y1DeviceAddr); aclrtFree(y2DeviceAddr); aclrtFree(xDeviceAddr); aclrtFree(scale1DeviceAddr); aclrtFree(scale2DeviceAddr); if (workspaceSize 0) { aclrtFree(workspaceAddr); } aclrtDestroyStream(stream); aclrtResetDevice(deviceId); aclFinalize(); return 0; }【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

CANN/ops-nn动态量化RMS归一化融合算子

aclnnAddRmsNormDynamicQuantV2 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 📄 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√A…...

开源材料计算自动化平台OpenClaw:从高通量筛选到机器学习集成

1. 项目概述:一个材料科学领域的开源协作实验室最近在GitHub上看到一个挺有意思的项目,叫openclaw-materials-lab。光看这个名字,就能嗅到一股浓浓的交叉学科味道——“openclaw”听起来像是个工具或框架名,“materials lab”则直…...

PhySO快速入门指南:5分钟学会使用符号回归发现物理规律

PhySO快速入门指南:5分钟学会使用符号回归发现物理规律 【免费下载链接】PhySO Physical Symbolic Optimization 项目地址: https://gitcode.com/gh_mirrors/ph/PhySO PhySO(Physical Symbolic Optimization)是一款强大的符号回归工具…...

CANN/ops-nn: 原位加法RMS归一化算子

InplaceAddRmsNorm 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系…...

CANN/asc-devkit截断函数API文档

Truncate(ISASI) 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcod…...

CANN/ops-nn组归一化算子

aclnnGroupNorm 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 📄 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列…...

CANN/asc-devkit Trunc截断函数API

Trunc 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann…...

CANN/ops-math Signbit算子文档

aclnnSignbit 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math 📄 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系…...

AArch64外部调试架构与Debug State机制详解

1. AArch64外部调试架构解析在嵌入式系统开发中,调试技术如同外科医生的手术刀,是定位和修复问题的关键工具。AArch64架构的外部调试模式提供了一套完整的硬件级调试方案,允许开发者通过专用接口直接控制处理器执行流程。这种调试方式不依赖于…...

Payum实战案例:构建支持多种支付方式的电商平台完整指南 [特殊字符]

Payum实战案例:构建支持多种支付方式的电商平台完整指南 🚀 【免费下载链接】Payum PHP Payment processing library. It offers everything you need to work with payments: Credit card & offsite purchasing, subscriptions, payouts etc. 项目…...

CANN/asc-devkit ReduceProd API文档

ReduceProd 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com…...

CANN/ops-nn三维平均池化反向传播算子

AvgPool3DGrad 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产…...

CANN/ops-nn 去量化SwiGLU量化算子

DequantSwigluQuant 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系…...

reverse-shell工作原理深度解析:智能检测与多语言payload实现

reverse-shell工作原理深度解析:智能检测与多语言payload实现 【免费下载链接】reverse-shell Reverse Shell as a Service 项目地址: https://gitcode.com/gh_mirrors/re/reverse-shell reverse-shell作为一种强大的网络安全工具,其核心功能是让…...

AI研发团队“隐性崩溃”前的9个信号:SITS2026追踪18个月的142起项目衰变案例全复盘

更多请点击: https://intelliparadigm.com 第一章:AI研发团队“隐性崩溃”的本质定义与SITS2026研究框架 什么是“隐性崩溃”? AI研发团队的“隐性崩溃”并非指系统宕机或项目终止,而是指团队在表观正常运转下,持续丧…...

Yeti自定义分析插件开发:实战创建恶意软件行为分析模块

Yeti自定义分析插件开发:实战创建恶意软件行为分析模块 【免费下载链接】yeti Your Everyday Threat Intelligence 项目地址: https://gitcode.com/gh_mirrors/ye/yeti 在网络安全威胁日益复杂的今天,快速分析恶意软件行为已成为安全团队的核心能…...

Scarpet脚本语言深度解析:在Fabric Carpet中编写高级自动化程序的完整指南

Scarpet脚本语言深度解析:在Fabric Carpet中编写高级自动化程序的完整指南 【免费下载链接】fabric-carpet Fabric Carpet 项目地址: https://gitcode.com/gh_mirrors/fa/fabric-carpet Scarpet脚本语言是Fabric Carpet模组中的强大编程工具,专门…...

动态紧凑模型在电子热设计中的高效应用

1. 动态紧凑模型在电子热设计中的核心价值在电子设备日益小型化、高功率化的今天,热管理已成为决定产品可靠性的关键因素。传统热仿真方法面临两大痛点:一是计算资源消耗大,特别是处理复杂封装结构时;二是难以准确预测半导体器件的…...

【信息科学与工程学】【通信工程】第二篇 网络的主要算法03 主要函数(1)L1物理层函数<3>

L1物理层函数全集:数字调制与解调函数 2.1 基本调制函数 (200+函数) 2.1.1 幅度键控(ASK)函数族 (30+函数) 二进制ASK(2-ASK/BASK) 函数名称 数学表达式/算法 调制参数 信号波形 应用场景 ask_modulate_binary() s(t)={Acos(2πfc​t)0​bit=1bit=0​ 幅度A, 载频f…...

【信息科学与工程学】【通信工程】第二篇 网络的主要算法10 容器网络

容器与虚拟机对比特征表 特征维度 容器特征函数 虚拟机特征函数 技术实现差异 性能影响 适用场景 1. 资源隔离​ container_isolation(namespace, cgroup) 函数说明:基于Linux命名空间和cgroup的资源隔离 输入:namespace_type, cgroup_config 输出:isolation_level(0…...

CANN/asc-devkit向量减法ReLU函数

asc_sub_relu 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.c…...

CANN/asc-devkit向量最小值函数

asc_min 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/ca…...

Paris注解处理器深度解析:从@Style到@StyleableChild的完整实现原理

Paris注解处理器深度解析:从Style到StyleableChild的完整实现原理 【免费下载链接】paris Define and apply styles to Android views programmatically 项目地址: https://gitcode.com/gh_mirrors/pa/paris Paris是一款专为Android开发者设计的样式注解处理…...

【信息科学与工程学】【控制科学】第三篇 管理系统控制知识

管理系统控制知识 表K.144501 管理系统控制概述 项目 内容 定理/规律/数学方程式/集合特征/几何特征/拓扑特征/代数特征​ 1. 管理控制定义:控制系统S = (A, B, C, D),其中A是控制主体集合,B是被控对象集合,C是控制规则集合,D是信息流集合 2. 控制层级定理:高层战略控…...

基于Raspberry Pi Pico的DIY宏键盘:从矩阵扫描到KMK固件实战

1. 项目概述:ClawDeck,一个为游戏玩家打造的桌面控制中心最近在逛一些开发者社区和硬件DIY论坛时,发现一个叫“ClawDeck”的项目挺有意思。项目作者是“gaminghousenursingaide761”,这个名字看起来像是一个个人开发者的ID。ClawD…...

【信息科学与工程学】【物理/化学科学和工程技术】知识体系018 第十八篇 界面科学02 界面化学特征 (1)

表3 界面化学特征 完整知识地图框架 第一部分:3.1 界面结构与缺陷 3.1.1 界面原子构型 (50个) 3.1.1.1 共格界面 3.1.1.2 半共格界面 3.1.1.3 非共格界面 3.1.1.4 重构界面 3.1.1.5 驰豫界面 3.1.1.6 晶格失配 3.1.1.7 临界厚度 3.1.1.8 失配位错 3.1.1.9 失配位错…...

【信息科学与工程学】【物理/化学科学和工程技术】知识体系018 第十八篇 界面科学01 界面物理

界面科学知识体系分级分类列表 概述 界面科学是研究两相之间界面(表面)现象、性质、过程和规律的交叉学科。本列表系统整理了界面科学领域的核心概念、理论、技术和应用,涵盖从基础理论到前沿应用的完整知识体系。 界面科学知识体系分类表格...

NPYViewer:5分钟上手的数据可视化神器,告别NumPy数组查看烦恼

NPYViewer:5分钟上手的数据可视化神器,告别NumPy数组查看烦恼 【免费下载链接】NPYViewer Load and view .npy files containing 2D and 1D NumPy arrays. 项目地址: https://gitcode.com/gh_mirrors/np/NPYViewer 还在为NumPy二进制文件头疼吗&a…...

2026年AI大模型接口中转站排行榜新鲜出炉!五大平台硬核数据对比,为开发者提供权威选型指南

发布机构:中国产业信息研究院 TechInsight AI评测实验室 发布日期:2026年3月28日 数据来源:72小时连续压测、万级QPS仿真、10万 真实请求样本、服务商后台脱敏数据 2026年,AI工业化实现全面落地,全球AI大模型接口中…...

【审计专栏-监督监管领域】【信息科学与工程学】【社会科学】第十篇 社会底层核心规则(核心权力、核心利益、核心资源绑定、私下运作、关键价值交换、上下博弈)04

模型046:企业复杂利益链与多方利益博弈模型 1. 模型概述 项目 内容 模型名称​ 企业复杂利益链与多方利益博弈模型 核心场景​ 一家大型建筑企业“宏建集团”中标某市的地铁延长线建设项目。项目涉及总包方(宏建)、多个分包商(土建、机电、装修等)、材料供应商、监理…...