作者 | 秦奇
在这个 AI 浪潮改变人们生活方方面面的时候,人工智能技术也在改变各个岗位的技术研发生态,阿里在这方面走还是非常前端,以阿里前端智能化小组为例,不仅有D2C(Design to Code)的 Imgcook ,前端算法工程体系Pipcook,也有 C2C (Code to Code),智能 UI 等能力。本文重点介绍了C2C 在阿里云飞天大数据平台中的一些实践,期望通过实际的方案介绍让大家对前端智能化有更深入的了解。
业务背景
先简单介绍下业务背景,阿里云飞天大数据平台是阿里巴巴10年大数据建设最佳实践的结晶,每天有数万名数据和算法工程师正在使用飞天大数据平台,承载了阿里巴巴99%的数据业务构建。同时广泛应用于城市大脑、数字政府、电力、金融、新零售、智能制造、智慧农业等各个领域的大数据建设。
具体的发展历程,产品架构和前端页面概览可以参见下图:
业务挑战
从上面几张图就可以清晰地看到阿里云大数据研发平台中前端页面的几个特点:
- 重编程场景,存在大量的WebIDE 和 编辑器场景,每天超过 70% 的用户会用编程
- 重可视化交互,存在大量数据的可视化展现,任务的编排的场景。
而且作为一个研发平台除了稳定性外,对提升客户,也就是在上面做研发人员的效率是最重要的事情,因此我们产品前端智能化的要核心去解决就是效率问题。
解决方案
从业务挑战看,前端智能化方案在业务落地,主要解决的就是两个问题:
- 各个产品组件的智能化升级
- 统一的算法工程能力,保证算法的持续更新迭代和快速部署的能力
针对这些思考,我们把整个智能化的建设布局做成如下:
以下分别会从智能编辑器,智能化可视化,以及算法工程方面主要阐述。
智能编辑器
编辑器是大数据研发中的核心组件,如何让开发者快速进行数据开发一直是我们的核心需求。借助于智能化和机器学习,我们加强了编辑器的核心能力,比如智能代码推荐、代码诊断等。
智能代码推荐
代码推荐是指在编写代码时,编辑器会基于当前上下文,列举出可能的候选项供用户进行选择。用户一旦选择了推荐项,则会自动补全对应的输入,这样可以极大提升开发者的编码效率。
借助于智能化的算法和大部分用户的使用习惯,我们实现了代码推荐的智能模型,结合语言语法规则,可以推荐出当前最符合语法规则的代码。代码推荐采用的算法一般为语言模型算法(Language Model),常用的模型算法有n-gram、LSTM以及最近比较火热的GPT和CodeGPT(GPT基于编程语言预训练模型)。
考虑到代码编写每个人都有不同的代码风格和编码习惯,通用的推荐算法可能并不是最佳的方案。受淘宝“千人千面“机制的启发,代码推荐是否也能根据个人的编码习惯进行推荐呢?为此我们对用户的实际编码习惯进行了研究,实现了一套“千人千面”的推荐模型,从而可以针对每个人推荐出符合个人习惯的代码。
代码诊断
代码缺陷一直是开发者很头痛的存在,而引起缺陷的原因也是多种多样,如果能够在编写阶段即可发现代码缺陷,能够节省大量的人力物力,而代码诊断正是为此而生。借助于引擎侧的能力,和众多语法规则,以及代码审查的相关信息,在使用智能化算法进行训练之后,已经基本具备了代码缺陷检测的能力。这里的训练模型可以参考监督模型,常用的是支持向量机(Support Vector Machine, SVM)。
智能可视化
在大数据平台中,数据是最核心的内容,而可视化则是展示数据特性、价值的最佳工具。尤其在数据分析的场景下,可视化展示可以帮助用户快速、直观的发现数据的规律。
数据探查
Data profiling is the process of examining the data available from an existing information source (e.g. a database or a file) and collecting statistics or informative summaries about that data. The purpose of these statistics may be to: Find out whether existing data can be easily used for other purposes. --维基百科
数据探查是获取数据的统计信息和信息摘要的过程。如何实现数据类型、特征的自动分析和图表的自动选择是核心问题。其中数据类型分析我们基于DataWizard 的 Analyzer 与 Statistic 模块进行分析,可以分析出字段类型、基本字段特征等。图表推荐参考如下经典的决策图,基于对比、分布、组成和关系四个纬度进行推荐。整个探查过程我们已经封装了组件,可以快速调用实现自己的探查产品。
并且我们正在基于数据-图表的对应训练智能模型,实现数据特征的智能识别和图表的智能推荐。
算法工程
以上提到的众多智能模型的训练,借助于阿里云机器学习平台,我们形成了通用的模型训练、评估和部署链路。
模型训练
借助于PAI DSW的交互式建模能力,我们可以基于Notebook的形式快速实现模型的训练过程,包括数据的加载、预处理、训练集、测试集切分等操作。然后基于Tensorflow完善的模型实现,可以很快实现自己的训练过程。
模型评估
模型评测是体现模型效果的重要的方法,模型是为了解决实际的生产问题,所以模型的评估方案也必须符合问题的定义,能够真实反映出模型对该问题的效果。常见的评估方法有准确率、召回率等,同时经常也需要根据实际问题自定义评估的指标。比如针对代码推荐的场景,除了准确率(Top-N)之外,还有推荐耗时、推荐长度等指标,只有结合这些指标去综合评估才能反映出模型的真实效果。
模型部署
PAI EAS提供了模型在线部署的能力,一键上传即可实现模型的部署,之后通过API即可快速调用。
未来展望
- 立足于智能化,能够紧跟业界进展,将好用的算法应用于我们的产品中,为用户提供更强大的服务。
- 发掘更多的智能化场景,使用机器学习的方式去解决问题,
写在最后
机器学习带来了一种解决问题的思路,我们发现很多业务上的问题其实都可以借鉴机器学习的思路去考量。更深一步,我觉得人人都会机器学习是未来的趋势。就像数据分析,机器学习也会变得越来越容易上手。比如pipcook就是一个能够让前端同学也能快速上手机器学习的框架,希望这种工具能够越来越多。集团前端智能化在P(RD)2C、以及D(esion)2C和C(ode)2C几个方向共建,目的就是针对前端场景,以智能化的手段去解决业务问题,欢迎一起交流。