美文网首页
Core ML - App瘦身

Core ML - App瘦身

作者: _蓝星 | 来源:发表于2019-06-14 14:04 被阅读0次

    一、目标效果

    减少应用程序包中Core ML模型使用的存储空间。

    二、概述

    在您的app中绑定机器学习模型是开始使用Core ML的最简单的方法。随着模型的不断进化,它可能会变得更大并占用大量的存储空间。对于基于神经网络的模型,请考虑使用更低精度的权重参数表示来减少它所占用空间。如果您的模型不是能够使用半精度的神经网络,或者你想要更进一步缩小app的大小,请添加能够在用户的设备上下载和编译模型的功能,而不是将模型和您的App绑定在一起。

    三、转化到半精度模型

    Core ML Tools 提供了一个转换方法,可以转换神将网络模型的浮点权重,从全精度到半精度值(减少使用以32 bit表示的数量,用16 bit表示)。这种转换方式可以显著地减少网络的大小,其中大部分来自于网络的连接权重。
    清单1 使用Core ML Tools 将模型转换到更低的精度:

    # Load a model, lower its precision, and then save the smaller model.
    model_spec = coremltools.utils.load_spec('./exampleModel.mlmodel')
    model_fp16_spec = coremltools.utils.convert_neural_network_spec_weights_to_fp16(model_spec)
    coremltools.utils.save_spec(model_fp16_spec, 'exampleModelFP16.mlmodel')
    

    您只能将嵌入神经网络的神经网络或者管道模型转换为半精度。模型中的全精度权重参数必须被转换为半精度。
    使用半精度浮点数不仅仅能够减少浮点数的精确度,还会降低可能值的范围。将次选项部署到用户之前,请确认模型行为没有被削弱。
    将模型转化为半精度要求以下OS版本或更高版本:iOS 11.2,macOS 10.13.2,tvOS 11.2,watchOS 4.2。

    四、转换为较低精度模型

    Core ML Tools 2.0引入了实用工具,可以将模型精度降低到8,4,2,1 bit。这些工具包含可以衡量原始模型和低精度模型之间行为差异的功能。关于更多如何使用这些实用工具的信息可以查阅文档Core ML Tools Neural Network Quantization。较低精度模型需要以下OS版本或更高版本:iOS 12,macOS 10.14,tvOS 12,watchOS 5。

    五、下载并编译模型

    减小应用程序大小的另一个方法是让应用程序将模型下载到用户的设备上并在后台进行编译。比如,如果用户仅使用到您应用支持模型的子集,就没有必要将所有可能用到的模型都绑定到您的应用程序上。相反,可以稍后根据用户的行为下载模型。请查阅Downloading and Compiling a Model on the User's Device

    相关文章

      网友评论

          本文标题:Core ML - App瘦身

          本文链接:https://www.haomeiwen.com/subject/gwqufctx.html