第二层是 DataManager,我们知道企业的应用,特别在意安全性,那么如果我们直接把底层的文件系统暴露给使用者,会导致权限隔离等个方面的隐患。Datamanager 提供了一个数据的逻辑沙箱,使得每个使用者在自己的 DAG 里面只能用一个唯一的名字来访问到自己安全容器内部的数据,这样不仅保证了安全,也避免了使用者直接去处理各种各样的长的数据文件的 URI。 2. 给开发者提供比较好的体验,相信使用大数据系统的朋友都有一个感受,就是在分布式时代,调试变得难了。一方面很多时候日志太过于复杂,不知道错误在哪里,另外一方面经常出现跑了几个小时报一个错前功尽弃的情况。先知平台从产品上做了很多工作,比如说 Schema 推断:
我们可以在运行这个 SQL 之前就在界面上交互式的看到哪里出了错误,以便及时改正,而不需要整个 DAG 图跑了几个小时,运行到这个地方的时候,可能人都去睡觉了报个错,只能第二天再来。另外比如我们还提供了特征重要性评估的功能:
这个功能可以让使用者很快发现自己模型里面的问题,比如某个特征重要性极高,需要考虑自己的模型是不是有看答案(用结果去训练模型,再去评估结果,导致模型线下评估效果非常好,线上无效)的现象。值得一提的是,这个特征重要性评估的算法也是基于 GDBT 框架开发的,GDBT 不仅可以高效的支持各种模型算法开发,也能够快速的支持各种其他的大规模分布式计算逻辑。 3. 支持模型的上线,模型上线有几个技术上的难点,一是线上线下的一致性,而是性能。线上线下一致性为什么难,因为你看到训练过程是那么复杂一个 DAG 图,那么对应的线上多个数据源,也要经过一个组合、变换的过程,那如果每次都去手动开发,这个代价就不得了。 先知的架构支持从线下的 DAG 导出线上服务的核心部分,那么特征工程、模型计算就可以直接获得一个可用的 API,可以极大的节省开发者的代价。另外一个难题就是性能,因为线下批量的训练,可以花很长时间,而线上如果是实时预估,那么就要毫秒级的响应,也要求很高的 QPS。 我们在线上有一个叫 Cannon 的分布式 KV 框架,可以支持到数十 T 分布式内存的模型高性能存储和查询。而模型计算的部分也可以复用 GDBT 的代码,既减少了开发量,又为一致性提供了保证。这里面也有很多有意思的工程优化,比如说如何解决机器数变大、网络条件变差情况下的可用性塌方式下降。今天时间有限就不展开说了,有机会可以再跟大家分享。 小结 非常感谢大家耐心听我们分享了上面我们做的这些微小的工作。第四范式是一家人工智能技术与服务提供商,拥有大批顶尖的数据研究科学家,和追求极致匠人精神的工程师。各路 ACM 冠军选手每天在各个方向上进行深入的产品和工程优化工作,希望能够促进机器学习和 AI 在各行各业的发展,也希望能够给从业者们带来更好用的平台和工具。 当然做出好的机器学习解决方案,最关键的还是要和行业结合,工具和平台系统只是其中的一小部分,所以还希望能够向各位同仁多多学习。现在先知平台公有云版本已经向业务场景成熟的企业客户开放合作,如果有风控、内容推荐、客户经营等场景的朋友,我们也可以一起互相切磋,互相学习。谢谢大家。 Q&A Q1:请问先知平台用到深度学习框架了么? 答:现有的开源的深度学习框架不能完全解决先知平台客户的问题,因为很多实际的问题,除了包含稠密的连续特征之外,还有大规模的稀疏离散特征,目前大部分的开源框架大多 focus 在稠密连续特征的深度学习问题上,对学术界比较关心的同学,可能可以发现 google 最近有一篇 wide&deep learning 的论文是做类似的事情的,这个解决方案和我们三年前在百度做的解决方案很类似,但是很可惜的是开源的 tensorflow 在这个问题上效率非常糟糕。实际问题的难点在于它是 IO 密集(大规模稀疏)且计算密集的(稠密),而且这样的模型是极其难调的,我们有很多新的算法在解决这方面的问题,不仅仅是深度学习。 Q2:是通过何种机制做到数百倍的加速的? 答:从算法设计到 GDBT 平台设计和底层优化,都有很多工作,今天的讲座里面有涉及到一些,可以翻看记录; Q3:有没有提出一些最优化框架,比如 SVRG 等来加速收敛? (责任编辑:本港台直播) |