QCon 上海站 2021 见闻

2,670 阅读16分钟

前言

本周有幸参了 QCon 2021 上海站的全程(2021/10/21 - 2021/10/23),我主要去听了 AIOps, 性能优化, 未来数字世界, 移动新趋势, 人工智能新趋势和互联网企业的立体安全防御体系这几个主题的演讲。总的来看,微服务和 AI 是非常火热的主题,大前端的存在感较低(手动狗头),作为一名 iOS 开发出身的端侧算法工程基础设施开发者以及一枚野生安全仔还是感到一些危机感的。

以前写的文章偏向技术底层,写起来比较得心应手,今天突然写这种偏记叙文性质的文章感觉有点懵逼。下面我将就这次参会经历做一个总结,希望能帮助到大家。

行程

我和同事在 10 月 20 日晚上到达上海,随后地铁加步行入住了 QCon 举办的酒店上海宝华万豪酒店,酒店的档次很高,非常豪华:

酒店正门.jpg 酒店电梯厅.jpg

随后便是 21 号早上的签到和主题演讲,第一天上午的会场是 4 个宴会厅合成的超大宴会厅,有一种发布会现场的沉浸感(我其实没去过发布会现场,手动狗头):

签到处.jpg IMG_0456.JPG

从 21 号下午开始,一直到 23 号傍晚,QCon 采用的都是多个分会场的组织形式,我对各种主题演讲按照自己兴趣点和工作相关性做了排序,几乎一场不落的在多个分会场之间反复横跳,有关会议内容的总结会在本文的下一个章节列出

工作日参会还是比较嗨皮的,会议每天晚上大约都是在 6 点前结束,因此我有大把的时间去找溜达和找上海的小伙伴聚餐。在我们研究生期间有一个“葫芦兄弟”组织,包含了我在内的 7 人,大家技术方向各异,经常一起进行夜宵等技术活动,自从工作以后大家分散在北京、杭州和上海,有了家室以后很难再像学生时代那样齐聚一堂,这次恰好有机会和在上海的小伙伴吃了两顿饭,一顿在傍晚,参加人员非常齐全;另一顿则是跨越了凌晨的夜宵,参加者除了我仅包含两位“在沪单身”的同学(手动狗头):

eat.jpg

相比杭州,上海的夜生活更加丰富,晚上 10 点以后地铁上还是挤满了人:

IMG_0555.JPG

外滩的夜景很美,在外滩对面甚至还有唱露天 KTV 和跳广场舞的大爷大妈:

外滩.jpg

总体而言这次参会非常愉悦,既学到了知识,又看到了美景,还和许久未见的朋友好好聚了两波。

会议总结

总体而言,和自己工作的专业方向完全匹配的专题较少,因此这里的大部分总结可能不会那么系统,更多的是一些走马观花式的散点,希望能对大家有所帮助。

Toward Software Performance Evaluation at Scale: A Journey

这是大会第一天上午的第一场主题演讲,由来自阿里的 Principal Engineer - Kingsum Chow 带来的大规模软件性能评估的主题演讲,主要介绍了对于软硬件升级和配置变更带来的性能改变的评估方法,这里介绍了一种被称为 RUE 的性能量化指标,RUE = Resource Usage / Work Done,简单来说这个比值越低则说明完成有限的任务消耗的资源更少,即性能更高。

到这里似乎这个主题演讲主要和运维相关,和客户端同学关系不大,但 Kingsum Chow 接下来通过一个实例引出的 Simpson’s Paradox 能给所有人以启发:

A trend appears in several different groups of data but disappears or reverses when these groups are combined.

简单来说,即使在分组评估时每一组的指标都是下降的,在将分组合并后计算后可能会得到整体指标上升的相反结论,Kingsum 在这里以一个包含 3 个分组的性能优化实例为例,从下图我们可以看到 3 个分组的性能均下降,但整体来看性能却是略有提升:

image.png

可以看到 App Group 1-3 合并计算的 Speedup 大于 1,即整体性能略有提升,但不论是哪一组的 Speedup 都小于 1,也就是说所有分组的性能都下降了,这是非常反直觉的均值陷阱。随后 Kingsum 使用向量法对这一悖论进行了简单证明:

image.png

这里的蓝色向量代表优化前,绿色向量代表优化后,横轴可以理解为负载,而纵轴是资源使用情况,因此斜率越小代表随着负载提升资源利用越少,即性能越好,这里可以明显看出 3 组都是优化后的斜率偏高,即性能变差,但如果我们将所有绿色、蓝色的向量分别进行相加得到一个向量则会发现绿色向量出现在了蓝色向量下方,即出现了整体性能提升的错觉,这里可能是由于包含动画没有在最终公开的 PPT 中展现出来,在这里我贴一张现场拍摄的图片供大家参考:

image.png

这一悖论告诉我们在设计 AB 实验或是其他数据评估指标时,必须深刻理解评估指标的含义,如果仅从表面数据去推断很容易得到完全相反的结论。

Mission Critical AI 的商业化之路——自动驾驶样本

这一场主题演讲由 驭势科技 /联合创始人、董事长、CEO - 吴甘沙 带来,主要介绍了自动驾驶的商用之路。由于本场 PPT 未对外公开,加上我是一个圈外人,这里仅对从该演讲中学到的一些点做一下总结:

  1. 这一场演讲非常精彩,演讲人通过抑扬顿挫的语调突出重点,PPT 整体结构丝丝入扣,中间几乎不会让人产生无聊或者断层的感觉,这些演讲技巧是值得大家学习的;
  2. 美国兰德公司(RAND Corporation)预计,只有当续航里程数达到 110 亿英里后,他们才能够凭借可靠的数据给出安全性方面的论断。这成为了自动驾驶商用落地的一个很大门槛,但特斯拉通过影子模式,借助卖出的几十万台车在人工驾驶的同时运行 L4 算法,从而快速收集了原先需要数百年才能达到的 110 亿英里驾驶数据,这种群体分治的思想同时也出现在 reCAPTCHA 等算法中;
  3. 可靠性是在已知范围内的安全,鲁棒性要求对未知的边界也满足安全性;
  4. 利用 Metaverse 或许可以为自动驾驶提供样本和训练场地。

一云多芯架构下 Java 多平台性能优化

这一场演讲由 阿里巴巴 /阿里云智能 JVM 架构师 - 王卓 带来,主要介绍了 Java 在 aarch64 和 RISC-V 上的底层性能优化手段,这一场没有对外公开 PPT,我的总结如下:

  • 这里以一些并行计算的场景为例介绍了通过 SIMD 进行向量化计算带来提升的手段,针对 Java 方面对使用 SIMD 指令不够自由这一缺点,引出了 Alibaba Dragonwell 开源的 Java 向量优化特性 Vector API,随后以欧氏距离、余弦相似度计算等简单实例演示了 Vector API 的使用方式。

SenseMARS 火星混合现实平台及应用开发的实现与挑战

这一场演讲由 商汤科技 /移动智能事业群技术总监 - 符修源 带来,主要介绍了通过三维重建、空间识别和定位等技术实现的沉浸式的虚实融合视觉效果和互动体验,落地了室内室外导航、互动游戏、AR 巴士等场景,基于此落地了SenseMARS 火星混合现实平台,这里提到的几个重点包括:

  1. 通过头戴全景相机 + 手机 App 辅助信息收集集合的方案进行数据采集,用户和商家可以按照走 S 型路径、路径闭环等规则独立完成采集;
  2. 提供了跨平台支持,甚至可以在 H5 和小程序中直接运行,这里提到针对 js 技术栈下 SLAM 跑不起来的问题,使用 WebAssembly 移植已有算法将性能提升了 20 倍;
  3. 针对视觉定位、路径规划等都和具体场景有关,很多问题需要在现场才能复现的问题,通过 ARCore 提供的 Recording and Playback API 录制数据轨道,添加业务相关数据以支持回放,方便远程分析和解决问题;
  4. 通过静默定位保持本地 SLAM 坐标和云端坐标对其修正 SLAM 的累积误差;通过蓝牙、GPS、地磁等辅助信号解决相似场景的问题。

迈向元宇宙时代的三维建模技术

这一场演讲由 阿里巴巴 /淘系技术 3D 人工智能负责人 - 友闻 带来,主要介绍了基于 NeRF 神经渲染技术实现的高性能三维重建和渲染解决方案 Object Drawer,它的工作原理是以图像和基于图像还原的相机位姿为输入训练一个神经网络,与普通神经网络从输入中提取信息不同,NeRF 神经网络的空间信息实际上存储在神经网络中,建模的过程就是训练的过程,渲染的过程就是推理的过程。

image.png

Object Drawer 相比于传统的 NeRF 网络解决了训练时间长、模型体积大、推理速度慢(帧率低)、视角鲁棒性差、高频纹理失真等问题,实现了 1080p、4h 内完成训练、手机端 30 FPS、纹理还原程度高、模型体积仅 20M 等多个指标,支持了鞋、包、手办、积木、瓷壶、帽子、沙发、茶几、柜子等多个类目,允许在一般场景、无专业设备的情况下完成拍摄,已经逐步在淘宝 App 中应用。

除去这种基于神经网络的三维重建技术,Apple 在今年也伴随 macOS Monterey 发布了基于 Photogrammetry 的传统算法的三维重建方案,通过输入包含相机参数的图片和一系列参数,算法将会产出包含贴图的 object,通过 Apple 提供的 Reality 系列工具可以将训练好的 object 可以轻易添加到 ARKit 场景中。

三维重建技术为我们将现实世界的物体映射到虚拟世界提供了可能,相信这些技术的普及将为 AR / VR、游戏等行业带来新的可能。

携程 SDL 精细化建设之路

这一场演讲由 携程信息安全部基础安全负责人 - 涂宏伟带来,主要介绍了业务威胁建模、大规模 IAST 技术的应用、基于 SAST/SCA + GitLab Pipeline 的安全左移方案和漏洞管理策略。由于我本身也在参与一些客户端程序分析相关的工作,对 IAST 和安全切面的关注度较高,因此下面的总结将更偏向于这部分内容。

目前来看,许多企业的服务端和客户端均有部署类似被动式的检测技术的实践,其中服务端多是以 IAST 被动式插桩为主,它能够检测和拦截 SSRF 和常见的注入类漏洞,下图是携程的 IAST 方案:

image.png

通过 IAST 切面配合动态下发的安全规则,当服务端被 SSRF 和注入攻击时 IAST 能够基于规则检测到异常,并进行告警和拦截,能够持续、动态的守护应用安全。但 IAST 也不是万能的,例如针对逻辑漏洞造成的“合法”输入就可能无能为力了。

除去服务端 IAST 以外,蚂蚁在 2020 BCS 上介绍了安全切面防御体系,它的核心思路是建立一套和业务相交织且平行的安全层,让安全能够深入业务逻辑,实现细致的观测和攻防。从这个层面来看整个思路与服务端的 IAST 不谋而合(下图来自蚂蚁有关安全切面对外公开的文章 developer.aliyun.com/article/774…

image.png

由于客户端的发布流程较长,特别是 iOS 端需要经过 App Store 审核,对于一般客户可能需要 T+1 才能完成部署,这就注定了客户端对 0day 的响应速度不足,一旦出现漏洞利用很容易措手不及,而客户端漏洞的危害往往是很大的,例如通过简单的扫码或是被动跳转就可以偷走你的账号。在过去我们只能借助于 hotpatch 来临时修复,然后增加一个紧急发版,但 hotpatch 并非万能,很多时候难以进行细粒度修复或是根本无法修复,这时候安全切面的价值就体现了出来。基于规则的安全切面实际上提供了一定的 hotpatch 能力,此外它还能基于云端分析发现潜在的问题提前进行感知和拦截,对客户端安全的价值很大,但增加了白帽子被内部已知的风险(手动狗头)。

image.png

基于 CodeQL 的小程序隐私检测和风险治理

这一场演讲由 支付宝技术部高级安全工程师 - 金超前 带来,主要介绍了基于 CodeQL 的静态分析技术在支付宝小程序代码风险检测上的一些应用和落地。CodeQL 是一种基于 AST 的自动化代码分析工具,它通过接入到源码编译流程产生代码数据库,随后可基于类似 SQL 的规则去查询变量定义、函数调用甚至数据流,笔者在今年也在关注 CodeQL 在漏洞挖掘相关的一些利用,例如 o0xmuhe 师傅写的基于 CodeQL 的 XNU 源码级漏洞查找(o0xmuhe.github.io/2021/02/15/…

支付宝同学带来的这场演讲侧重于 CodeQL 在隐私 API 违规使用上的一些检测,其中主要包括首屏弹窗、敏感信息直接透出和重复强制授权等场景,其基本思路是基于污点分析将所有入口函数标记为 source,所有授权函数标记为 sink,通过 CodeQL 提供的控制流查询和辅助的数据流分析从 sink 回溯到 source,例如下面给出了对拒绝授权后又重复弹框的异常逻辑检测:

image.png

通过 CodeQL,一方面可以建立各种程序分析规则以降低业务安全风险,另一方面也可以用于公开源代码库、软件和系统的漏洞挖掘,通过这种标准化的方式能够极大地提高工作效率。

打通数据全链条保护最后一公里:腾讯机密计算应用实践 & 唾手可得的安全计算

这是 QCon 上海站 2021 关于互联网企业的立体安全防御体系的最后两个议题,分别由腾讯 Blade Team 技术负责人张博和蚂蚁集团资深技术专家顾宗敏(相和)给出,主要介绍了机密计算的原理和应用场景。我们知道,数据安全风险主要发生在存储、传输和使用这三个阶段,其中存储和传输已经有比较成熟的技术去保护,而使用阶段往往是直接将数据解密到内存中进行,恶意软件通过劫持控制流或是内存读取的方式能够窃取数据,机密计算主要针对数据使用场景,通过各种硬件提供的特殊单元(例如 TEE, TrustZone, SGX 等)对数据计算的逻辑进行保护。

以 TEE 为例,为了保护用户的数据安全,在将数据提交到服务端计算时,首先由用户生成对称加密密钥对数据加密,然后通过远程证明机制将密钥提交给 TEE,随后 TEE 再收到用户的加密数据,在内部完成解密、运算和再加密从而保证安全。

这里的一个重要问题是 TEE 与常规操作系统有差异,导致软件的适配成本很高,那么如何让软件无感知的跑在可信执行环境中就成为了一个重要课题,随后 LibOS 应运而生,所谓 LibOS,即 Lib(userland) + OS(syscall),即 LibOS 作为 userspace <-> kernel <-> TEE 之间的桥梁,使得应用程序可以不加修改的运行于 TEE 等可信执行环境中。

在最后讲师介绍了蚂蚁集团开源的 TEE OS 方案 Occlum,它基于 Rust 和 Intel SGX SDK 开发,默认使用透明加密文件系统,可以使用基于远程证明的 TLS 网络加密通信协议,具有高性能的多进程方案,支持多个进程可以共享一个 Enclave,目前已经实现了 200+ 主流 syscall,支持了 Redis, Tensorflow 和 Pytorch 等主流软件直接在其上运行。

总结

总的来说,这是一次收获满满的旅行,不仅让我对业内最新的研究方向和成果有了更深入的了解,也见到了很多好朋友。比较可惜的是客户端相关的议题很少,可能客户端真的走到了尽头(手动狗头)。

在文章的最后,再给我们团队打个广告:

欢迎加入阿里巴巴淘系技术部-端智能团队,负责构建行业领先的开源推理引擎 MNN 以及一站式机器学习软件-MNN 工作台,在阿里我们负责核心电商的 AR 平台及新形式的商品导航,同时还有应用规模巨大的端云协同的搜索推荐、用户触达、直播内容理解等创新应用及系统。

  • 招聘岗位:

    • 算法类:CV / CG / 推荐 / 搜索 / 机器学习 / 模型压缩
    • 工程类:iOS / Android / Java 服务端 / C++ / 端上高性能计算
  • 简历投递: yutong.yutongxiu@alibaba-inc.com