想一想测量实际发生的场景:信号只有一格的超市生鲜区、地下室设备间、车库,或者是两户人家之间的公寓楼梯间。如果您的测量应用需要服务器,它就会在最需要它的时候罢工。因此,第一个架构决策也是最不容妥协的一个:每一次采集、每一次分析以及每一个存储的结果都可在断网时工作。这不是一个功能受限的离线模式——而是其主要模式。根本没有一个可以降级使用的在线模式。
设备端运行究竟能为您带来什么
改变您测量方式的速度
手机上的分析在一秒内就能返回结果。这种对延迟的预算并不是虚荣——它改变了工作流程。敲一下甜瓜,查看读数,再敲一下另一个地方,进行对比。在几分钟内拨动车轮的所有 32 根辐条。当每次读取数据都需要在服务器之间往返一次时,您只能测量一次并寄希望于运气;而当它是即时的时候,您会测量五次,从而确切掌握情况。仪器是您用来反复迭代的工具。
靠架构而非政策实现的隐私保护
在您家中录制的麦克风音频,正是那种不该对外传输的数据。在这里,它确实没有:原始音频在设备上处理,提取的特征在设备上存储。除非您登录并明确点击同步,否则任何数据都不会离开手机——而且该应用完全无需登录即可使用。隐私政策告诉您公司承诺如何处理您的数据;而离线架构则让大多数承诺变得多余。
与产品不相冲突的成本结构
云端推理意味着每次测量都会让开发商付出成本,这最终会导致订阅制、额度限制或广告。设备端推理无需单次使用成本,因此没有对您进行计费的压力。这种利益一致性虽无声却很真实:一款边际成本为零的应用,完全可以负担得起让您随心所欲地测量。
目录保存在手机中;云端只是一个副本
您测量的一切都会归档到本地目录中——物体、使用场景、测量、标签——而本地数据库始终是可信源。使用 Google 登录只增加了一项功能:手动、自主的同步,它会拉取云端副本并推送您的本地数据,以便第二台设备或网页端浏览器能够看到相同的目录。手动是一项特性,而非局限——同步只在您要求时发生,且方向清晰可控,而不是作为在后台运行、偶尔给您带来意外的进程。
对网页端浏览器的推论:基于浏览器的导出查看器也遵循同样的规则。打开一个导出的压缩包,它完全在您的浏览器中进行解析——导入本地文件,绝不上传任何内容。
让大家保持诚实的硬性约束
离线优先还有一个隐性的好处:它杜绝了偷懒的工程设计。你无法通过向原始音频中丢入一个庞大的云端模型来掩盖糟糕的功能设计。一切都必须在一秒钟内运行在手机的 CPU 上,这就迫使分析算法必须轻量、可解释,且符合物理学原理:例如使用共振频率和阻尼比,而不是黑盒嵌入;使用同接收器比值,而不是绝对电平。这些特征恰恰是无需针对每台设备进行校准即可在不同手机型号之间迁移的特征——约束与质量朝着相同的方向推进。(关于该设计规则的更多信息,请参阅工具概述和双手机测量文章。)
离线优先并不意味着什么
这并不意味着排斥云端。同步之所以存在,是因为你花数月建立的目录值得拥有备份和第二屏幕。这也不意味着模型永远不会提升:分类器是在用户选择贡献并附带真实标签的测量数据上进行集中训练的——即数据集飞轮——然后照常送回应用程序中,在设备本地运行。网络的作用是根据你的时间安排来传输知识。而测量过程则是在你手中完成。