MLOS

MLOS(Machine Learning Optimization for Software Performance Engineering)
是一个旨在实现软件性能工程普及化和自动化的项目。
它是一种由数据科学驱动的基础架构和方法,可实现持续、实例级、稳健和可跟踪的系统优化。

MLOS 概述

MLOS代表"机器学习优化系统",它旨在实例级别优化软件性能,提供持续、稳健和可追踪的结果。
这种方法使开发人员能够专注于编写代码而不是手动优化性能,从而缩短上市时间并提高整体系统效率。

MLOS是什么?

MLOS 是一种借助数据科学驱动的基础设施,它利用机器学习(ML)和人工智能(AI)来优化软件性能。

MLOS的关键特性

  • 实例级优化:MLOS在实例级别上优化性能,确保每个实例都以最佳配置运行。
  • 持续监控:MLOS持续监控系统性能,提供实时洞察和改进建议。
  • 稳健且可追踪的结果:MLOS确保优化结果稳健且可追踪,使开发者能够基于数据做出决策。
  • 机器学习驱动:MLOS利用机器学习算法分析系统行为,并识别改进领域。

MLOS的核心组件

  1. CORE:MLOS 的核心组件,负责优化和管理可调参数。
    • 优化器模块:该模块建议各种可调参数的新值,用户可以提供配置空间的描述,包括采样分布和量化提示等。
    • 调度模块:负责将配置分配给一个或多个试验工作者,这些工作者可以并行运行,插入建议的值并执行实验。
    • 存储模块:保存所有执行过的配置和实验结果,确保数据的持久性和可追溯性。
  2. Bench:MLOS 的实验运行器,主要用于执行基准测试和收集性能数据。
    • 易用性:Bench 提供了一种简化的方式来管理虚拟机(VM),支持设置、拆除、停止和重启等操作。
    • 通用接口:它为控制一系列环境(应用程序、操作系统、虚拟机)提供了统一的接口,使得在不同云环境中的参数调整变得更加简单。
    • 高效性:在适应新参数时,Bench 优化了重配置成本,允许在运行时动态调整某些操作系统内核参数,而无需完全重启系统
  3. CORE:负责数据可视化和分析部分,帮助用户理解实验结果。
    • 实验数据分析:Viz 使用 Jupyter Notebook 等工具来分析实验结果,使得用户能够直观地查看和理解数据。
    • 可视化工具集:提供一系列标准化的可视化和分析例程,方便用户对收集的数据进行深入分析。
    • 与其他组件集成:Viz 能够与 Core 和 Bench 紧密协作,实现数据从收集到分析的无缝衔接。

MLOS的优势

  1. 提高效率:通过自动化和优化软件性能,MLOS 可以提高系统效率,减少资源浪费。
    • 自动化:MLOS 可以自动识别和调整系统配置,减少手动干预。
    • 优化:MLOS 可以通过机器学习算法优化系统性能,提高系统效率。
    • 实时监控:MLOS 可以实时监控系统性能,提供实时洞察和改进建议。
  2. 稳健且可追踪的结果:MLOS 通过持续监控和优化系统性能,确保系统稳健性。
    • 稳健性:MLOS 通过持续监控和优化系统性能,确保系统稳健性。
    • 可追踪性:MLOS 可以追踪系统性能的变化,提供数据支持决策。
    • 数据驱动:MLOS 通过数据驱动的方法优化系统性能,提高系统效率。
  3. 易用性:MLOS 提供了一种简单易用的方法来优化系统性能,减少开发人员的工作量。
    • 简单易用:MLOS 提供了一种简单易用的方法来优化系统性能,减少开发人员的工作量。
    • 可扩展性:MLOS 可以根据需要扩展功能,满足不同用户的需求。
    • 开放性:MLOS 是一个开放的平台,可以与其他系统集成,提高系统的灵活性。

mlos-core

目录包含了mlos-core 优化器包的代码, 您可以通过 PyPI 仓库在mlos-core使用 pip 安装。

概述

mlos-core 是一个优化器包,它封装了 FLAML 和 SMAC 等其他库,使用贝叶斯优化等技术来识别和采样可调配置参数,并通过一致的 API(suggest 和 register)提出最优参数值。 这些可以由 mlos-bench 进行评估,生成和跟踪实验结果(建议的参数、基准测试结果和遥测数据)以更新优化循环,或独立使用。

特性

由于可调参数搜索空间通常非常大,mlos-core自动执行以下步骤,以高效生成最优的特定任务内核和应用程序配置。

  1. 通过识别有前途的可调参数集来减少搜索空间
    • 绘制配置搜索空间:自动跟踪和管理跨版本的新 Linux 内核参数及其默认值的发现。过滤掉不可调参数(如不可写),并跟踪给定内核版本存在的内核参数。
    • 利用参数知识进行优化:跟踪可调参数的范围、采样间隔、参数相关性、工作负载类型敏感性等信息,目前通过手动整理。未来可以通过抓取内核参数文档页面来自动维护。
    • 针对应用程序定制:考虑参数影响的先验知识和应用程序的工作负载配置(如网络密集型、磁盘密集型、CPU 绑定、多线程、延迟敏感、吞吐量导向等),以识别可能影响特定应用程序的可调参数候选。
  2. 在高维搜索空间中采样以预热优化
  3. 通过贝叶斯优化产生最优配置
    • 支持各种优化器算法(默认贝叶斯优化器、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 通过自动化以下基准测试步骤来简化工作负载性能测量:

  1. 设置和清理基准测试及应用程序配置
    • 易用性:Mlos-bench 抽象了在 Azure 中管理虚拟机的控制,如设置、拆除、停止、取消配置和重启。通过 Azure Portal 获得虚拟机状态的可见性,确保虚拟机在向其发出命令之前已配置并运行。
    • 多功能性:Mlos-bench 提供了一个通用接口来控制环境集合(应用程序、操作系统、虚拟机),无论它们来自哪里或来自哪个云。当应用新的内核参数时,这允许更改轻松传播到所有环境层。
    • 效率:在适应新参数时,mlos-bench 优化以降低优化过程中的重新配置成本。例如,考虑到并非所有操作系统内核参数调整都需要完全重启,因为有些可以在运行时更改。
  2. 在配置的环境中运行基准测试并为优化器标准化结果
    • 通过 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 文档。

Menu