我们的研究成果《AdaSpring: Context-adaptive and Runtime-evolutionary Deep Model Compression for Mobile Applications》已发表在Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies(Ubicomp)。
@article{liu2021adaspring, title={AdaSpring: Context-adaptive and runtime-evolutionary deep model compression for mobile applications}, author={Liu, Sicong and Guo, Bin and Ma, Ke and Yu, Zhiwen and Du, Junzhao}, journal={Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies}, volume={5}, number={1}, pages={1--22}, year={2021}, publisher={ACM New York, NY, USA} }
1、动态调整压缩配置困难:大多数DNN压缩方法无法逆向扩展,难以恢复原始架构和权重,并且受限于离线再训练,导致实时调整以满足多维度性能优化目标变得复杂。
2、实时优化难度大:要解决运行时优化,需要快速找到合适的压缩技术,并在不进行再训练的情况下有效调整权重,同时难以平衡多个性能指标(如延迟、存储和能效)之间的冲突。
1、动态适应:为解决DNN压缩难以动态调整的问题,需要开发无需离线再训练的灵活扩展方法,以实时满足精度、延迟、能耗等多维度性能需求。
2、实时压缩:针对运行时优化的复杂性,需研究快速压缩技术搜索与权重调整机制,平衡多项性能指标,提升DNN实际应用中的优化效率。
——系统创新性:AdaSpring是一个设计用于动态优化DNN模型在移动平台上运行性能的框架。系统包含两个创新设计的模块:
1、自进化网络:由一个骨干网络和多个无需重训练的压缩算子变体组成。骨干网的超参数在设计时通过按需生成的DNN框架初始化,以满足目标平台上移动应用的性能需求。
2、运行时自适应压缩:系统能在运行时自动选择最优压缩操作符组合,动态调整骨干网架构,以适应实时变化的性能需求。
在系统运行时,模块能够持续检测部署环境的变化,触发运行时自适应压缩,确保应用在动态环境中保持最佳性能。
——运行流程:
# Initialize the AdaSpring framework AdaSpring: initialize BackboneNet using AdaDeep initialize CompressionOperators from Δ initialize DynamicContextAwarenessBlock # Main execution loop for continuously running apps while app_is_running: # Detect context changes context = DynamicContextAwarenessBlock.detect_changes() # Check if the context triggers reconfiguration if context.requires_evolution(): # Select the optimal compression operators optimal_operators = RuntimeAdaptiveCompressionBlock.select_optimal_operators(Δ, context) # Reconfigure the backbone network using selected operators BackboneNet = self_evolutionary_network.reconfigure(optimal_operators) # Execute the DNN model with the current configuration results = BackboneNet.run_inference() # Evaluate the performance metrics accuracy, latency, energy_efficiency = evaluate_performance(results) # Log or adjust based on performance log_performance(accuracy, latency, energy_efficiency) adjust_importance_coefficients(accuracy, energy_efficiency) # Supporting functions def evaluate_performance(results): # Calculate performance metrics accuracy = measure_accuracy(results) latency = measure_latency(results) energy_efficiency = measure_energy_consumption(results) return accuracy, latency, energy_efficiency def adjust_importance_coefficients(accuracy, energy_efficiency): # Dynamically adjust importance coefficients λ1 and λ2 based on current context λ1 = adjust_λ1(accuracy) λ2 = adjust_λ2(energy_efficiency) return λ1, λ2
AdaSpring在多种动态环境下的应用场景中具有重要价值,尤其适用于需要持续运行并动态调整性能的移动应用。例如,在实时视频处理、连续图像识别、增强现实(AR)、智能传感器数据分析、和移动健康监测等场景中,设备资源和环境条件(如电池电量、网络状况、计算资源)经常发生变化。AdaSpring能够根据这些变化,自动调整DNN模型的精度、延迟和能效,确保应用在不同条件下都能高效运行,提升用户体验、减少功耗并延长设备续航时间,从而在移动设备上提供更为智能和自适应的解决方案。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!