火山引擎数智平台:高性能ChatBI的技术解读和落地实践

news2024/9/22 21:45:52

导读:大模型能力的发展和成熟,催生出新一代智能化 BI—— ChatBI,即通过自然语言处理(NLP)与大型语言模型(LLMs)的结合,极大简化数据分析过程,提高效率并降低分析门槛。火山引擎数智平台旗下智能数据洞察产品 DataWind 近期上线 ChatBI 能力,提供智能修复、多语法适用等能力,在性能上实现秒级响应、一键生成。用户只需要通过文字描述需求, 就能生成指标,快速实现数据获取、分析计算与图表搭建,大幅降低数据消费门槛。本篇文章将从技术架构、实现路径、总结展望几个方面,拆解火山引擎数智平台如何落地 ChatBI 能力。

BI 其实是一个由来已久的名词。其中 I——“intelligence”的内涵已经随着时间推移和时代发展而逐渐发生变化。

起初,人们认为在数据仪表盘和看板上能够进行筛选条件变更与维度下钻就是智能化表现。

而随着平台更新迭代,更多高阶、复杂的功能以更易操作的形式更新到平台中,让没有计算机背景或编程背景的人也能够深切体会到代码、计算机或者大数据时代所带来的智能之感。

随着 AI 时代的来临,大家对于智能化有了更多期待。例如: 它是否能够“猜到”自己的想法进行智能推荐?或是,当看到数据异常,它能否帮忙找出原因?

客观而言,从 2018 年开始开发的抖音集团内部 BI 平台起步较晚。 因此其直接跳过了 BI 平台早期发展阶段,从立项之初,它的目标便是成为能够满足公司内部几乎所有数据分析需求的数据分析平台。

在抖音集团内部,BI 平台建设分为以下几个阶段:

一是 2020 年前后的开发建设。在这个阶段投入了大量资源,对结果归因相关功能进行开发,希望能够帮助用户解决归因问题。

二是在 2021 年 4 月,发布了低代码的可视化建模工具。原因在于,团队不想让用户在数据分析的过程中发现数据尚未准备完毕时,需要去专门联系数仓开发人员重新准备一份数据。为此开发了可视化建模工具,希望用户仅需要进行简单的拖拉拽操作就可以轻松处理数据。

三是 2023 年年底。内部团队面对迅速发展的 ChatGPT,认为它会对 BI 产生具有如“掀桌子”一般颠覆性的影响,因此经过一段时间的尝试,便在今年 4 月份对内进行了产品发布。就目前而言落地效果不错,已经有几千人在高频使用这一内部产品。

当前,火山引擎数智平台旗下的智能数据洞察 DataWind 已构建起包含了数据准备与管理,数据分析,以及多端展示等功能的相对完善的产品能力矩阵,同时赋予产品系统高度可运维优势。

截至目前,抖音集团 80%内部员工成为产品月活用户,同时在工作日单日的产品最低查询量基本处于 200w 次以上。

火山引擎数智平台高性能数据分析架构方案

数据驱动决策,是在抖音集团内部深入人心的重要概念,并与公司所推行的 OKR 理念相互契合。由于 OKR 通常以指标化方式去衡量,在指标出现问题需要进行排查探寻原因时,数据分析便成了必不可少的过程。同时,在排查过程中用户脑海中会同时存在多种分析思路,如果数据分析时间过长,就会将原本的分析思路打断。因此,为了实现高速分析,企业内部员工用户对分析平台的性能有着极大要求。

尽管性能十分重要,但 BI 平台开发厂商往往认为其更多与引擎有关:引擎能力较差会导致 BI 所能处理的事情并不多。

但数据集、数据源、数据量的大小以及 Query 的复杂程度等并不是用户所关心的,他们关心的是自己的数据分析能否能快速完成。因此在提高性能方面的开发面临着很大挑战。

为了满足用户对性能的需求,开发中采取了有别于主流 BI 厂商的思路。虽然 DataWind 产品支持直连目前通用的大部分数据源、数据引擎与数据库。但在企业内部用户更多地使用“抽取”,即围绕自研分析性数据库 ByteHouse 建设了非常重的抽取链路,把公司内几乎全部需要进行数据分析的数据全部放入 ByteHouse 中。

由于数据存放方式对于查询效率有着极大影响,因此 BI 团队使用了大量的 ByteHouse 集群来满足用户对于实时连接、离线连接、不同表引擎连接的需求

同时,如何充分有效地利用 ByteHouse 高性能引擎也十分重要。比如应该向什么样的集群推荐数据集,选择什么样的表引擎,以及确定什么样的分片和排序键策略等。这些为问题对于性能而言都相当关键。

在这里,先简单介绍一下 ByteHouse。相较于原生 Clickhouse,ByteHouse 针对多个领域做了性能优化。

首先,是 HaMergeTree 方面的优化工作。HaMergeTree 对于大部分企业用户而言都不可或缺。原生 ClickHouse 在对 Apache ZooKeeper(ZK)存在较大依赖,在文件的 part 信息处理方面依赖性更甚。这就导致 ClickHouse 处理大规模数据集时,易造成 ZK 资源紧张,管理的 znode 数量暴增,影响系统性能和稳定性。

ByteHouse 对此进行了大量优化,从而降低了对 ZK 的依赖程度。目前在 ByteHouse 中,对 ZK 的一脸仅仅存在于 schema 信息,以及生成自增序列等极少数场景中,从而保证了 ByteHouse 的整体性能和可用性。

在 HAUniqueMergeTree,即原生 ClickHouse 的 Raplacing MergeTree 方面。相对而言,ClickHouse 引擎在读取方面并不高效,而 ByteHouse 在处理此方面问题时,会通过建立一定的索引实现对记录的快速更新和标记删除,从而提高性能。

此外,原生 Clickhouse 的 join 能力因为对 coordinator 节点压力较大的问题被大家诟病已久。ByteHouse 在这个方面实现了真正的分布式 join,同时也基于此做了大量优化器方面的工作。例如当大表 join 小表时,ByteHouse 会根据小表的数据情况进行自主判断,去对大表中的部分数据免读或免下封。

总体而言,把大量数据导入 ByteHouse 并不意味着表的数量很多。在抖音集团内部,大家更愿意把更全面、更明细的数据导入到 ByteHouse 集群中,从而避免在做数据分析的过程中出现某一方面的数据不存在或者明细级别不够的情况。

在使用到非常细的粒度的场景,团队认为大部分查询是基于某些高频指标维度,去找到非常明细的数据所做的查询。因此会很容易地想到解决方案,即建立一些 Cube 或物化视图,并且建立一些自动路由。

对于用户而言,这些操作都是十分透明的。而从工程上值得一提的是,团队并没有使用 ByteHouse 自带的物化视图或是 projection 方式,因为在开发实践测试中,发现这种方式对于集群与整体性能有负面影响。目前,开发中主要使用基于 Hadoop 链路与基于 Spark 的链路去进行 Cube 建设,并且由此实现自动路由。从用户角度来看,用户会面对一张宽泛且明细力度极细的大表。

但这种方法的副作用在于由于产品的各个业务线都采取了付费使用形式,为数据集建设了大量聚合表必然会导致成本的上升。这就涉及到一个新的问题:在满足了用户的速度要求情况下,如何降低成本?

针对这个问题,解决的思路是提供数据冷热分层,对于最为常用的数据,例如最近 7 天或 14 天的数据,可以放置于 ByteHouse 中进行存储。而相对距离当前时间较远的数据,则放置在存算分离的 ByteHouse 集群当中,通过更为廉价的方式来实现查询。至于时间更为久远的数据,比如过去一年的数据,就存于 Hive 表内,可以通过 Python 或者 Spark 的方式来进行查询。

而之所以保留对以 Sparck 方式进行兜底查询这一方式的支持,是由于 MPP 相关数据库在兜底能力方面普遍存在硬伤。故而采用 Spark 方式来兜底,如此一来,至少能够确保用户在极为极端的情况下仍然能查询到数据结果。

除此之外,性能优化与成本治理也是值得研究的问题。对此开发中所采用的是一种较为偏向“人民战争”的方式。鉴于仅依赖平台运维团队来监控所有性能指标及具体数据库表,难以满足集团公司庞大的业务需求,团队选择将这种监控与优化的能力内嵌于产品体系中。

从而让每个业务线的负责人,乃至每个项目管理者,都能直观地了解到哪些数据集消耗资源较多、哪些数据集的成本效益比较低——即投入大额资金但查询频率并不高的情况。该策略还可协助他们识别出哪些部分可通过构建多级聚合来提升性能,以及在确保性能不受影响的前提下,如何实施成本控制措施以实现更高效的资源配置。

通过这种方式,不仅能够分散管理和优化的压力,还能促进全员对资源效率的关注与参与,确保了整个集团在规模扩张的同时保持成本效益与服务性能的最优化。

BI + AI 实现智能数据洞察

抖音集团内部在 BI 平台建设阶段,对智能部分投入较多。

而对智能部分的分享可以大致分为三个部分。

其一为数据开发,旨在帮助进行数据准备的人员能够准备更具价值的数据;其二是数据分析,期望能够助力用户进行异常指标查询以及异常归因;其三为数据消费,通过对话式问答的方式来提升提取信息的效率。

数据开发的场景相对简单,团队的工作主要是集成多种 AI 算子至低代码可视化建模工具中,其中运用较多的是预测能力。而使用预测的场景也非常容易理解。

假设用户有一张表,其中某一列可能表示几天后的数据,若此时用户已知道其他列的信息和历史数据,便会希望通过机器学习的方式预测出该列的新值。从目前来看,此类需求较多。从算子角度来讲,产品母线已集成约 40 多种算子,其中特征工程算子与预测算子是被频繁使用的两类。

接着是数据分析场景。在数据分析场景中,开发团队希望能够帮助用户更快捷地进行异常指标查询以及异常归因,不想再为用户配置例如当数据指标低于 10%或 5%再发送警告此类傻瓜式警告方式。

团队想要开发一个更为灵活、能够反映指标季节性的预警系统,因此在开发中采用了 STO 算法,同时结合指标平滑技术,利用残差结合历史数据计算出指标的波动范围,当超出这一波动范围时,就会进行告警。

从产品形态方面分析,归因可以分为以下几类。

从产品形态上即时归因较易理解,即用户在发现异常时只需点击一下,系统便会进行归因。就维度选择而言,开发团队参照了一种基于基尼系数的维度选择方式,基尼系数常被联合国用于贫富差异比较,将其理解成维度后,可把每个维度视为一个国家,若某个维度中维值对某一指标的贡献较为平均且无明显差异性,则认为该维度可能并非主要原因。

在确定维度后会通过一系列方法计算维值的贡献率。即时归因对即时性要求较高,其可以在短时间,比如 15 秒钟左右,返回查询结果,但即时归因能分析的事情相对较少,它不会进行相关指标分析,仅会做维度分析,也不会做过多维度组合相关分析,总体功能较为简单。

而另一种归因——洞察报告的功能则相对丰富,洞察报告通过异步通知模式可以处理相对复杂的需求,能够分析不同指标和进行多种维度组合。

用户归因前进行配置,比如选择指标归因或维度归因,选择大致组合后便可生成洞察报告,洞察报告既可以在系统上查看,也可以推送给相应的 IM。

此外,还有一种在内部使用较多的归因——指标分析树。

在集团内部,大家在进行 OKR 对齐时,指标往往会形成类似指标体系的东西,即:上级重视 GMV 等指标,而下级更关注 PV 等指标,这种差异便会形成树状指标结构。如果对于指标存在疑问,就会进行固化的基于维度的分析,其总体思路是将指标分析过程进行固化,确保在查看 OKR 或指标时,能够清楚知道出现异常的板块、维度和节点。

归因功能从实现角度而言整体相对简单,难点主要在于产品设计与算法相关处理,而其在工程角度也是较为简单的问题。此外,异步的洞察报告和指标分析数调度在实现时,要尽量避免对在线查询产生影响,要尽量减少占用在线查询资源。

在积极开展指标归因相关工作时,大模型出现了。随后,团队投入了大量的时间去探索与大模型相关的能力,同时也耗费了较多的资源。从结果方面来看,目前集团内部已有大几千人成为 ABI 的 Copilot 常用用户,因此整体而言取得了不错的成果。

从探索角度而言,团队开发了多样化的场景,但落地结果有部分相对成功,也有部分相对失败。

如今回顾那些不太成功的场景,都存在一个共性,即所生成内容的质量并非很高。也就是说,相对而言或许产品交互方面它们还有很大的改进空间,但在内容质量方面的调优往往较为困难。

例如,用户期望大模型能帮助进行归因,告知数据为何不对或者接下来应朝哪个方向去查看。

关于这方面的能力,团队最初将其上线的原因在于其表现实际上超出了预期。从开发者角度来看,特别容易以较低的预期来看待大模型相关事宜,觉得它能做到与自己一样的事情就感觉它似乎表现得已经不错了,但实际上从用户解决问题的角度来看,往往生成的内容质量没有那么高。所以在这一点上特别容易让团队产生较为乐观的预期,而这往往会导致落地效果或落地姿态不够理想。

目前取得成功的案例存在一些共性特点。首先,如果功能是为了解决诸如用户在解决问题过程中本身就需要去搜索资料的问题,与 ChatGPT 相结合往往能获得较好的解决方式。

在代码开发场景方面,团队产品功能内部落地情况较好,包括此前列举的 SQL 查询,围绕 ABI 所支持的高阶 Notebook 做法。这些功能能够取代用户在网上搜索查看大量 Stack overflow 帖子,之后提炼代码编辑思路的场景,而在大模型加持的代码编辑器中,DataWind 提供了如解释 SQL、优化 SQL、生成注释以及报错修复等一系列功能。

又或者说数据准备的第一步:源数据的录入。起初在录入指标时,往往需要进行诸多翻译工作为指标命名。

若是处于多语言环境,还需配置该指标的外语名称。对于这类问题,以往解决时通常需要查阅公开资料,查询相关单词的英文写法等。而这部分的工作,大模型能够有较为出色的表现,能够极大地节省用户精力。

而在仪表盘的探索分析及解读中,大模型能发挥的最大作用在于帮助用户展开润色工作,因为用户可能需要迅速地将数据结果发送给上级,而自己书写解读内容可能会相对困难。在这一场景中,DataWind 除了对某一图表进行数据解释外,还会推荐一些 follow up 问题,而这些 follow up 问题实则完全由 GPT 所推荐。

当用户点击一个问题时,它亦会描述接下来要进行的操作,这也变相回应了另一个问题,即如何让用户知晓模型后续的行为。因为目前至关重要的一点是,以大模型在现阶段的能力,其回答是无法做到百分百准确的。

而在严肃场合,需要的是一个非常精准的数字,用户会非常想要了解其统计口径是什么,它又是如何得出这个结论的。因此在落地场景中,一个极为重要的原则是必须让用户清楚大模型到底做了什么,或者说大模型做了哪些部分,以及接下来将如何处理这个请求,这个数据究竟是如何得来的,这一点十分关键,否则,即便模型准确率能够达到 95%以上,其在数据产品中的落地也较为困难。

接着再来看一下 SQL 查询的场景,本产品能够进行解释以及优化。在 editor 中可以运用自然语言来帮助生成相应的 SQL 以及与 notebook 相关的一些代码。

从实现角度而言。第一点便是合规与内容审核问题。抖音集团内部实践最初采用了 GPT 模型,进行了多种尝试,包括 GPT 3 的 tuning 等,对比后选择了 GPT 4,同时也在努力对接公司自研大模型,因此在内容审核方面较为吃力,例如:若认为 table 的 schema 不那么敏感,而 table 的数据敏感,那么那些维值应如何处理?是否需要进行向量化匹配?这会涉及到一系列的技术和工程问题。

再如精调问题,究竟是否要采用模型精调以及何时采用?即便到目前内部也未完全放弃模型精调这一路线,开发团队对于精调一事的理解更多是以空间换取时间,因为有时团队会发现当用户将私域问题描述得极为详尽时提示语过长,过长的提示语一方面可能无法输入,另一方面也可能影响整体使用效率。此时要通过部分精调的方式来减少需要提供的 prompt 数量。

总结与展望

简单总结几个未来展望的要点:

一,企业级 BI 正逐渐成为新趋势,曾经的普遍情况是诸多业务部门各自购买 BI,而全公司或全员使用的 BI 在当时并不重要,但如今其重要性愈发凸显。

二,指标治理以及 AI 能力也是至关重要的部分。

三,团队认为数据消费能够推动数据建设,总体建设思路是将上层的数据消费打造得极为繁荣,在相对繁荣之后,会持续向下层的数据建设,如 ETL 部分、数仓部分以及数据湖部分提出新的诉求,从而带动下层基础设施的建设。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2144225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

剪画:视频怎么去水印?分享几个简单实用的视频去水印方法!

亲爱的小伙伴们,在视频创作的道路上,水印问题是不是常常让你感到困扰呢? 别担心,今天就来为大家详细介绍七种超实用的视频去水印方法,让你的视频制作更加顺畅。 一、剪画 - 短视频去水印 剪画是一款非常强大的视频处理…

双向NAT=源NAT+NAT Server,有这么6?

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 你们好,我的网工朋友。 随着移动设备的普及和云计算技术的发展,网络流量的规模和复杂度不断增加。网络地址转换&#xff…

像JSON一样使用ProtoBuf,空间还能缩小60%,性能提升100%

首发公众号:【赵侠客】 引言 在前面《释放你九成的带宽和内存:GZIP在解决Redis大Key方面的应用》一文中我使用GZIP算法可以将JSON格式数据的大小缩小88%从而节省了大量的存储和带宽资源,本文介绍另一种JAVA对象序列化神器——ProtoBuf(Proto…

打破服务提供商的数据中心自动化障碍

在通信服务提供商(CSP)不断变革的背景下,数据中心发挥着越来越重要的作用。这些数据中心不仅是部署基于云的5G基础设施的重要组成部分,还在促进边缘计算和下一代企业解决方案的过程中发挥着关键作用。然而,随着数据中心…

YOLOv10改进系列,YOLOv10损失函数更换为Powerful-IoU(2024年最新IOU),助力高效涨点

改进前训练结果: 改进后的结果: 摘要 边界框回归(BBR)是目标检测中的核心任务之一,BBR损失函数显著影响其性能。然而,观察到现有基于IoU的损失函数存在不合理的惩罚因子,导致回归过程中锚框扩展,并显著减缓收敛速度。为了解决这个问题,深入分析了锚框扩展的原因。针…

PyCharm安装和使用教程(Windows系统)

一、pycharm基本使用 说明: PyCharm 是一款功能强大的 Python 编辑器, 本文简单的介绍下PyCharm 在 Windows下是如何安装的。 PyCharm 的下载地址:http://www.jetbrains.com/pycharm/download/#sectionwindows 如果进入网页时间过长或进不…

OpenAI震撼发布o1大模型!RL深度思考,技术差距拉开

openai放大招了,是奥特曼在推上宣传了很久的草莓真身,这次它真的来了。 又给大家带来一点小小的震撼,国内大模型老板们也不再迷茫了,4o的多模态的还没赶上呢,这下怎么又回到纯文本了,不是说大家都搞得差不多…

神经网络通俗理解学习笔记(1)

神经网络通俗理解学习笔记(1) 神经网络原理激活函数前向传播和反向传播多层感知机代码实现加载数据网络结构损失函数优化器训练测试保存 回归问题一元线性回归多元线性回归多项式回归 线性回归代码实现数据生成设置超参数初始化参数可视化Pytorch模型实现…

性能测试的五大目标

性能测试的目的其实是为了验证软件系统是否能够达到用户的性能指标,发现软件系统中存在的性能瓶颈,随后优化软件,最后起到优化系统的目的。 主要有以下几点: 评估系统的能力 测试中得到的负荷和响应时间数据可以被用于验证所计…

AI+智能监控实训平台

基本介绍 中智讯“AI智能监控实训平台” (AI-Monitor)是中智讯公司面向于人工智能等相关专业设计的一款工程实训平台,该产品基于基于行业内主流的TensorFlow深度学习框架来实现,同时,通过机器视觉技术和边缘计算技术实…

【新手上路】衡石分析平台使用手册-系统管理员手册

用户管理​ 用户管理页面可以创建管理用户、对用户进行分组管理、组织架构管理及用户属性的维护和管理。下面详细介绍用户管理相关功能。 用户管理​ 用户管理子页面展示了当前系统中所有用户的信息,可以添加新用户,查看、编辑已有用户,可…

C++设计模式(更新中)

文章目录 1、创建型模式1.1 简单工厂(Simple Factory)(1)示例(2)总结 1.2 工厂方法(Factory Method)(1)示例(2)总结 1.3 抽象工厂&…

【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧

文章目录 Python NumPy学习指南第一部分:NumPy简介与安装1. 什么是NumPy?2. 安装NumPy使用pip安装:使用Anaconda安装: 第二部分:NumPy数组基础1. NumPy数组的创建从列表创建一维数组:创建多维数组&#xff…

发现了一个很神奇很哇塞的做事心态,就2个字

最近发现了一个很神奇很哇塞的做事心态,轻松收获了很多意向不到的结果,其实就两个字,会玩。 大家有没有发现,很多时候越是重要的地方,我们就会越用力,越用力的时候,反而结果却差强人意。越在意我…

IDC 2024未来企业大奖:酷克数据携手中国联通打造湖仓一体平台

9月11日-12日,2024 IDC中国年度峰会暨颁奖典礼于上海圆满召开。全球权威IT市场研究和咨询公司IDC公布了 2024 未来企业大奖的优秀奖名单。中国联通与酷克数据联合申报的《中国联通筑梦数字化转型:自主可控、开放协作的混合受管理湖仓一体平台》项目&…

Hi3516DV500 高清智慧视觉 SoC

1.1 概述 Hi3516DV500 是一颗面向视觉行业推出的高清智能 Soc 。该芯片最高支持 2 路 sensor 输入,支持最高 5M30fps 的 ISP 图像处理能力,支持 2F WDR 、多级降噪、六轴防 抖、多光谱融合等多种传统图像增强和处理算法,支持通…

企语iFair-协同管理系统-任意文件读取

文章目录 免责申明漏洞描述搜索语法漏洞复现yaml修复建议 免责申明 本文章仅供学习与交流,请勿用于非法用途,均由使用者本人负责,文章作者不为此承担任何责任 漏洞描述 企语iFair协同管理系统getuploadimage.jsp接口处存在任意文件读取漏洞…

发现抖音趋势与打造病毒内容的17种方法

无论是喜欢还是不喜欢,社交媒体总是关于什么是“流行”和受欢迎的。因此,毫不奇怪,随着TikTok的发展,TikTok的趋势也在不断增加。 TikTok趋势是指TikTok视频中具有吸引大量观众的特征。TikTok趋势通常始于一些通过尝试创意格式或…

算法知识点———并查集

并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的元素。并查集支持两种操作: 合并(Union):合并两个元素所属集合(合…