当前位置: 首页 > 科技观察

TensorFlow官方发布剪枝优化工具:参数减少80%,精度几乎不变

时间:2023-03-15 18:53:07 科技观察

TensorFlow官方发布剪枝优化工具:参数减少80%,准确率相差无几运行速度提高3倍。最近,模型优化“豪华包”中新增了一个工具,它就是基于Keras的剪枝优化工具。训练AI模型有时需要大量的硬件资源,但并不是每个人都有4个GPU的豪华配置。剪枝优化可以帮助您减小模型的大小并以更低的成本进行推理。什么是权重剪枝?权重剪枝优化就是剔除权重张量中不需要的值,减少神经网络层与层之间的连接数,减少参与计算的参数,从而减少运算次数。这样做的好处是压缩了网络的存储空间,尤其是稀疏张量特别适合压缩。例如,可以处理将MNIST的90%稀疏模型从12MB压缩到2MB。此外,权重修剪与量化兼容,从而产生复合效益。通过训练后量化,剪枝后的模型可以进一步从2MB压缩到只有0.5MB。TensorFlow官方承诺TensorFlowLite未来会增加对稀疏表示和计算的支持,从而扩大运行内存的压缩优势,释放性能提升。优化效果权重剪枝优化可用于不同的任务和不同类型的模型,从用于图像处理的CNN到用于语音处理的RNN。下表显示了其中一些实验结果。以GNMT的德英翻译模型为例,原始模型的BLEU为29.47。指定80%的稀疏度。优化后,张量中的非零参数可以从211M压缩到44M,精度几乎没有损失。用法当前的权重剪枝API构建在Keras之上,因此开发人员可以轻松地将此技术应用于任何现有的Keras训练模型。开发者可以指定最终的目标稀疏度(比如50%),以及执行剪枝的计划(比如在2000步开始剪枝,在4000步停止,每100步执行一次),剪枝结构的可选配置。importtensorflow_model_optimizationastfmotmodel=build_your_model()pruning_schedule=tfmot.sparsity.keras.PolynomialDecay(initial_sparsity=0.0,final_sparsity=0.5,begin_step=2000,end_step=4000)model_for_pruning=tfmot.sparsity.keras.pruning_model,ched_low_magnitude...model_for_pruning.fit△三个不同的张量,左边的没有稀疏度,中间的有多个单0值,右边的有1x2的稀疏块。随着训练的进行,执行修剪过程。在此过程中,它会消除张量中最接近零的权重,直到达到当前的稀疏性目标。每次剪枝程序被调度执行时,都会重新计算当前的稀疏度目标,按照平滑的上升函数逐渐增加稀疏度,直到达到最终的目标稀疏度,从0%开始到结束。用户也可以根据需要调整此斜坡功能。在某些情况下,可以安排训练过程在某个步骤达到一定收敛水平后开始优化,或者在训练步骤总数之前结束剪枝,以便进一步微调系统时达到最终目标稀疏度。△权重张量剪枝动画,黑点代表非零权重,随着训练的进行,稀疏度逐渐增加GitHub地址:https://github.com/tensorflow/model-optimization官方教程:https://www.tensorflow。组织/model_optimization/guide/pruning/pruning_with_keras