Initial commit: obsidian to gitea
This commit is contained in:
27
article/published/民科|瞎谈 AI for OS.md
Normal file
27
article/published/民科|瞎谈 AI for OS.md
Normal file
@@ -0,0 +1,27 @@
|
||||
## 民科|瞎谈 AI for OS
|
||||
|
||||
> Disclaimer: 本文为民科软文,不涉及任何具体的真实的技术讨论。
|
||||
|
||||
前段时间看到 NeuralOS [1] 这个工作,由大模型来模拟 OS 的行为,通过读取键盘、鼠标的操作作为输入,让大模型生成计算机屏幕画面作为输出。其实这件事并不新颖,容易让人想到早期 ChatGPT 刚发布时,就有人让 GPT 扮演一个命令行工具,来模拟输出执行一条命令后的结果。
|
||||
|
||||
这类工作自然是看着比较有趣的,但是本质来说脱离了 OS 的范畴(下面贴一段 Wikipedia 的定义)。目前常说的 AI OS,个人认为分为两个层级,一个是目前常出现的 AI PC、AI mobile phone 之类的,提供一些 AI 能力让用户使用更加方便,例如一些办公软件自动化、一个 agent 来自动点外卖等,这些在我看来属于 AI agent 的范畴,他们有可能带来类似从 CLI 到 GUI 变化的一个新变革,但不在本文讨论的 scope 内。另一个则是从传统 OS 定义出发,我们希望抽象和管理硬件资源,同时为上层应用提供各类能力(计算、存储等等),本文希望设想一下 AI for OS 在这传统定义下能够做什么。
|
||||
|
||||
> An operating system (OS) is system software that manages computer hardware and software resources, and provides common services for computer programs. [2]
|
||||
|
||||
在设想 AI for OS 能够带来什么改变之前,我们先看一下最开始 OS 是如何诞生的。最早期的计算机通过人工纸带打孔以及在超大机房里做电缆插拔来执行一个“程序”,每次只能运行一个“程序”,且需要大量的人力成本来进行“程序”的加载、切换等,资源利用率极低。一个自然的想法是:能不能让计算机自己管理程序的加载、运行、切换和资源分配,由此开始了 OS 的诞生与不断演化,从而有了现今的时间片轮转实现程序的并行,虚拟内存的管理实现程序间的隔离等等。
|
||||
|
||||
既然 OS 的本质是对硬件资源提供抽象和管理、对上层应用暴露统一的能力,我们能够看到现今的操作系统仍然有着很多需要大量人力成本的工作,尤其是在分布式、云计算等领域。传统 OS 需要人作为核心决策者,OS 只是静态配置来实现确定性的行为。但现今的系统复杂性越来越高,分布式场景下有着异构节点、不同的网络拓扑、复杂的状态同步问题,在负载侧有着越来越复杂的 workload,任务的多样性越来越高,对于调度机制等也带来了许多新的挑战。而现今面对这些复杂性,都是依靠人类专家付出大量的人力成本来试错、调优,这种事情本不该是 sysetm 哲学希望看到的。
|
||||
|
||||
因此本文想要随意畅想一下 AI for OS 可能能够带来什么改变。人类使用工具的最本质需求应该是:我有一个问题,工具能够帮助我解决这个问题。传统 OS 提供的接口(syscall、POSIX 标准等),都是由人告诉机器“你要做什么”,而我们更希望看到的是,由人告诉机器“我想干什么”。我们从上到下来看这个问题:
|
||||
|
||||
当有一个足够聪明的系统时,最上层统一提供的接口应该是一些类似于 `run_inference(model="Qwen3-Max", SLO=50ms, budget=$1000, mode="performance_first")` 这样的 API 来直接告诉系统“我想干什么”。那么在我们希望能够提供这样的接口的情况下,我们的系统需要能够做到很多事情。
|
||||
|
||||
在系统的调度层面,我们希望有一个类似 AI agent 的智能体来做自动化的调度决策,而不是传统的时间片轮转与优先级队列。从小的方面说一个最简单的需求,我们在做批量化测试时,特别是不同测试可能需要使用的资源(卡数等)不同,目前都需要人工编写脚本编排来依次启动测试任务。一个更加智能的系统应该能够在我告诉系统我需要完成这些测试任务之后,就自动编排调度,在最大化资源利用完成测试任务的前提下,也不会出现 OOM 等现象。从大的方面说,在我们的云厂商中,有着大量的 serverless 需求,这些需求都应该由系统的智能调度决策自动化地解决,从而避免大量的人类专家编写规则与试错调优,进而减少资源利用的 bubble。最终实现用户只需要负责提交任务,以及任务需要满足的 SLO 等性能需求指标、执行任务的预算,系统就能根据需求自动化地做任务调度。
|
||||
|
||||
在硬件抽象层面,从传统的 CPU 为中心,到现代的系统已经在面对越来越多样的异构硬件(CPU, GPGPU, NPU, TPU, etc),传统 OS 缺少对各类异构硬件的状态感知,需要各种硬件之间的不同 API 来反复同步状态,任务在不同异构硬件之间的分发与决策也需要大量的人类专家经验来调优(例如在 LLM Infra 领域的很多将部分需求卸载至 CPU 计算的工作)。在 AI for OS 下,我们可能会希望系统层面能够自动感知这些异构硬件的特征、当前状态等等,实时评估当前硬件能够提供的资源,甚至提供对未来的预测能力,以此提供抽象并暴露一些接口,从而屏蔽异构硬件的区别,让上层看到的只是简单的不同资源和能力,从而根据任务需求做自动化地任务分发与调优。
|
||||
|
||||
以上纯属民科瞎谈,不涉及任何技术建议,但是技术总归是在不断演进的,仍然需要许许多多踏实的科研工作一步步尝试和推进,从而探索和实现未来科技的可能性。总而言之,我们这些在当代做计算机系统的工程师们,又何尝不是七八十年前那些负责把纸带一个个塞到大型机上运行,同时反复修理大型机故障的人呢?这又本该如此吗?
|
||||
|
||||
参考资料:
|
||||
[1] https://arxiv.org/abs/2507.08800
|
||||
[2] https://en.wikipedia.org/wiki/Operating_system
|
||||
Reference in New Issue
Block a user