MLOS 概述
MLOS代表"机器学习优化系统",它旨在实例级别优化软件性能,提供持续、稳健和可追踪的结果。
这种方法使开发人员能够专注于编写代码而不是手动优化性能,从而缩短上市时间并提高整体系统效率。
MLOS是什么?
MLOS 是一种借助数据科学驱动的基础设施,它利用机器学习(ML)和人工智能(AI)来优化软件性能。
MLOS的关键特性
- 实例级优化:MLOS在实例级别上优化性能,确保每个实例都以最佳配置运行。
- 持续监控:MLOS持续监控系统性能,提供实时洞察和改进建议。
- 稳健且可追踪的结果:MLOS确保优化结果稳健且可追踪,使开发者能够基于数据做出决策。
- 机器学习驱动:MLOS利用机器学习算法分析系统行为,并识别改进领域。
MLOS的核心组件
- CORE:MLOS 的核心组件,负责优化和管理可调参数。
- 优化器模块:该模块建议各种可调参数的新值,用户可以提供配置空间的描述,包括采样分布和量化提示等。
- 调度模块:负责将配置分配给一个或多个试验工作者,这些工作者可以并行运行,插入建议的值并执行实验。
- 存储模块:保存所有执行过的配置和实验结果,确保数据的持久性和可追溯性。
- Bench:MLOS 的实验运行器,主要用于执行基准测试和收集性能数据。
- 易用性:Bench 提供了一种简化的方式来管理虚拟机(VM),支持设置、拆除、停止和重启等操作。
- 通用接口:它为控制一系列环境(应用程序、操作系统、虚拟机)提供了统一的接口,使得在不同云环境中的参数调整变得更加简单。
- 高效性:在适应新参数时,Bench 优化了重配置成本,允许在运行时动态调整某些操作系统内核参数,而无需完全重启系统
- CORE:负责数据可视化和分析部分,帮助用户理解实验结果。
- 实验数据分析:Viz 使用 Jupyter Notebook 等工具来分析实验结果,使得用户能够直观地查看和理解数据。
- 可视化工具集:提供一系列标准化的可视化和分析例程,方便用户对收集的数据进行深入分析。
- 与其他组件集成:Viz 能够与 Core 和 Bench 紧密协作,实现数据从收集到分析的无缝衔接。
MLOS的优势
- 提高效率:通过自动化和优化软件性能,MLOS 可以提高系统效率,减少资源浪费。
- 自动化:MLOS 可以自动识别和调整系统配置,减少手动干预。
- 优化:MLOS 可以通过机器学习算法优化系统性能,提高系统效率。
- 实时监控:MLOS 可以实时监控系统性能,提供实时洞察和改进建议。
- 稳健且可追踪的结果:MLOS 通过持续监控和优化系统性能,确保系统稳健性。
- 稳健性:MLOS 通过持续监控和优化系统性能,确保系统稳健性。
- 可追踪性:MLOS 可以追踪系统性能的变化,提供数据支持决策。
- 数据驱动:MLOS 通过数据驱动的方法优化系统性能,提高系统效率。
- 易用性:MLOS 提供了一种简单易用的方法来优化系统性能,减少开发人员的工作量。
- 简单易用:MLOS 提供了一种简单易用的方法来优化系统性能,减少开发人员的工作量。
- 可扩展性:MLOS 可以根据需要扩展功能,满足不同用户的需求。
- 开放性:MLOS 是一个开放的平台,可以与其他系统集成,提高系统的灵活性。
mlos-core
此目录包含了mlos-core
优化器包的代码,
您可以通过 PyPI 仓库在mlos-core使用 pip 安装。
概述
mlos-core
是一个优化器包,它封装了 FLAML 和 SMAC 等其他库,使用贝叶斯优化等技术来识别和采样可调配置参数,并通过一致的 API(suggest 和
register)提出最优参数值。
这些可以由 mlos-bench
进行评估,生成和跟踪实验结果(建议的参数、基准测试结果和遥测数据)以更新优化循环,或独立使用。
特性
由于可调参数搜索空间通常非常大,mlos-core
自动执行以下步骤,以高效生成最优的特定任务内核和应用程序配置。
- 通过识别有前途的可调参数集来减少搜索空间
- 绘制配置搜索空间:自动跟踪和管理跨版本的新 Linux 内核参数及其默认值的发现。过滤掉不可调参数(如不可写),并跟踪给定内核版本存在的内核参数。
- 利用参数知识进行优化:跟踪可调参数的范围、采样间隔、参数相关性、工作负载类型敏感性等信息,目前通过手动整理。未来可以通过抓取内核参数文档页面来自动维护。
- 针对应用程序定制:考虑参数影响的先验知识和应用程序的工作负载配置(如网络密集型、磁盘密集型、CPU 绑定、多线程、延迟敏感、吞吐量导向等),以识别可能影响特定应用程序的可调参数候选。
- 在高维搜索空间中采样以预热优化
- 通过贝叶斯优化产生最优配置
- 支持各种优化器算法(默认贝叶斯优化器、Flaml、SMAC 和随机基准比较),可处理多种类型的约束。这包括考虑当前可调参数的实验成本的成本感知优化。
- 与
mlos-bench
集成,记录和评估建议的配置。
mlos-core API文档
您可以在这里查看 mlos-core 的 API 文档。
mlos-bench
此目录包含了
mlos-bench
实验运行器包的代码,
它使用mlos-core
包作为其优化器。
您可以通过 PyPI 仓库在mlos-bench
使用 pip 安装。
概述
mlos-bench
是一个端到端的基准测试服务,可以独立启动用于实验,也可以与 mlos-core
集成作为其操作系统调优的优化器。
给定用户提供的虚拟机配置,mlos-bench 可以配置环境并在云端远程执行基准测试。
实验结果(基准测试结果和遥测数据)被存储作为 >mlos-core
优化引擎循环的输入,以评估建议的配置参数并产生新的结果。
特性
通过 JSON5 配置文件和命令行参数作为输入,mlos-bench
通过自动化以下基准测试步骤来简化工作负载性能测量:
- 设置和清理基准测试及应用程序配置
- 易用性:Mlos-bench 抽象了在 Azure 中管理虚拟机的控制,如设置、拆除、停止、取消配置和重启。通过 Azure Portal 获得虚拟机状态的可见性,确保虚拟机在向其发出命令之前已配置并运行。
- 多功能性:
Mlos-bench
提供了一个通用接口来控制环境集合(应用程序、操作系统、虚拟机),无论它们来自哪里或来自哪个云。当应用新的内核参数时,这允许更改轻松传播到所有环境层。 - 效率:在适应新参数时,
mlos-bench
优化以降低优化过程中的重新配置成本。例如,考虑到并非所有操作系统内核参数调整都需要完全重启,因为有些可以在运行时更改。
- 在配置的环境中运行基准测试并为优化器标准化结果
- 通过 Azure File Share,访问 docker 脚本来运行基准测试并存储结果作为优化输入。例如,执行上传到文件共享的 Redis 基准测试,使用指定参数运行基准测试 docker 容器。文件共享通过远程执行挂载到虚拟机,而不是通过 ARM 模板。
- 可配置:在初始配置中指定 Python 脚本以后处理和标准化基准测试结果。包含了 Redis 基准测试的示例后处理脚本。
- 本地和远程基准测试执行:基准测试可以在本地 Hyper-V 和远程 Azure 上运行。本地执行允许更好的准确性,而 Azure 运行需要估计基准测试噪声并了解使用云存储时虚拟机的行为。
- 云无关:
Mlos-bench
可以在 Azure 之外的其他云上远程执行基准测试 - 例如,控制 EC2 实例和使用 Terraform 在 AWS 上配置环境的能力。 - 持久性:可以使用存储集成来持久化实验参数并跟踪结果以供重用,无论是用于试验期间和之后的分析,还是用于未来实验的预热启动。
mlos-bench API文档
您可以在这里查看 mlos-bench 的 API 文档。
mlos-viz
此目录包含了mlos-viz
可视化包的代码,您可以通过 PyPI 仓库在 mlos-viz 使用 pip 进行安装。
概述
mlos_viz
模块是用于可视化由
mlos_bench
生成和存储的实验基准测试和优化结果的辅助工具。其核心 API 是 mlos_viz.plot(experiment)
,最初是作为 dabl 的封装来实现的,用于提供结果的基本视觉概览。其中 experiment 是从
mlos_bench.storage
层 API 返回的 ExperimentData
对象。
在未来,我们计划添加更多自动可视化功能、交互式可视化功能,以及对 mlos_bench 实验试验调度器的反馈等。
mlos-viz API文档
您可以在这里查看 mlos-viz 的 API 文档。