以智能化为舵手,引领现代计算机系统架构新航向

编者按:如今计算机系统承载的服务和算法逻辑日益复杂,理解、设计并改进计算机系统已成为核心挑战。面对系统复杂度和规模的指数级增长,以及新的大模型驱动场景下的分布式系统形态的涌现,人们亟需创新方法与技术来应对。在计算机系统发展的新篇章里,现代系统应当是一个不断自我进化的结果。机器学习和大模型的崛起使得现代计算机系统迎来了新的智能化机遇,即学习增强系统(learning-augmented systems)。微软亚洲研究院创新地从两个核心方向,来思考系统应如何不断自我学习和自我进化:“模块化”机器学习模型,与“系统化”大模型的推理思维。目标在于使得模型能够对齐复杂多变的系统环境和需求,并且推理思维能够对齐计算机系统时间和空间上的行为。相关论文 Autothrottle: A Practical Bi-Level Approach to Resource Management for SLO-Targeted Microservices 获评 NSDI 2024 杰出论文奖。


随着技术的不断进步,计算机系统不仅承担着人们生活中众多服务的重任,还包含着许多复杂的算法逻辑。用户需求的多样化与场景的增加,也使得计算机系统的复杂性和规模持续增长。从搜索、购物、聊天到新闻推荐、串流媒体和人工智能服务,这些系统的复杂性不只是庞大的代码量,更体现在背后成百上千工程师在设计、开发及维护上所付出的巨大工作量。与此同时,新类型的场景(比如大模型驱动 co-pilots 和 AI agents)也带来了新兴的分布式系统形态。如何理解、设计并作出改进成为了现代计算机系统的核心挑战。然而,系统复杂度和规模的指数级增长,使得这些挑战已经无法完全依赖人的直觉和经验去解决。

learning-augmented-systems-1

幸运的是,计算机科学的技术更新迭代为计算机系统带来了新的机遇。其中,学习增强系统(learning-augmented systems)正逐渐成为以智能化来重塑计算机系统的新趋势。学习增强系统通常采用三种不同的实现路径:一是通过机器学习技术来辅助增强现有计算机系统中启发式算法和决策规则的性能;二是利用机器学习技术对启发式算法和决策规则进行优化和重新设计;三是用机器学习模型取代原有的启发式算法和决策规则,进而推动系统的全面智能化升级。

为此,微软亚洲研究院的研究员们开展了一系列学习增强系统的工作。研究重点聚焦于两个关键方面:第一,"模块化"机器学习模型,与计算机系统行为进行对齐;第二,"系统化"大模型推理思维,赋予计算机系统自我进化的能力。

"模块化"机器学习模型,与计算机系统行为对齐

机器学习擅长于从数据中提取规律和模式,并利用这些规律进行建模和数值优化,以驱动预测和决策过程。现代计算机系统普遍具有完善的行为和性能监测机制,因此可以作为模型训练的数据来源。在以往的研究中(Metis [1]和 AutoSys [2]),研究员们曾探讨过如何利用机器学习技术优化计算机系统中的系统参数。但实际经验证明,构建学习增强系统不单单是应用现有的机器学习算法,它还面临着现代计算机系统与机器学习协同设计的关键研究挑战。

具体而言,由于现代计算机系统具有高度的规模性(例如,有着上百个分布式微服务的集群)和动态性(例如,集群里的微服务可以被独立开发、部署和扩容),在未来,利用强大的模型来学习整个系统是否还能成为一个可持续的方法?当系统部署与环境发生变化(例如,系统扩容导致集群规模改变),机器学习模型对于任务之前的一些假设可能不再成立。因此,如果不重新训练模型,模型驱动决策的正确性就会受到影响。但现代计算机系统的高动态性和高复杂度,又会使得机器学习在持续学习复杂任务上仍面临着昂贵的数据采集和资源开销成本。

"模块化"是将机器学习融入计算机系统基础的一大关键。虽然现代计算机系统具有高度的规模性和复杂度,但它们实际上是由多个子组件或服务组合而成,其动态性也就有规律可循。以一个由多个微服务组成的云系统为例,如果更新了其中的一个微服务,那么可能会影响到整个系统的端到端性能。但是,从系统架构上来看,这种更新只是更改了某个独立服务的编码配置。同理,系统的扩容,即系统里的某个服务被独立复制并部署了多份,也是如此。因此,如果机器学习模型也只需要相应地修改变化部分,那相比于持续训练整个模型,就将大大地减少学习增强系统的维护成本。

研究员们提出的利用模块化学习模拟端到端系统延迟的框架 Fluxion [3],是在学习增强系统中应用模块化学习(modularized learning)的第一步。在预测微服务系统延迟的任务上,随着个别服务的持续扩容和部署,Fluxion 显著减低了延迟预测模型的维护成本。通过引入新的学习抽象,Fluxion 允许对单个系统子组件进行独立建模,并且通过操作可将多个子组件的模型组合成一个推理图。推理图的输出即为系统的端到端延迟。此外,推理图可以动态地被调整,进而与计算机系统的实际部署进行对齐。这一做法与直接对整个系统进行端到端延迟建模的方法有显著区别。相关论文 On Modular Learning of Distributed Systems for Predicting End-to-End Latency 发表于 NSDI 2023。

learning-augmented-systems-2-1

图1:Fluxion 引入了模块化的学习抽象,允许对单个系统子组件进行独立建模。这一做法与直接对整个系统进行端到端延迟建模的方法有显著区别。

图1:Fluxion 引入了模块化的学习抽象,允许对单个系统子组件进行独立建模。这一做法与直接对整个系统进行端到端延迟建模的方法有显著区别。

在 Fluxion 框架的基础上,研究员们又提出了针对具有系统延迟目标的微服务的双级资源管理框架 Autothrottle [4],将“模块化”的理念引入到系统资源管理中,特别是自动扩容这一重要任务。自动扩容旨在为每个微服务自动分配适当的资源,以满足用户设定的系统延迟目标(service-level objective)。简单来说,当每秒的用户需求增加时,系统资源也应该相应地自动增加来满足延迟目标。反之,当每秒的用户需求减少时,系统资源也应该相应地自动减少。这种自动扩容机制能够平衡资源分配额度与系统性能。目前,业界常见的作法是使用启发式算法,比如 Kubernetes 的 HPA 和 VPA,但这些算法需要运维人员手动设定阈值并持续调整。

基于这一痛点,机器学习可以作为驱动自动扩容的一个新方法。相关工作结合了深度学习模型(如卷积神经网络和图神经网络)和方法(如强化学习),以对整个系统的全局资源与效能的关系进行建模。虽然复杂的模型能学习到系统全局的复杂关系,但训练这些模型仍需昂贵的数据采集和资源开销成本。

在模块化的设计理念下,Autothrottle 将自动扩容分解为一系列简单的子学习问题,类似于Fluxion,每个问题对应系统中的一个微服务。虽然每个微服务的资源分配都是独立的,但 Autothrottle 的设计考虑到了微服务的局部延迟会共同影响系统的全局延迟。所以,当系统的全局延迟过高(或过低)时,Autothrottle 可以预测每个微服务需要同等增加(或降低)多少的局部延迟目标。基于这些目标,每个微服务再自主根据自己的当前负载,来预测所需的资源分配(如 CPU)。

研究员们发现,CPU throttle 指标(在特定时间段内,一个进程的 CPU 额度被用尽的次数)很适合作为局部延迟目标。所以,如果一个微服务的负载较重,应增加该微服务的 CPU 资源分配,以满足指定的 CPU throttle 目标。反之,当负载较轻时,应减少 CPU 资源,来满足指定的 CPU throttle 目标。

基于系统的全局延迟历史,Autothrottle 的 Tower 组件使用 contextual bandit 算法来计算局部延迟目标,而 Autothrottle 的 Captain 组件则在每个微服务上使用反馈控制回路来快速调整 CPU 资源分配。这种模块化的设计方法为系统资源管理提供了更加高效和精准的解决方案。相关论文 Autothrottle: A Practical Bi-Level Approach to Resource Management for SLO-Targeted Microservices 获评 NSDI 2024 杰出论文奖。

图2:Autothrottle 把模块化学习应用在自动扩容的任务上。

图2:Autothrottle 把模块化学习应用在自动扩容的任务上。

"系统化"大模型推理思维,赋予计算机系统自我进化的能力

大模型的崛起给学习增强系统带来了新的智能化机遇。在学术界和工业界,众多研究正利用大语言模型,来理解并分析计算机系统的长文档、日志、代码等。同时,许多研究也在致力于帮助工程师生成程序代码和运维指令。这些研究共同展示了大模型在人类和计算机系统交互中的潜力。

微软亚洲研究院的研究员们认为,大模型的更大价值在于赋予现代计算机系统自我进化的能力。如同传统机器学习的数值优化能力,大模型的推理思维能力也令人着迷。如果计算机系统能够思考自己(时间和空间上)的行为是否合理,并用思维链来推理自己的行为应该如何变化,那么计算机系统则能自我进化。研究员们相信,自我进化会是计算机系统发展的一个重大范式转变。

回顾计算机的发展历程,从计算工具如算盘和数据表,到现代计算机系统如大数据和云计算,再到新兴的分布式系统如 AI agents 和具身机器人等,系统迭代的瓶颈主要在于人类的脑力和生产力。而大模型的推理思维有望突破这一瓶颈,加速计算机系统的迭代。

那么,如何才能系统化大模型的推理思维,进而对计算机系统的行为进行思考?微软亚洲研究院的研究员们正积极地从三个方向展开:

(1) 大模型本身对于计算机系统的基础知识储备

(2) 大模型的思维链如何与计算机系统(时间和空间上)的行为对齐

(3) 大模型驱动的学习增强系统的实际应用

未来,微软亚洲研究院将持续致力于学习增强系统的研究与应用,并期待与志同道合的研究者共同解决这些挑战。

相关论文链接:

[1] Metis: Robustly Optimizing Tail Latencies of Cloud Systems. Zhao Lucis Li, Chieh-Jan Mike Liang, Wenjia He, Lianjie Zhu, Wenjun Dai, Jin Jiang, Guangzhong Sun. USENIX ATC '18.

链接:https://www.microsoft.com/en-us/research/publication/metis-robustly-tuning-tail-latencies-cloud-systems/

[2] AutoSys: The Design and Operation of Learning-Augmented Systems. Chieh-Jan Mike Liang, Hui Xue, Mao Yang, Lidong Zhou, Lifei Zhu, Zhao Lucis Li, Zibo Wang, Qi Chen, Quanlu Zhang, Chuanjie Liu, Wenjun Dai. USENIX ATC '20.

链接:https://www.microsoft.com/en-us/research/publication/autosys-the-design-and-operation-of-learning-augmented-systems/

[3] On Modular Learning of Distributed Systems for Predicting End-to-End Latency. Chieh-Jan Mike Liang, Zilin Fang, Yuqing Xie, Fan Yang, Zhao Lucis Li, Li Lyna Zhang, Mao Yang, and Lidong Zhou. USENIX NSDI '23.

链接:https://www.microsoft.com/en-us/research/publication/on-modular-learning-of-distributed-systems-for-predicting-end-to-end-latency/

[4] Autothrottle: A Practical Bi-Level Approach to Resource Management for SLO-Targeted Microservices. Zibo Wang, Pinghe Li, Chieh-Jan Mike Liang, Feng Wu, Francis Y. Yan. Outstanding Paper Award of USENIX NSDI '24.

链接:https://www.microsoft.com/en-us/research/publication/autothrottle/

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

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

相关文章

光明领鲜物流荣膺“2023中国冷链物流百强企业”荣誉称号

近日,以“全球链接跨界融合”为主题的2024第十六届全球食品冷链大会举行,光明乳业旗下光明领鲜物流受邀参加。 作为光明乳业全产业链中重要组成部分,光明领鲜物流始终保持高标准严要求,专注于冷链质量和服务持续完善,并…

Python基础语法(与C++对比)(持续更新ing)

代码块 Python在统一缩进体系内,为同一代码块C{...}内部的为同一代码块 注释 Python 单行注释:#... 多行注释:... C 单行注释://... 多行注释: /*...*/ 数据类型 1. Python数据类型 Python中支持数字之间使用下划线 _ 分割…

DB2数据库日常维护

一、DB2系统结构 创建实例 db2icrt 实例名 删除实例 db2idrop 实例名 查询实例 db2ilist 实例名 启动实例 db2start 停止实例 db2stop 创建数据库 create database 库名 [on 存储路径] [using codeset 字符集] [TERRITORY 区域码] [pagesize 页大小] 删除数据库 drop database…

秋招力扣刷题——从前序与中序遍历序列构造二叉树

一、题目要求 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 二、解法思路 根据二叉树的遍历结构重构二叉树,至少两种遍历方式结合&…

FPGA的理解,个人的见解,不一定对

类似于面包板上搭建电路,但是使用的是逻辑单元模块;如加法器,减法器,寄存器等 没有模拟电路的电容,电阻;但是逻辑单元的底层实现,使用MOS管等电路实现电路的开关;从而表示0&#xf…

大牛“私藏”宝刊,易Accept!中科院1区-Top,偏爱国人,2个月可录!

本周投稿推荐 SCI • 能源科学类,1.5-2.0(来稿即录25天) • 计算机类,2.0-3.0(纯正刊29天录用) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好&a…

Another Redis Desktop Manager工具自定义解析数据

自定义解析数据,支持多种程序终端输出 /Users/admin/go/src/baobao_all/ws_server/baobao/main_test/encipher_tool_redis/redis_tool {VALUE}/bin/bash -c "/Users/admin/Downloads/redis_tool {VALUE}"写个go程序解析数据 package mainimport ("encoding/jso…

数据库表导出到excel:前置知识3 项目封装的Quartz实现动态定时任务

参考网址 目标:定时任务持久化到数据库,动态调整数据库里保存的cron表达式使定时任务可以跟随变化。 从SYS_QUARTZ_JOB表(通过反射创建任务)和SYS_QUARTZ_LOG表(主要就是记录日志)构建两个对应的实体类:QuartzJob和QuartzLog 1.看表结构 …

Access,Trunk,Hybrid网络设备链接类型详解

带着问题找答案:网络链路上的数据包怎么看,是否携带vlan-id如何看,以及如何设计链接类型满足用户要求,请看如下解析。 第一种:链接类型access 无标记数据帧 第二种:链接类型trunk 第三种&#xf…

【深入理解Java虚拟机】判断垃圾-引用计数法及其缺陷

什么是引用计数法 引用计数法用来判断对象是否存活 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器的值加一;当引用失效时,计数器的值就减一,任何时刻计数器为0的对象是不可能在被使用的。(存…

软件测试必问必背面试题

01 软件测试理论部分 1.1 测试概念 1. 请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试 单元测试:完成最小的软件设计单元(模块)的验证工作,目标是确保模块被正确的编码集成测试:通过测试发现与…

ForkJoin框架与工作窃取算法详解

文章目录 一、ForkJoin框架概述1_核心概念2_主要类和方法1_ForkJoinPool2_ForkJoinTask 二、启用异步模式与否的区别三、ForkJoinPool的三种任务提交方式四、执行逻辑及使用示例1_示例&#xff1a;并行计算数组元素和2_forkJoinPool.submit3_ForkJoinTask<?>中任务的执行…

实现第一个神经网络

PyTorch 包含创建和实现神经网络的特殊功能。在本节实验中&#xff0c;将创建一个简单的神经网络&#xff0c;其中一个隐藏层开发一个输出单元。 通过以下步骤使用 PyTorch 实现第一个神经网络。 第1步 首先&#xff0c;需要使用以下命令导入 PyTorch 库。 In [1]: import…

解决mysql数据库连接报错:Authentication plugin ‘caching_sha2_password‘ cannot be loaded

解决mysql数据库连接报错&#xff1a;Authentication plugin ‘caching_sha2_password’ cannot be loaded OperationalError: (2059, “Authentication plugin ‘caching_sha2_password’ cannot be loaded: /usr/lib/mysql/plugin/caching_sha2_password.so: cannot open sha…

启动Nuxt-hub-starter: Failed to initialize wrangler bindings proxy write EOF

重新安装 node.js 这样做可以确保下载到了适合的 Windows 框架、Chocolatey&#xff08;一款Windows包管理工具&#xff09;、Python 等资源。 这个错误与Node版本、pnpm/yarn 的版本无关&#xff01; Node.js — Download Node.js (nodejs.org)

汉光联创HGLM2200N黑白激光多功能一体机加粉及常见问题处理

基本参数&#xff1a; 机器型号&#xff1a;HGLM2200N 产品名称&#xff1a;A4黑白激光多功能一体机 基础功能&#xff1a;打印、扫描、复印 打印速度&#xff1a;22页/分钟 纸张输入容量&#xff1a;150-249页 单面支持纸张尺寸&#xff1a;A4、A5、A6 产品尺寸&#x…

MySQL数据恢复(适用于误删后马上发现)

首先解释一下标题&#xff0c;之所以适用于误删后马上发现是因为太久了之后时间和当时操作的数据表可能会记不清楚&#xff0c;不是因为日志丢失 1.首先确保自己的数据库开启了binlog&#xff08;我的是默认开启的我没有配置过&#xff09; 根据这篇博客查看自己的配置和自己…

鸿蒙开发HarmonyOS NEXT (三) 熟悉ArkTs

一、自定义组件 1、自定义组件 自定义组件&#xff0c;最基础的结构如下&#xff1a; Component struct Header {build() {} } 提取头部标题部分的代码&#xff0c;写成自定义组件。 1、新建ArkTs文件&#xff0c;把Header内容写好。 2、在需要用到的地方&#xff0c;导入…

Linux 摄像头编号固化

一、前言 在工业领域&#xff0c;一台设备会有很多个摄像头&#xff0c;可以使用命令&#xff1a;ll /dev/video* 进行查看&#xff1b; 在代码中&#xff0c;如果需要使用摄像头&#xff0c;那么都是需要具体到哪个摄像头编号的&#xff0c;例如 open("/dev/video4"…

线段树求区间最值问题

引言 今天主要还是练了两道题&#xff0c;是有关线段树如何去求一个区间内的最值问题的&#xff0c;我们可以用线段树来解决。 对应一个无法改变顺序的数组&#xff0c;我们想要去求一个区间内的最值&#xff0c;假设有n个结点&#xff0c;m次询问&#xff0c;暴力的解决办法…