2020苹果Core ML框架三大更新:更多层类型、模型加密、基于CloudKit模型部署

2020 年 7 月 20 日 新智元



  新智元报道  

编辑:雅新、舒婷

【新智元导读】今年苹果WWDC全球开发者大会上为我们带来了软硬件的更新。其中,苹果Core ML框架也带来了三项更新:更多的层类型,对模型加密的更多支持,以及在CloudKit上托管模型更新能力。


移动端机器学习不再是2020年热门新事物,将应用程序智能化早已成为行业的标准做法。

 

去年,苹果公司对Core ML进行了重大更新。今年的更新要简单得多:更多的层类型,对模型加密的更多支持,以及在CloudKit上托管模型更新能力。

 

CoreML是一个Apple框架,用于将机器学习模型集成到应用程序中。

              

其优势是,Core ML通过利用CPU,GPU和神经引擎来优化设备上的性能,同时最大程度地减少其内存占用空间和功耗,严格在用户设备上运行模型将消除对网络连接的任何需求,这有助于保持用户数据的私密性和应用程序的响应速度。

 

Core ML 还是一些其他苹果框架和功能的基础。CoreML是视觉处理,自然语言,speech转换音频文本,以及音频识别的核心模型,Core ML 本身构建于低层面的原语之上,比如 Accelerate and BNNS 和 Metal Performance Shaders。

       


更多的层类型,为Core ML带来更多的功能

这些新的层类型是:
                
新的层类型只能在高版本中被使用,这意味着系统必须是iOS 14和macOS 11.0,或者更高的版本。
 
另一个有用的改进是针对InnerProductLayer、BatchedMatMulLayer的8位量化操作
 
在Core ML的早期版本中,用户可以量化权重,但是在加载模型时权重将被反量化为浮点数。利用新的 int8DynamicQuantize 功能,权重在加载时保持为8位整数值,并且实际计算也使用整数进行。
 
使用INT8进行计算的潜力很大,就速度上而言可能比浮点运算快得多。但是研究人员指出,这是否仅对CPU而非GPU有利,因为GPU确实更喜欢浮点。也许即将发布的Neural Engine的更新将支持INT8操作。
 
CPU上的Core ML现在也可以使用16位浮点运算而不是32 位浮点运算(在A11 Bionic及更高版本上)。16位浮点数现在是一流的Swift数据类型。通过CPU本身支持的16位浮点数,Core ML的速度可以提高两倍以上! 

在CloudKit上,可以实现托管模型更新

这项新的Core ML功能可让用户独立于应用程序更新模型


现有应用程序无需发布应用程序更新,而只需下载mlmodel文件的新版本。这不是一个新的想法,一些第三方供应商都为此提供了SDK,自己构建它也不难。


使用Apple解决方案的优点是模型托管在Apple Cloud上。

       


用户的应用程序中可能有多个模型,模型集合可以将多个模型捆绑在一起,更新时应用程序便会立即更新所有模型。用户可以在CloudKit仪表板上创建这些集合。在应用程序中,用户还可以使用MLModelCollection下载和管理模型更新。

         
为了准备要部署的Core ML模型,Xcode中有一个Create Model Archive按钮。这将写入一个.mlarchive文件。用户可以将此模型版本上传到CloudKit仪表板,然后将其放入模型集合中。(mlarchive实际上只是一个包含mlmodelc文件夹内容的zip文件。)
 
另一个不错的功能是用户可以将不同的模型集合部署到不同的用户。比如,iPhone上的摄像头与iPad上的摄像头不同,因此用户可能需要创建模型的两个版本,然后将一个发送给该应用程序的iPhone端,另一个发送给iPad端。
 
用户可以为设备(iPhone / iPad /电视/手表),操作系统和版本,区域代码,语言代码和应用版本创建定位规则。
 
新模型的版本部署不是立即进行的。应用程序需要先在某个时刻检测到新模型可用,并自动下载该模型,将其放置在应用程序的沙箱中。但是用户无法控制何时或如何发生这种情况,Core ML可能会在不使用手机时在后台执行下载。
 
因此,最好将使用内置模型作为后备选项来交付应用程序,比如可以同时处理iPhone和iPad的通用模型。

模型加密,让专有技术不再被盗用

以往,窃取用户的Core ML模型再将其粘贴到其他应用程序中,是一件非常容易的事情。
 
从iOS 14 / macOS 11.0开始, Core ML可以自动加密和解密模型,陌生人便不可以窥视用户的mlmodelc文件夹。不管用户有没有新的CloudKit部署,都可以加密。
 
     
 
Xcode加密编译的模型mlmodelc不是原始的mlmodel文件。这个模型在用户设备上会永久加密。
 
当应用程序实例化模型时,Core ML才会自动对其解密。此解密版本不会在任何位置存储为文件,仅储存在内存中。
 
首先,用户需要一个加密密钥,而用户并不需要管理此密钥。Xcode的Core ML模型查看器中现在有一个「创建加密密钥」按钮。当用户单击此按钮时,Xcode会生成一个与Apple开发人员团队帐户关联的新加密密钥。
              
此过程将创建一个新的.mlmodelkey文件。该密钥存储在Apple的服务器上,但是用户还可以获得在Xcode中加密模型所需的本地副本,无需在应用程序中嵌入此加密密钥。
 
若要加密Core ML模型,用户可以添加--encrypt YourModel.mlmodelkey到模型的编译器标志。或者如果要使用CloudKit部署,需在创建模型档案时需要提供加密密钥。
 
要在应用程序实例化的时候解密模型,Core ML将需要通过网络从Apple的服务器中获取加密密钥,因此显然需要网络连接。Core ML仅在用户第一次使用该模型时需要连接网络。
 
如果网络中断并且尚未下载加密密钥,则应用将无法实例化Core ML模型。因此,用户应该使用新YourModel.load()功能。它可以完成处理程序并提示用户响应加载的错误。
 
这个功能很容易在应用程序中实现,很好的解决了盗用专有技术的问题。
 
此外,Create ML在今年也有了很大的改进, 提供了新的模板和训练功能。
 
用户使用Xcode 12的新版本,可以暂停训练并继续,保存模型检查点,并预览模型的运行状况,用户可以更好地控制训练过程。在CreateML.framework中,还提供了更多针对视觉和自然语言的 API。


参考链接:
https://machinethink.net/blog/new-in-apple-machine-learning-2020/

登录查看更多
1

相关内容

> With CloudKit, you can focus on your client-side app development and let iCloud eliminate the need to write server-side application logic. CloudKit provides you with Authentication, private and public database, structured and asset storage services - all for free with very high limits. Source: CloudKit Storage & Cloud Kit Framework Reference
TensorFlowLite:端侧机器学习框架
专知会员服务
32+阅读 · 2020年8月27日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
PyTorch 1.0 稳定版正式发布!
新智元
3+阅读 · 2018年12月8日
机器学习者必知的 5 种深度学习框架
深度学习世界
7+阅读 · 2018年5月3日
28 款 GitHub 最流行的开源机器学习项目(附地址)
七月在线实验室
4+阅读 · 2017年12月18日
谷歌发布TensorFlowLite,用半监督跨平台快速训练ML模型!
全球人工智能
5+阅读 · 2017年11月15日
LARNN: Linear Attention Recurrent Neural Network
Arxiv
5+阅读 · 2018年8月16日
VIP会员
相关VIP内容
相关资讯
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
PyTorch 1.0 稳定版正式发布!
新智元
3+阅读 · 2018年12月8日
机器学习者必知的 5 种深度学习框架
深度学习世界
7+阅读 · 2018年5月3日
28 款 GitHub 最流行的开源机器学习项目(附地址)
七月在线实验室
4+阅读 · 2017年12月18日
谷歌发布TensorFlowLite,用半监督跨平台快速训练ML模型!
全球人工智能
5+阅读 · 2017年11月15日
Top
微信扫码咨询专知VIP会员