{
    "componentChunkName": "component---src-templates-blog-blog-detail-tsx",
    "path": "/blog/ai-in-database-performance-tuning",
    "result": {"pageContext":{"blog":{"id":"Blogs_337","title":"TiDB Hackathon 2021 — 为数据库性能调优插上 AI 的翅膀 | 调优测试框架 Matrix 团队访谈","tags":["TiDB Hackathon 2021"],"category":{"name":"社区动态"},"summary":"本篇文章将介绍 TiDB Hackathon 2021 Matrix 团队赛前幕后的精彩故事。","body":"![明势资本赞助最佳市场潜力奖 Matrix.mp4](https://img1.www.pingcap.com/prod/Matrix_0a800d3a75.mp4)\n\n在刚刚结束 TiDB Hackathon 2021 赛事中，Matrix 赛队的作品 Tenseigan，是针对 TiDB 的一个分布式数据库的调优测试框架，该工具能够提供：自动调参、参数影响度评估等功能，集成了多种 workload。由于项目的创新性和可扩展性，摘得了“最佳校园奖”和“明势资本特别赞助最佳市场潜力奖”。\n\n![01.webp](https://img1.www.pingcap.com/prod/01_31fedf1977.webp)\n<center>陈书宁代表 Matrix 赛队在现场领奖</center>\n\n本篇文章将通过 Matrix 团队与明势资本执行董事徐之浩的对话，揭秘团队赛前幕后的精彩故事，也希望给开发者们未来基于 TiDB 开发自己的应用和项目带来一些启示。\n\n## Matrix 队名的由来\n\n**童剑**：如果把 TiDB 看成是黑客帝国的一个矩阵，我们的项目 Tenseigan 就像是黑客帝国的男主角 Neo，本身有很强的学习能力，可以自我进化，最终还可以成为救世主一样的存在。所以取了 Matrix 这个名字。\n\n## 项目的灵感来源\n\n**丁晨**：这个项目的灵感来源于 2017 年 SIGMOD 顶会的一篇 paper，也就是 OtterTune 框架。我们做这个项目的初衷是想看看 OtterTune 在 TiDB 上的表现，能否落地到生产环境，去解决实际的问题，以及 OtterTune 框架本身还存在哪些问题，对于分布式的场景，会不会有新的研究点产生。\n![02.webp](https://img1.www.pingcap.com/prod/02_b3ca4c38c5.webp)\n<center>Tenseigan：一个适配 TiDB 的自动化调优测试框架</center>\n\n## 投资人评委眼中的项目价值\n\nMatrix 团队的精彩创意也给明势资本执行董事徐之浩留下了深刻印象，徐之浩在加入投资行业之前，也有过近 10 年研发工作经历，对这类 Infra 的项目非常感兴趣。\n![03.webp](https://img1.www.pingcap.com/prod/03_be9394731b.webp)\n<center>明势资本执行董事徐之浩在 Hackathon 颁奖现场</center>\n\n**徐之浩**：选择这个队伍获得最佳市场潜力奖，主要是因为这个项目有很强的扩展性，另一方面也比较有创新性。之前大家对数据库的优化更多停留在内核和优化器、执行器或者架构部分，但从用户的视角来看，通过一些配置和参数的调整就可以获得很好的性能提升。大家都聚焦在内核的优化上，没有太多人来关注调参这部分，所以这个方向还是比较有创新性的。\n\n在技术栈的选择上，选择用 AI 代替人来选择最优的参数也是比较创新的。最近 Google 也在提用 AI 本身去优化 AI 的训练框架，这本质上也是一种调参，是 ROI 很高的一个研究方向。如果能作为产品化的插件用在 TiDB 上的话，对 TiDB 的性能是如虎添翼的。这样被训练完之后的 AI 也就像一个运维老师傅一样，可以更高效地给出更好的参数建议，是有未来机器替代人工的现实意义的。\n\n## 作为学生参赛的特殊体验\n\nMatrix 赛队可以说是华中科技大学的代表队，队长丁晨在华中科技大学读博二，研究方向是基于新硬件的键值存储系统；熊逸钦是丁晨在同一个实验室的学弟，在读研一；童剑和陈书宁也都毕业于华中科技大学，目前在 PingCAP 做研发工程师。\n\n**丁晨**：作为学生参赛，最大的感受就是 Hackathon 是一个高强度、沉浸式的项目体验，这种机会在学校里面是比较少的。在学校里做事情通常比较慢，也没有 Deadline，像这种两天内就需要写一个小项目，对于学生能力的挑战还是比较大的。此外，借助这个机会接触工业界实际的问题，对于我们做研究还是很有帮助的。因为我们做研究很多是从逻辑出发，如果了解到工业中的实际问题，就可以试着去解决实际遇到的问题。\n\n**熊逸钦**：这是我第一次参加 Hackathon，作为学生或者第一次参赛的选手来说，Hackathon 这种形式对我来说是前所未有的，而且很有吸引力。因为在短短两天的时间内，我全身心地投入到项目中去，给我个人带来的提升也是非常大的。\n\n## 团队协作共同攻克技术困难\n\n**丁晨**：前期主要是我跟逸钦负责集群搭建和框架部署，以及一些 TiDB 适配的工作。后期书宁和童剑主要是把生产环境的一些 Workload 给构造出来，然后让调参的效果凸显出来。我们分别构造了一个 TiDB、PD、TiKV 的 Case，后来我就去写答辩的 PPT 和 Demo 了。\n![04.webp](https://img1.www.pingcap.com/prod/04_11c7d51e74.webp)\n<center>陈书宁和童剑在 Hackathon 广州现场</center>\n\n**Q：在比赛过程中你们遇到过什么比较大的技术困难？是如何解决的？距离真正生产可用还差多远？**\n\n**丁晨**：最开始，我们针对典型的 TPCC 的负载做性能测试的时候，发现 OtterTune 对于调参的效果不太明显。因为 TiDB 对于这种标准的测试，默认配置参数已经优化得比较好了。后来我们就去尝试构造一些在真实生产环境中遇到过的、有瓶颈的 Case。只有在有瓶颈的 Case 下面，调参的效果才能够比较好的体现出来。这是我们遇到的一个技术难点，就是如何构造一个真实的环境，把调参的效果给展示出来是我们遇到的一个问题。\n\n在框架的易用性方面的话，其实 OtterTune 的框架还是不太好用的，我们这个项目也是做了很多很多个脚本，就像是跑了一个脚本集。如果要让它更加易用的话，可以在框架上做一些改进，比如可以把脚本放在网页上，一键运行，让运维和研发更加方便地使用。未来如果能够把 OtterTune 跟 TiDB Cloud 结合起来，在云上可以给运维提供更好的环境，而把复杂性隐藏起来，应该是一个更有想象力的场景，这也是未来我们这个项目希望去扩展的地方。\n\n## 成本问题 & 由于时间原因未完成的遗憾\n\n**徐之浩**：我还是比较好奇，你们有没有算过要构建这么一个训练的集群，需要花费多少成本？如果真要把它做成生产可用的产品的话，我理解还是需要有很多数据准备的，在这种情况下，如何保证训练成本依然可控呢？\n\n**丁晨**：成本这个问题是一个关键问题，我们在做的时候其实并没有太考虑这个问题。我们跑的数据也就是几百个点的规模，后续如果要用在生产环境的话，可能需要一个专门的调参集群，去做 AI 模型的训练，把各种各样的用户数据收集到这个集群里面，让 AI 模型去学习不同业务的 Workload，以及不同硬件配置下的经验。这个经验是可以复用的，也可以提高数据的使用效率，当这个训练足够多以后，成本是可以降低的。\n\n**Q：这次 Hackathon 的时间有限，你们在比赛过程中还有什么遗憾吗？**\n\n**丁晨**：目前我们的项目只能给出一个最优的参数。但没办法解释这个参数为什么最优，就是说我们的 AI 还是缺乏可解释性的，我们还想做一个可视化的模块，直观地展示性能和最优配置之间的关系，从而帮助运维和研发去分析参数背后的原因。但因为时间原因，可视化这里还没做得很直观，只是做了一个列表。另外还有一些 Case 的测试结果不太符合预期，这一点跟 Workload 还比较有关联，后续如何让框架整合更多 Workload，让不同 Workload 之间的调参经验可以相互复用是一个需要考虑的问题。\n\n**熊逸钦**：因为时间关系，我们测试的覆盖度还是不太够，包括测试数量和测试参数都不是太完善。\n\n**童剑**：其实一些有经验的 DBA，对于参数应该怎么调整是有自己的经验的。但他们通常只能给出一个方向性的建议。我们想做的实际上是把这种关系给具体化，能够知道参数的变化关系，从而快速定位到最优参数的位置。这样能加速收敛这个过程。\n\n**陈书宁**：我这边主要有 2 个遗憾，一个是因为疫情关系，2 位队友没有办法来到现场一起 Coding。另外因为这次参赛者比较多，预赛和决赛分开，没有办法保留完整的 24 小时持续编程的时间。其实那种连续 24 小时不间断 coding 的体验是很吸引人的。\n\n## 评委眼中的 TiDB Hackathon\n\n**徐之浩**：这是我第一次担任 Hackathon 的评委。TiDB Hackathon 给我的感受是特别硬核，之前我还在做程序员的时候参加过公司组织的 Hackathon，但感觉没有这次这么硬核。这次有 AI 类的项目，也有直接在 TiKV 上面做图数据库之类的项目，硬核程度完全超乎我的想象。\n![05.webp](https://img1.www.pingcap.com/prod/05_b4cc880544.webp)\n<center>明势资本执行董事徐之浩在 Hackathon 现场参与评审</center>\n\n这次 Hackathon 对于 TiDB 也是非常有价值的，有很多项目离进入 TiDB 产品已经很近了，实用性方面也是非常棒的。而且这个过程中大家开了很多脑洞，产生了很多对产品迭代和产品周边非常有价值的想法。所以 Hackathon 也可以看作是社区智慧的年度大爆发，在其中能非常切实地感受到社区小伙伴的创造力和潜力。\n\n从活动组织上来看，活动早期的宣传造势，以及当时有个社区粉丝做得很炫酷的 “找队友” 的短视频，都让我印象深刻。另外决赛环节中，一些没有进入 20 强，但在单个方向上表现比较突出的项目也有机会能参与独立奖项的角逐，展示自己的项目，这一点还是比较贴心的。唯一比较考验的就是我们这些老评委的体力，整个答辩的时长还是比较长的。\n\n## 展望与期待\n\n**Q：徐老师作为投资人，您对该项目有哪些商业化的建议吗？**\n\n**徐之浩**：我的建议还蛮多的，这个项目离一个可以商业化的产品还有很长的路要走。第一，我们可以把产品做得更稳定一些，不能在某些 workload 中表现很好，在其他 workload 中没有效果。因为这个调参是针对数据库，或者其他的 Infra，对于企业都是非常核心的部分，如果表现不稳定是很难商业化的。\n\n第二就是成本问题，需要把 AI 的算法和人的经验结合起来，比如把一些不相关的因素通过人的经验先排掉，这样能让 AI 更快地趋近好的效果，也能节省成本。\n\n第三，建议可以先针对某一款软件的场景打穿打透。这个过程中就需要跟软件的原厂比如 PingCAP，保持比较紧密的合作，比如获得更多真实环境中的数据等。另外考虑到商业模式，调参也不要做成一锤子买卖，尽量做成一个持续动态的调参建议，会让我们的商业模式更加有想象力。\n\n**Q：你们的项目这次获得了明势资本特别赞助的最佳市场潜力奖和校园团队奖，未来希望继续把这个项目继续下去吗？**\n\n**丁晨**：我们是希望继续完善的，一方面是往云上做适配，另外希望整合更多的功能，比如可视化的展示和 AI 的因果推理等。还有前面徐总提到的动态负载的调优，同时兼顾收益和成本的关系。再就是优化框架，也需要社区实际生产环境中的数据。\n\n**Q：期待明年的 TiDB Hackathon 有哪些改进？**\n\n**丁晨、熊逸钦**：可以考虑吸引更多高校的学生参与进来，加强在校园圈的宣传力度。\n\n**童剑**：首先，学生对 TiDB 和工程实现没有那么熟悉。所以希望可以给校园群体设立独立赛道，独立评奖。另外，对于初赛被淘汰的队员，决赛的参与度不高，可以多增加一些展示和互动的环节，让初赛选手也能持续关注决赛。\n\n**徐之浩**：希望赛前提前给评委一些项目简介，帮助评委更好地理解项目。另外，现场评审的强度挺高的，大脑信息已经过载，有点审美疲劳了，中间希望有更多休息。也希望在赛前看到前一年 Hackathon 项目的状态和落地情况等，这对选手和评委都是一种鼓舞。  \n\n> 延展阅读：点击查看更多 [TiDB Hackathon 2021 优秀项目分享](https://pingcap.com/zh/blog/?tag=TiDB%20Hackathon%202021)","date":"2022-01-21","author":"PingCAP","fillInMethod":"writeDirectly","customUrl":"ai-in-database-performance-tuning","file":null,"relatedBlogs":[]}}},
    "staticQueryHashes": ["1327623483","1820662718","3081853212","3430003955","3649515864","4265596160","63159454"]}