AiPaper
论文状态:已完成

Large Language Models as Realistic Microservice Trace Generators

发表:2024/12/16
原文链接PDF 下载
价格:0.10
价格:0.10
已有 6 人读过
本分析由 AI 生成,可能不完全准确,请以原文为准。

TL;DR 精炼摘要

本文提出利用大型语言模型微调通过递归方法生成逼真微服务调用图合成跟踪,结合指令调优增强约束学习,显著提升多样性和准确性,能有效替代真实数据并支持关键跟踪特征预测与数据补全等下游任务。

摘要

Workload traces are essential to understand complex computer systems' behavior and manage processing and memory resources. Since real-world traces are hard to obtain, synthetic trace generation is a promising alternative. This paper proposes a first-of-a-kind approach that relies on training a large language model (LLM) to generate synthetic workload traces, specifically microservice call graphs. To capture complex and arbitrary hierarchical structures and implicit constraints in such traces, we show how to fine-tune LLMs to generate recursively, making call graph generation a sequence of easier steps. To further enforce learning constraints in traces and generate uncommon situations, we argue for applying additional instruction tuning steps to align our model with the desired trace features. Our evaluation results show that we can generate diverse realistic traces under various conditions and outperform existing methods in accuracy and validity. We demonstrate that our synthetically generated traces can effectively replace real data to optimize important microservice management tasks. Additionally, our model adapts to downstream trace-related tasks, such as predicting key trace features and infilling missing data.

思维导图

论文精读

中文精读

1. 论文基本信息

1.1. 标题

大型语言模型作为逼真的微服务跟踪生成器 (Large Language Models as Realistic Microservice Trace Generators)

1.2. 作者

Donghyun Kim, Sriram Ravula, Taemin Ha, Alexandros G. Dimakis, Daehyeok Kim, Aditya Akella。 隶属于德克萨斯大学奥斯汀分校 (University of Texas at Austin) 的相关研究机构。

1.3. 发表期刊/会议

该论文作为预印本发表于 arXiv,目前状态为 v2v2 版本。虽然尚未正式发表在期刊或会议上,但 arXiv 是计算机科学领域重要的预印本平台,许多高质量的研究成果在正式发表前都会在此发布,具有较高的关注度。

1.4. 发表年份

2024年(预印本发布时间为 2024-12-16T12:48:04.000Z)。

1.5. 摘要

工作负载跟踪 (Workload Traces) 对于理解复杂计算机系统的行为以及管理处理和内存资源至关重要。由于真实世界的跟踪数据难以获取,合成跟踪生成 (Synthetic Trace Generation) 成为一个有前景的替代方案。本文首次提出了一种利用大型语言模型 (Large Language Models, LLM) 训练来生成合成工作负载跟踪的方法,特别是微服务调用图 (Microservice Call Graphs)。为了捕捉此类跟踪中复杂任意的层次结构和隐式约束,作者展示了如何对 LLM 进行微调 (fine-tune) 以递归 (recursively) 生成,将调用图生成分解为一系列更简单的步骤。为了进一步强制执行跟踪中的学习约束并生成不常见情况,作者主张应用额外的指令调优 (Instruction Tuning) 步骤,使模型与所需的跟踪特征保持一致。评估结果表明,该方法可以在各种条件下生成多样化且逼真的跟踪,并在准确性和有效性方面优于现有方法。作者证明了合成生成的跟踪可以有效替代真实数据,以优化重要的微服务管理任务。此外,该模型还可以适应下游的跟踪相关任务,例如预测关键跟踪特征和填充缺失数据。

1.6. 原文链接

2. 整体概括

2.1. 研究背景与动机

计算机系统的工作负载跟踪 (Workload Traces) 记录了应用程序在计算设备上执行、接收请求、处理并响应时发生的硬件或软件事件。这些跟踪数据对于分析复杂的计算机系统、优化其 CPU、内存、网络资源分配和管理至关重要。然而,获取真实的跟踪数据常常面临挑战:

  1. 数据稀缺性 (Data Scarcity): 真实世界的跟踪数据公开可用性有限。

  2. 收集困难 (Collection Difficulty): 在多样化的环境中,特别是在复杂的云计算设置中,大规模收集这些数据非常困难。

    现有的合成跟踪生成方法虽然有所进步,但通常存在局限性:

  3. 功能受限 (Limited Functionality): 只能生成特定字段(如请求数量、资源类型),或仅限于固定结构的跟踪(如网络数据包)。

  4. 无法处理复杂结构 (Inability to Handle Complex Structures): 难以处理像微服务调用图 (Microservice Call Graphs) 这种具有复杂层次结构(如深度、宽度变化)和隐式约束(如父子进程时间关系)的数据。

    鉴于这些挑战,研究人员迫切需要一种能够生成逼真、多样、且能准确捕捉真实系统复杂结构的合成跟踪数据的方法。

2.2. 核心贡献/主要发现

本文旨在解决现有合成跟踪生成方法在处理复杂、结构化数据(特别是微服务调用图)方面的不足,并利用大型语言模型 (LLM) 的强大能力。其核心贡献和主要发现包括:

  1. 首次将 LLM 应用于微服务调用图生成 (First-of-a-kind LLM Application): 论文提出了一个开创性的方法,利用大型语言模型 (LLM) 来生成合成微服务调用图,这是对 LLM 应用领域的一个重要扩展。
  2. 递归生成机制 (Recursive Generation Mechanism): 引入了一种递归生成方法来处理调用图的复杂层次结构。通过将复杂的调用图生成任务分解为一系列更简单的、逐层生成的子任务,模型能够更好地捕捉图的结构和内部约束。
  3. 指令调优增强约束学习 (Instruction Tuning for Constraint Enforcement): 提出了使用额外的指令调优 (Instruction Tuning) 步骤来强制模型学习和遵循复杂的隐式约束,例如时间关系和父子依赖。此外,该方法还允许用户通过指令定制生成特定属性(如高延迟、不常见通信)的跟踪数据。中间指令 (Intermediate Instructions) 的引入进一步增强了模型推理和遵守约束的能力。
  4. 生成高质量、逼真的合成跟踪 (Generation of High-Quality, Realistic Traces): 评估结果表明,该方法生成的合成跟踪在结构有效性、与真实跟踪的分布相似性方面优于现有方法,并且能够有效地替代真实数据用于微服务管理任务(如关键组件提取和异常检测)。
  5. 适应下游任务能力 (Adaptability to Downstream Tasks): 验证了该微调后的模型能够适应多种下游任务,包括预测关键跟踪特征和填充缺失数据,在这些任务中表现出比大型通用 LLM 更好的性能。
  6. 代码开源 (Code Release): 作者开源了其代码 (https://github.com/ldos-project/TraceLLM),促进了研究的可复现性和社区的进一步发展。

3. 预备知识与相关工作

本节将为读者铺垫理解论文所需的背景知识,包括核心概念、相关技术演进以及本文工作与现有研究的差异。

3.1. 基础概念

3.1.1. 工作负载跟踪 (Workload Traces)

概念定义: 工作负载跟踪 (Workload Traces) 是指计算机系统在运行过程中,为了响应用户请求、执行应用程序或管理资源而产生的事件序列的记录。这些事件可以是硬件层面的(如 CPU 使用率、内存访问模式),也可以是软件层面的(如 API 调用、微服务间的通信、数据库查询)。 目的: 跟踪数据是理解系统行为、诊断性能瓶颈、优化资源配置以及进行容量规划的关键依据。

3.1.2. 微服务架构 (Microservice Architecture)

概念定义: 微服务架构 (Microservice Architecture) 是一种将单个应用程序开发为一套小型服务的方法,每个服务运行在自己的进程中,并使用轻量级机制(通常是 HTTP API)进行通信。这些服务围绕业务功能构建,并通过全自动部署机制进行独立部署。 特点: 松耦合、高内聚、独立部署、可扩展性强。 与跟踪的关系: 在微服务架构中,一个用户请求可能触发多个微服务之间的复杂通信和协作,形成一个跨服务的调用链。

3.1.3. 微服务调用图 (Microservice Call Graphs)

概念定义: 微服务调用图 (Microservice Call Graphs) 是一种特殊的有向无环图 (Directed Acyclic Graph, DAG),它记录了用户请求在微服务应用程序中执行的路径和依赖关系。图的顶点 (vertices) 代表微服务(或客户端),边 (edges) 代表微服务之间的 API 调用。 结构特征:

  • 层次结构 (Hierarchical Structure): 请求从一个微服务发起,可能调用多个子微服务,形成多层次的调用链。
  • 父子关系 (Parent-Child Relationships): 调用方是父节点,被调用方是子节点。子节点的通信源必须与父节点的通信目的地匹配。
  • 时序约束 (Temporal Constraints):
    • 一个微服务的开始时间必须早于其结束时间。
    • 父节点的开始时间必须早于或等于其任何子节点的开始时间。
    • 父节点的结束时间必须晚于或等于其所有子节点的结束时间。
  • 唯一 ID (Unique IDs): 调用图中的每个调用通常都有一个分层连接的 ID(例如 0.1, 0.1.1),以形成 DAG。 重要性: 微服务调用图是分析微服务应用程序性能、依赖关系、进行故障诊断和优化的核心数据。

3.1.4. 大型语言模型 (Large Language Models, LLMs)

概念定义: 大型语言模型 (LLMs) 是指拥有数亿到数万亿参数的深度学习模型,它们通过在海量文本数据上进行自监督学习(如预测下一个词元)进行训练。 特点:

  • 自回归性质 (Autoregressive Nature): 通常以自回归方式生成文本,即根据前面生成的词元预测下一个词元。
  • 通用性 (General Purpose): 经过预训练后,能够执行多种任务,如文本生成、摘要、翻译、问答等。
  • 适应性 (Adaptability): 可以通过微调 (fine-tuning) 适应特定领域或任务,甚至超越自然语言处理领域(如蛋白质序列、代码、表格数据)。

3.1.5. 微调 (Fine-tuning) 与 指令调优 (Instruction Tuning)

微调 (Fine-tuning): 概念定义: 在大型语言模型 (LLM) 领域,微调是指在模型完成大规模预训练之后,使用特定任务或领域的数据集,对模型参数进行小幅度的额外训练过程。 目的: 使得通用 LLM 能够更好地适应特定任务的语义和模式,从而在这些任务上取得更好的性能。

指令调优 (Instruction Tuning): 概念定义: 指令调优是微调的一种特殊形式,其目标是使 LLM 能够更好地理解和遵循用户的自然语言指令。这通常通过在训练数据中包含成对的“指令-响应”示例来实现,指令可以是问题、任务描述或行为要求。 目的: 提高模型在零样本 (zero-shot) 或少样本 (few-shot) 场景下遵循复杂指令的能力,并生成与用户意图高度对齐的输出。

3.1.6. 自回归语言建模 (Autoregressive Language Modeling)

概念定义: 自回归语言建模 (Autoregressive Language Modeling) 是一种序列预测任务,其中模型根据序列中所有先前生成的词元 (token) 来预测下一个词元。 计算方式: 对于一个序列 x1,x2,,xLx_1, x_2, \ldots, x_L,自回归模型会学习联合概率分布 P(x1,,xL)P(x_1, \ldots, x_L),并将其分解为条件概率的乘积: P(x1,,xL)=i=1LP(xix1,,xi1) P(x_1, \ldots, x_L) = \prod_{i=1}^L P(x_i | x_1, \ldots, x_{i-1}) 在 LLM 中的应用: 现代 LLM 通常采用自回归方式进行训练和文本生成。它们在给定上下文后,一个接一个地生成词元,直到生成完整的序列或遇到停止条件。

3.1.7. LoRA (Low-Rank Adaptation of Large Language Models)

概念定义: LoRA (Low-Rank Adaptation) 是一种参数高效的微调技术。它通过在预训练模型的现有权重矩阵旁边插入小的、低秩的矩阵来微调大型语言模型,而不是直接更新所有预训练模型的权重。 原理: 对于一个预训练的权重矩阵 W0Rd×kW_0 \in \mathbb{R}^{d \times k},LoRA 引入两个低秩矩阵 ARd×rA \in \mathbb{R}^{d \times r}BRr×kB \in \mathbb{R}^{r \times k},其中 rmin(d,k)r \ll \min(d, k)。在微调过程中,只训练 AABB 的参数,而 W0W_0 保持不变。更新后的权重矩阵变为 W0+BAW_0 + BA优点:

  • 参数效率 (Parameter Efficiency): 显著减少了可训练参数的数量,从而降低了微调的计算成本和存储需求。
  • 避免灾难性遗忘 (Catastrophic Forgetting): 由于预训练权重不变,有助于保留模型的通用能力。
  • 多任务适应性 (Multi-task Adaptability): 可以为每个任务训练一个小型的 LoRA 适配器,并在推理时根据需要进行切换。 在本文中的应用: 作者使用 LoRA 来微调 Llama-2 7B 模型,以适应微服务调用图的生成任务,大大降低了训练成本。

3.2. 前人工作

3.2.1. 传统生成模型在跟踪生成中的应用

  • LSTMs (Long Short-Term Memory, 长短期记忆网络): Sherstinsky (2020) 介绍的循环神经网络 (Recurrent Neural Network, RNN) 变体,常用于时间序列数据建模。
    • 应用: Bergsma et al. (2021) 使用 LSTMs 生成虚拟机工作负载跟踪 (Virtual Machine Workload Traces)。
    • 局限性: 这些方法通常只能生成特定字段,难以捕捉微服务调用图的复杂层次结构。
  • GANs (Generative Adversarial Networks, 生成对抗网络): Goodfellow et al. (2014) 提出的生成模型。
    • 应用: Lin et al. (2020) 和 Jiang et al. (2023) 利用 GANs 生成网络数据包跟踪 (Network Packet Traces)。Yin et al. (2022) 使用 GANs 生成合成 IP 头跟踪 (Synthetic IP Header Traces)。
    • 局限性: 同样面临只能生成特定字段或限于固定结构跟踪的挑战,不适用于具有动态、层次结构特征的微服务调用图。
  • Diffusion Models (扩散模型): Ho et al. (2020) 提出的生成模型。
    • 应用: 同样被探索用于生成网络数据包跟踪 (Jiang et al., 2023)。
    • 局限性: 与 GANs 类似,不适用于微服务调用图的复杂层次结构和约束。

3.2.2. 表格数据生成方法

微服务跟踪数据常常以表格形式存储,因此表格数据生成方法也具有一定的相关性。

  • TVAE (Xu et al., 2019): 一种基于变分自编码器 (Variational Autoencoder, VAE) 的表格数据生成器。
    • 局限性: 虽然可以生成表格数据,但它不考虑表格中存在的任何层次结构或行之间的复杂依赖关系,因此无法直接生成符合微服务调用图结构约束的跟踪。
  • GReaT (Generative Pretrained Transformer, Borisov et al., 2023): 利用语言模型来生成表格数据,通过将表格行编码为文本序列。
    • 优点: 能够利用 LLM 的强大文本生成能力。
    • 局限性: 虽然 GReaT 能够生成表格数据,但它没有专门针对微服务调用图中的层次结构隐式约束(如父子通信时间关系、调用链 ID 结构)进行设计或优化。它将整个表格视为一个文本序列,难以在生成过程中强制执行这些复杂的图结构约束。本文的基线模型之一就是基于 GReaT 的方法,但未能有效处理复杂图结构。

3.2.3. LLM 在其他领域的适配

LLM 已经成功地从自然语言领域扩展到其他专业领域:

  • 蛋白质序列 (Protein Sequences): Shen et al. (2024) 探索了 LLM 在蛋白质序列生成中的应用。

  • 代码 (Code): Roziere et al. (2023) 开发了 Code Llama,用于代码生成和理解。

  • 表格数据 (Tabular Data): Borisov et al. (2023) 的 GReaT 模型。

  • 芯片设计 (Chip Design): Liu et al. (2023) 将 LLM 适配到芯片设计领域。

  • 定量推理 (Quantitative Reasoning): Lewkowycz et al. (2022) 研究了 LLM 在定量推理问题解决中的应用。

    这些工作表明了 LLM 在经过适当适配后,可以处理具有特定结构和约束的非自然语言数据。

3.2.4. LLM 的指令遵循与多步推理

  • 指令遵循 (Instruction Following):
    • 通过提示 (Prompting) 机制 (Li and Liang, 2021; Shin et al., 2020; Wei et al., 2022) 和指令调优 (Ouyang et al., 2022; Wei et al., 2021; Chung et al., 2022),增强 LLM 遵循用户指令的能力。
    • 本文利用指令调优来使模型生成符合用户指定属性的跟踪。
  • 多步推理 (Multi-step Reasoning):
    • Tree-of-thoughts (Yao et al., 2024) 通过分解问题、探索不同推理路径来解决复杂问题。
    • 迭代总结 (Wang et al., 2023) 和子问题分解 (Lee and Kim, 2023) 有助于处理长上下文和复杂场景。
    • 本文的递归生成 (Recursive Generation) 策略也属于一种多步推理,将复杂的图生成任务分解为逐层生成,并在此过程中引入中间指令 (Intermediate Instructions) 来强化推理和约束。

3.3. 差异化分析

本文的工作与上述相关工作的主要区别和创新点在于:

  1. 处理复杂层次结构和隐式约束 (Handling Complex Hierarchical Structures and Implicit Constraints): 现有方法在生成微服务调用图这种具有复杂 DAG 结构和严格时间/父子关系约束的数据时表现不佳。本文通过递归生成 (Recursive Generation) 策略,有效地将复杂的整体图生成分解为可管理的子任务,从而解决了这一难题。
  2. 强制遵守结构约束 (Enforcing Structural Constraints): 结合指令调优 (Instruction Tuning)中间指令 (Intermediate Instructions),模型被显式地训练以在生成过程中执行逻辑和算术检查,确保生成的跟踪严格遵守物理和结构约束,这在现有生成方法中是缺失的。
  3. 用户定制化生成 (User-Specified Generation): 通过指令调优,模型能够根据用户指定的属性(如应用程序、边数量、总延迟、高延迟或不常见通信类型)生成定制化的跟踪数据,这对于测试特定场景和异常情况至关重要。
  4. 领域特定适配 (Domain-Specific Adaptation): 本文是首次将 LLM 成功应用于计算机系统跟踪生成领域,特别是微服务调用图,展示了 LLM 在非自然语言、结构化数据生成方面的强大潜力。

4. 方法论

本文提出了一种两阶段的方法来训练大型语言模型 (LLM) 生成合成微服务调用图:首先是预训练 (Pre-training),旨在捕捉真实调用图数据中的交互并引入递归子图生成;其次是指令调优 (Instruction Tuning),以根据用户指令生成调用图并确保约束的遵守。

4.1. 预训练 (Pre-training)

预训练阶段的目标是使通用 LLM 适应微服务调用图这一特定领域,通过自回归语言建模目标来学习真实调用图数据的模式。

4.1.1. 将调用图编码为文本 (Encoding Call Graphs as Text)

由于 LLM 接收文本序列作为输入,因此需要将微服务调用图数据集编码为文本表示。

  1. 原始数据格式: 微服务调用图最初以表格形式存储,其中行代表边(即微服务之间的通信),列描述每条边的特征。
  2. 文本编码方法: 遵循 GReaT (Borisov et al., 2023) 提出的方法,将特征编码为自然语言格式。
    • 一个表格调用图 X\mathbf{X} 包含 mm 个特征列 {f1,,fm}\{f_1, \ldots, f_m\}nn 行边 {x1,,xn}\{\mathbf{x}_1, \ldots, \mathbf{x}_n\}
    • 对于边 ii 的特征 jj 的值是 vijv_{ij}
    • 每条边 xi\mathbf{x}_i 被编码为一个文本序列 ti=[ti1,,tim]\mathbf{t}_i = [t_{i1}, \ldots, t_{im}]
    • 其中 tij=[ϕ(fj),vij]t_{ij} = [\phi(f_j), v_{ij}]ϕ(f)\phi(f) 是一个将特征名 ff 转换为描述 vijv_{ij} 的自然语言模板的函数。
    • 示例: 图 1 (images/1.jpg) 中边 1 的编码可能是:[Edge ID is 0, Source is Client, Destination is Front end, Type is HTTP, Communication starts at 0 ms, Communication finishes at 24 ms]
    • 完整图表示: 整个调用图表示为一个文本序列 t=[t1,,tn]\mathbf{t} = [\mathbf{t}_1, \ldots, \mathbf{t}_n],即一系列文本编码的边。
  3. 消除位置偏差: 为了消除基于位置的伪关联,训练期间会随机打乱每条边内部的特征顺序。
  4. 全局属性编码 (Global Attributes Encoding):
    • 整个调用图可以通过其属性来描述,例如最大深度 (max depth)、总边数 (total edges) 和总通信延迟 (total communication latency)。
    • 这些属性作为模型的条件信息(或提示 prompt)。
    • 如果调用图 X\mathbf{X}rr 个属性,名称为 {a1,,ar}\{a_1, \ldots, a_r\},值为 {w1,,wr}\{w_1, \ldots, w_r\}
    • 它们被编码为一个文本序列 c=[c1,,cr]\mathbf{c} = [c_1, \ldots, c_r],其中 cj=[aj, ’is ’ ,wj]c_j = [a_j, \text{ 'is ' }, w_j]
    • 示例: 图 2 (images/2.jpg) 中红色部分的条件 Conditions
    • 处理方式: 属性序列 c\mathbf{c} 会被预置在每个文本编码的调用图之前,并在预训练期间与边一起被预测。
    • 灵活性: 属性也会被随机打乱,并且每个属性都有 pdropp_{drop} 的概率被独立地丢弃,以实现灵活的提示。

4.1.2. 递归生成 (Recursive Generation)

为了处理复杂的结构,本文提出将调用图的生成任务分解为一系列递归的层生成任务。

  1. 生成流程:
    • 从初始属性或提示 cc 开始,模型在每一层 (layer) 的任务是生成源自提示中指定起始节点 (Start Node) 的边。
    • 模型还会根据前一层提示和当前层生成的边,生成一个新的提示 (new prompt) 供下一层使用。
    • 这个新提示随后被重新用作条件,以指导模型生成下一层的输出。
    • 递归过程持续进行,直到满足请求的属性 cc
  2. 形式化表示:
    • 对于编码的调用图 t=[t1,t2,,tn]\mathbf{t} = [\mathbf{t}_1, \mathbf{t}_2, \ldots, \mathbf{t}_n],边 ti\mathbf{t}_i 被划分为层序列 [t1,t2,,tl][\mathbf{t}^1, \mathbf{t}^2, \ldots, \mathbf{t}^l],其中 lnl \leq n
    • 每个层由一系列共享相同父节点(即源节点)的边组成,确保没有边出现在多个层中。
    • 对于描述 t\mathbf{t} 的调用图条件 c\mathbf{c},引入层条件 cj\mathbf{c}^jj{1,2,,l+1}j \in \{1, 2, \ldots, l+1\}
    • 层条件 cj\mathbf{c}^j 编码了在序列层 [t1,t2,,tj1][\mathbf{t}^1, \mathbf{t}^2, \ldots, \mathbf{t}^{j-1}] 生成之后,调用图剩余部分的属性。
    • 定义 c1:=c\mathbf{c}^1 := \mathbf{c}cl+1:=\mathbf{c}^{l+1} := \varnothing
    • 条件调用图分布被分解为条件层分布的链式乘积: p(tc)=k=1lp(ck+1,tkck) p(\mathbf{t} | \mathbf{c}) = \prod_{k=1}^l p(\mathbf{c}^{k+1}, \mathbf{t}^k | \mathbf{c}^k)
    • 公式解释:
      • p(tc)p(\mathbf{t} | \mathbf{c}): 整个调用图 t\mathbf{t} 在给定初始条件 c\mathbf{c} 下的生成概率。
      • k=1l\prod_{k=1}^l: 表示从第一层到第 ll 层的乘积。
      • p(ck+1,tkck)p(\mathbf{c}^{k+1}, \mathbf{t}^k | \mathbf{c}^k): 在给定当前层条件 ck\mathbf{c}^k 的情况下,生成当前层边序列 tk\mathbf{t}^k 和下一层条件 ck+1\mathbf{c}^{k+1} 的联合概率。
      • 这个公式表达了模型通过迭代地、逐层地预测调用图,从用户提示开始,每一步生成当前层的边并更新条件以预测下一层的过程。
  3. 示例: 图 2 (images/2.jpg) 展示了这种递归生成过程。它从初始条件开始,生成第一层,然后根据第一层的结果生成新的条件,再生成第二层,以此类推。

4.2. 指令调优 (Instruction Tuning)

在预训练之后,进行监督微调 (Supervised Fine-tuning) 以增强模型根据用户指令生成调用图的能力。

  1. 损失计算: 与预训练不同,指令调优阶段会将初始调用图属性 c\mathbf{c}(等同于第一层条件 c1\mathbf{c}^1)从损失计算中排除,将其视为固定的提示。
  2. 用户指令: 用户可以提供额外的指令,例如要求生成高延迟或不常见通信类型的调用图。
  3. 程序化提示: 为了辅助推理,指令调优会补充程序化生成的提示,将数值和非语言属性(如应用程序 ID)转换为自然语言,这有助于 LLM 更好地理解和处理。

4.2.1. 中间指令 (Intermediate Instructions)

LLM 在根据当前层的边 tk\mathbf{t}^k 和条件 ck\mathbf{c}^k 生成一致的下一层条件 ck+1\mathbf{c}^{k+1} 时,常常会遇到困难,有时会违反物理约束(例如,分配给某一层比整个调用图更高的延迟)。为了解决这个问题,本文引入了自然语言推理步骤来强化约束的遵守。

  1. 灵感来源: 受到 Wei et al. (2022) 和 Nye et al. (2021) 研究的启发,这些研究表明 LLM 通过显式循序渐进的推理 (step-by-step reasoning) 可以改进。
  2. 具体步骤示例:
    • 计算剩余边数:根据 ck\mathbf{c}^k 中的 Num Edges 属性和 tk\mathbf{t}^k 中的边来计算。
    • 推导剩余深度:例如,Childsremainingdepth=currentremainingdepth1Child's remaining depth = current remaining depth - 1
  3. 插入位置: 这些中间指令在指令微调期间,被插入到 ck+1\mathbf{c}^{k+1} 之前。
  4. 作用: 它们充当一种“思维链 (Chain-of-Thought)”式的“便签 (scratchpads)”,帮助模型在生成下一层条件时进行逻辑检查和算术计算,确保严格遵守所需的结构。图 11 (images/11.jpg) 展示了这些步骤的示例。

5. 实验设置

本节将详细描述实验的数据集、评估指标和对比基线,以验证所提出方法的有效性。

5.1. 数据集

  • 来源: Alibaba v2022 数据集 (Luo et al., 2022)。
  • 规模: 使用了数据集中第一小时的调用图跟踪作为训练数据,包含 6434 个独特的微服务,来自超过 10 个集群。共 1.36 百万个微服务调用图样本,对应 1.1B 词元 (tokens)。
  • 数据划分: 10% 的样本被保留用于验证。
  • 数据特点:
    • 数据是 API 调用的集合,每个调用包含两个微服务之间的通信信息。
    • 服务 ID 是以 S_ 开头的九位数,微服务 ID 是以 MS_ 开头的五位数。
    • 通过 trace ID 字段构建调用图(具有相同 trace ID 的 API 调用属于同一个调用图)。
  • 数据预处理 (Preprocessing):
    • 移除缺失信息(例如,目的地微服务 ID 未知)的调用。
    • 移除不连通的调用图(例如,缺少边)。
    • 为了消除冗余,过滤掉所有 API 调用中具有相同结构和字段(例如,服务 ID、延迟)的调用图。
  • 隐私与匿名化: 数据集对服务和微服务名称进行了匿名化,以避免敏感信息泄露。但作者也指出,如果训练数据包含敏感信息,模型仍可能存在隐私泄露风险。
  • 训练数据分布: 预处理后的训练数据分布如 Figure 14 (images/7.jpg) 所示:
    • 上半部分 (Top): 展示了调用图的最大深度 (Max Depth) 的比例分布。
    • 下半部分 (Bottom): 展示了调用图的边数量 (Num Edges) 的比例分布。 这些分布反映了数据集中调用图的典型层次结构和复杂性。例如,大多数调用图的深度较小(如 1-3),边数量也相对有限。

5.2. 评估指标

5.2.1. 结构化推理准确率 (Structured Reasoning Accuracy)

  1. 概念定义: 衡量生成的跟踪是否准确匹配指定的边数 (num_edges) 和深度 (depth),并严格遵守所有结构约束。结构约束包括:有效的有向无环图 (DAG) 形成,以及通信的起始/结束时间的正确性。
  2. 数学公式: Accuracy=Number of correctly generated tracesTotal number of traces attempted \text{Accuracy} = \frac{\text{Number of correctly generated traces}}{\text{Total number of traces attempted}}
  3. 符号解释:
    • Number of correctly generated traces\text{Number of correctly generated traces}: 满足所有指定条件和结构约束的生成跟踪数量。
    • Total number of traces attempted\text{Total number of traces attempted}: 尝试生成的跟踪总数。
    • 正确生成意味着不仅要匹配 num_edgesdepth,还要满足 Appendix C 中详述的所有结构性约束(例如,有效的父子时间关系,节点 ID 的层次结构)。

5.2.2. KL 散度 (KL Divergence)

  1. 概念定义: Kullback-Leibler (KL) 散度是一种衡量两个概率分布之间差异的非对称度量。它量化了当使用一个近似分布来表示真实分布时所损失的信息量。KL 散度值越小,表示两个分布越相似。
  2. 数学公式: 对于离散概率分布 PPQQ,其 KL 散度定义为: DKL(PQ)=xXP(x)log(P(x)Q(x)) D_{\text{KL}}(P || Q) = \sum_{x \in \mathcal{X}} P(x) \log\left(\frac{P(x)}{Q(x)}\right)
  3. 符号解释:
    • P(x): 真实分布中事件 xx 的概率。
    • Q(x): 近似分布中事件 xx 的概率。
    • X\mathcal{X}: 所有可能事件的集合。
    • log\log: 自然对数。
    • 在本文中,KL 散度用于比较合成跟踪中流行调用(由 (Source, Destination, Communication type) 定义)的分布与训练数据中真实分布的相似性。

5.2.3. 重度访问者预测准确率 (Heavy-hitter Prediction Accuracy)

  1. 概念定义: 衡量模型预测在给定一系列调用图中,哪些微服务最常被触发(即“重度访问者”)的能力。这对于资源优化和异常检测至关重要。
  2. 数学公式: 通常计算为预测的 top-K 微服务集合与真实 top-K 微服务集合的重叠度,常用 Jaccard 相似度或简单的命中率。在本文中,它指的是在给定 KK 值下,合成跟踪与验证跟踪的 top-K 微服务有多少是相同的百分比。 Accuracy=Predicted Top-KTrue Top-KK×100% \text{Accuracy} = \frac{|\text{Predicted Top-K} \cap \text{True Top-K}|}{K} \times 100\%
  3. 符号解释:
    • Predicted Top-K\text{Predicted Top-K}: 模型预测的 KK 个最常被触发的微服务集合。
    • True Top-K\text{True Top-K}: 真实数据中 KK 个最常被触发的微服务集合。
    • |\cdot|: 集合的基数(元素数量)。

5.2.4. ROC AUC (Receiver Operating Characteristic - Area Under Curve)

  1. 概念定义: ROC AUC 是评估二分类模型性能的指标,尤其是在类别不平衡的情况下。ROC 曲线描绘了在不同分类阈值下,真阳性率 (True Positive Rate, TPR) 与假阳性率 (False Positive Rate, FPR) 之间的关系。AUC 值是 ROC 曲线下方的面积,取值范围在 0 到 1 之间。AUC 越大,模型性能越好。
  2. 数学公式: AUC 的计算通常是数值积分,没有简单的封闭形式。 AUC=01TPR(FPR1(x))dx \text{AUC} = \int_{0}^{1} \text{TPR}(\text{FPR}^{-1}(x)) dx 其中,TPR=TPTP+FN\text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}} (召回率/敏感度) 和 FPR=FPFP+TN\text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}} (1 - 特异度)。
  3. 符号解释:
    • TP\text{TP}: 真阳性 (True Positives),正确预测为正例的数量。
    • FN\text{FN}: 假阴性 (False Negatives),错误预测为阴性的正例数量。
    • FP\text{FP}: 假阳性 (False Positives),错误预测为阳性的阴性数量。
    • TN\text{TN}: 真阴性 (True Negatives),正确预测为阴性的数量。
    • TPR(FPR1(x))\text{TPR}(\text{FPR}^{-1}(x)): ROC 曲线的函数形式。
    • 在本文中,ROC AUC 用于评估异常检测任务中,模型基于合成数据训练后在真实数据上的性能。

5.2.5. 归一化推土机距离 (Normalized Earth Mover's Distance, EMD)

  1. 概念定义: 推土机距离 (EMD),也称为 Wasserstein 距离,是一种衡量两个概率分布之间“距离”的度量。它可以看作是将一个分布的“土堆”移动到另一个分布的形状所需的最小“工作量”。与 KL 散度不同,EMD 即使在分布没有重叠时也能提供有意义的距离,并且对分布的几何结构更敏感。归一化 EMD 将距离值缩放到 [0, 1] 范围,使其更易于比较。
  2. 数学公式: 对于两个概率分布 PPQQ,EMD 定义为: W1(P,Q)=infγΓ(P,Q)i,jγi,jd(xi,yj) W_1(P, Q) = \inf_{\gamma \in \Gamma(P, Q)} \sum_{i,j} \gamma_{i,j} d(x_i, y_j) 其中 Γ(P,Q)\Gamma(P, Q) 是所有可能的传输计划 γi,j\gamma_{i,j}(将多少“质量”从 PPxix_i 移动到 QQyjy_j)的集合,d(xi,yj)d(x_i, y_j)xix_iyjy_j 之间的距离。 归一化 EMD 通常是将计算出的 EMD 除以其最大可能值或一个参考值,使其在不同度量之间具有可比性。 Normalized EMD=EMD(P,Q)Max_EMD\text{Normalized EMD} = \frac{\text{EMD}(P, Q)}{\text{Max\_EMD}}
  3. 符号解释:
    • P, Q: 两个概率分布。
    • γi,j\gamma_{i,j}: 从 PPxix_i 移动到 QQyjy_j 的质量。
    • d(xi,yj)d(x_i, y_j): xix_iyjy_j 之间的“成本”或距离。
    • Max_EMD\text{Max\_EMD}: 用于归一化的最大可能 EMD 值。
    • 在本文中,归一化 EMD 用于比较合成跟踪与真实跟踪在分支(入度和出度)和响应时间分布上的相似性。

5.3. 对比基线

实验中,作者将自己的方法与多种结构化数据生成方法以及其他 LLM 进行了比较:

5.3.1. 结构化数据生成方法

  • GReaT (Borisov et al., 2023):
    • 描述: 一个 Llama-2 7B 模型,在调用图跟踪的表格数据格式上进行微调。这与本文方法中的基线 (baseline) 模型配置相同,即不使用递归生成和指令调优。
    • 特点: 代表了将 LLM 用于表格数据生成的一种直接方法,但未针对层次结构进行优化。
  • 概率模型 (Probabilistic Model):
    • 描述: 来自阿里巴巴的调用图生成器 (Luo et al., 2021)。该模型根据统计分布(如通信类型、每层子节点数量)对图结构进行采样。
    • 特点: 基于统计规则而非深度学习模型学习复杂模式,其生成过程更偏向随机性。
  • TVAE (Xu et al., 2019):
    • 描述: 一种基于 VAE 的表格数据生成器。由于它不能直接生成跟踪,因此用于比较边缘分布。
    • 特点: 适用于一般表格数据生成,但无法捕获调用图的层次结构。训练仅限于 100K 随机选择的样本。

5.3.2. LLM 对比

  • Llama-2 7B (Touvron et al., 2023):
    • 描述: 论文中方法的初始化模型。在下游任务评估中,将其作为未经特定领域训练的通用 LLM 基线。
    • 特点: 强大的通用语言模型,但在没有专门微调的情况下,预计在特定领域任务上表现不佳。
  • Llama-3.1 405B (Dubey et al., 2024):
    • 描述: 最先进的大型语言模型之一,用于下游任务评估,通过情境学习 (in-context learning) 提供任务描述和少量示例进行比较。
    • 特点: 具有极大规模和强大通用能力,但其在特定领域(如微服务跟踪)的性能,在没有指令调优的情况下,可能不如经过领域特定预训练和微调的较小模型。

5.4. 训练细节

  • 初始化模型: Llama-2 7B (Touvron et al., 2023)。
  • 微调技术: 使用 LoRA (Hu et al., 2022) 适配器对注意力层的查询 (query) 和键 (key) 投影矩阵进行微调。
    • rank=8rank = 8
    • alpha=16alpha = 16
    • dropout=0.1dropout = 0.1
  • 超参数 (Pre-Training & Instruction Tuning):
    • Optimizer: AdamW (Loshchilov and Hutter, 2017)
    • Learning rate: 3e-4,带有余弦调度器 (cosine scheduler)
    • Batch size: 64
    • Gradient clipping: 1.0
  • 超参数 (Downstream Task Fine-tuning):
    • Optimizer: AdamW
    • Learning rate: 1e-4,带有余弦调度器
    • Batch size: 2
    • Gradient clipping: 1.0
    • 冻结骨干模型: 对于预测任务,冻结骨干模型,只训练最后一个分类层。对于填充任务,使用与之前相同的 LoRA 适配器配置。
  • 推理设置: 除非另有说明,推理时使用 temperature=0.8temperature = 0.8topK=50top-K = 50 进行跟踪生成。
  • 指令调优数据集: 通过随机选择 5% 的训练图并重新格式化生成,指令调优持续了四个时期 (epochs)。
  • 属性丢弃: 除了服务 ID 字段始终保留 (pdrop=1p_{drop} = 1) 外,每个调用图属性都以 pdrop=0.9p_{drop} = 0.9 的概率随机丢弃。

6. 实验结果与分析

本节将详细阐述论文的实验结果,并深入分析这些结果如何支持本文提出的方法。

6.1. 结构化推理准确率 (Structured Reasoning Accuracy)

这项实验旨在展示递归生成和带有中间指令的指令调优如何增强 LLM 准确构建微服务调用图的能力。

6.1.1. 实验设置

  • 生成方式: 模型被要求生成具有指定 num_edges (边数) 和 depth (深度) 的跟踪。
  • 准确性定义: 如果生成的跟踪正确匹配指定的 num_edgesdepth,并且遵守所有结构约束(例如,有效的 DAG 形成,通信的适当开始/结束时间,详见 Appendix C),则被认为是准确的。
  • 测试范围: 对每个 (num_edges, depth) 对,在 1 <= num_edges <= 301<=depth<=61 <= depth <= 6 的范围内生成 50 个样本。
  • 对比基线:
    • Baseline (基线): Llama-2 7B 模型在文本编码的调用图上训练,不使用递归生成和中间指令调优。它遵循 GReaT (Borisov et al., 2023) 的方法,将调用图跟踪表示为表格数据格式。
    • Recursive (递归): Llama-2 7B 模型使用递归生成,但没有指令调优。
    • Recursive + Instruction (递归 + 指令): 本文提出的方法,结合了递归生成和指令调优。

6.1.2. 结果分析

6.1.2.1. 复杂性对准确率的影响 (Figure 3a, 3b)

Figure 10 (images/3.jpg) 的 Figure 3a 和 Figure 3b 展示了不同边数和深度下生成调用图的准确率。

  • 基线模型 (Baseline): 随着复杂性增加(即更多边或更大深度),基线模型的准确率显著下降。当边数超过 15 时,准确率降至 25% 以下;当深度超过 4 时,准确率接近零。这表明直接将调用图编码为扁平文本序列,LLM 难以处理其固有的复杂结构和约束。
  • 递归生成模型 (Recursive): 递归生成模型保持了更高的准确率,分别比基线模型高出约 30% 和 35%。这归因于模型将复杂的生成任务分解为更简单、更易于管理的子任务(逐层生成),从而更好地处理了层次结构。
  • Recursive + Instruction 模型: 结合了递归生成和指令调优的模型,在所有复杂性条件下都表现出最高的准确率。指令调优通过指导模型遵循特定的生成指令(例如,每层的边数),将模型准确率提高了 23% 到 36%。

6.1.2.2. 解码温度对准确率的影响 (Figure 3c)

Figure 10 (images/3.jpg) 的 Figure 3c 展示了解码温度对准确率的影响。

  • 趋势: 两种模型(基线和递归)的性能都随着温度的升高而下降,这符合预期,因为更高的温度会增加生成的多样性和随机性,但也可能导致更多的无效输出。
  • 性能差异: 即使在温度为 1 的情况下,递归模型仍然始终优于基线模型,保持约 10% 的更高准确率。这再次强调了递归生成在处理结构化数据方面的优势。
  • 指令调优的额外提升: 指令调优进一步提升了准确率,表明明确的指令有助于模型在更具探索性的生成设置下也能保持高结构化准确性。

6.1.2.3. 详细准确率热力图 (Figure 12)

Figure 12 (images/12.jpg) 提供了更细致的准确率热力图,其中每个网格点 (X, Y) 代表 XX 条边和最大深度 YY 的提示下的准确率。

  • 总体趋势: RecursiveRecursive + Instruction 方法在大多数 (# Edges, Depth) 组合上都提高了准确率。
  • 训练数据分布影响: 某些配置在 Figure 12b 和 Figure 12c 中显示出较低的准确率,这可能与训练数据集中特定边数和深度组合的分布有关。如果某些复杂的组合在训练数据中稀疏,模型可能难以对其进行准确生成。

6.1.2.4. 中间指令的消融研究 (Figure 13)

Figure 13 (images/13.jpg) 展示了在指令调优过程中移除中间指令对生成正确调用图结构准确率的影响。

  • 显著下降: 移除中间指令导致准确率在所有温度下平均下降约 13%。
  • 结论: 这证明了在指令调优过程中包含中间推理步骤(如计算剩余边数、推导剩余深度)对于 LLM 理解和遵守复杂生成约束的有效性。这些“思维链”式的辅助信息能够显著提升模型的结构化推理能力。

6.1.2.5. 模型大小对结果的影响 (Figure 14)

Figure 14 (images/14.jpg) 展示了不同参数数量的模型(Llama-3.2 1B, Llama-3.2 3B, Llama-2 7B, Llama-2 13B)在微服务调用图生成准确率上的表现。

  • 模型规模效应: 总体而言,参数数量越多的模型表现出更高的准确率,尤其是在 Figure 14c 中趋势更为明显。这表明模型容量的增加有助于更好地学习和捕捉复杂的图结构。
  • 深度任务表现: 随着提示深度的增加(例如,深度大于 4),模型规模效应尤为突出。例如,13B 模型在处理深度大于 4 的输入时,比 7B 模型提高了 20 个百分点。这说明大型模型在处理更深层次的递归结构时具有显著优势。

6.2. 真实与合成跟踪的相似性 (Similarity of Real and Synthetic Traces)

为了评估合成跟踪的质量,作者将其与验证集中的真实跟踪进行比较。生成 50K 个调用图,使用从验证集派生的提示,并测量它们与原始跟踪的相似性。

  • 分析方法: 评估由 (Source, Destination, Communication type) 定义的调用分布。
  • 结果 (Figure 4a - images/4.jpg):
    • LLM-based 方法(本文方法和 GReaT)的 KL 散度分别为 0.16 和 0.11,表明与训练数据高度相似。
    • 概率模型的 KL 散度显著更高,为 3.84,因为它基于随机采样。
    • TVAE 的 KL 散度为 0.74,介于概率模型和 LLM-based 方法之间,但仍不如 LLM-based 方法准确。
  • 结论: 本文方法和 GReaT 在捕捉真实世界通信模式方面表现出色,优于概率模型和 TVAE。

6.2.2. 重度访问者预测 (Heavy-hitter Prediction)

  • 分析方法: 衡量生成 top-K 重度访问微服务(即在调用图序列中最常被触发的微服务)的能力。选择 1K 验证跟踪,创建指令以指导本文模型和基线模型的跟踪生成,并通过比较合成跟踪和验证跟踪之间的 top-K 微服务来评估相似性。
  • 结果 (Figure 4b - images/4.jpg):
    • 本文方法 (Recursive + Instruction):K50K \leq 50 时,准确率超过 90%;当 K=500K = 500 时,准确率达到 65%。这表明本文方法能够稳健地捕捉并复现重度访问者的动态。
    • GReaT 方法: 表现也稳健,但在 KK 值较大时略逊于本文方法。作者认为这是由于 GReaT 缺乏生成复杂结构的能力(如 4.1 节所示),这影响了跟踪分布的准确性。
    • 概率模型: K=10K = 10 时准确率为 59%,K=500K = 500 时下降到 23%。这表明其在捕捉重度访问者模式方面远不如基于 LLM 的方法。
  • 结论: 本文方法在重度访问者预测方面表现最佳,证明其生成的跟踪在微服务管理任务中具有高度实用性。

6.2.3. 分支和延迟分布 (Branching and Latency Distributions)

  • 分析方法: 使用 10K 合成跟踪,比较微服务分支(入度和出度)和响应时间分布与真实跟踪的相似性。使用归一化推土机距离 (Normalized EMD) 作为相似性度量。
  • 结果 (Figure 16 - images/16.jpg):
    • 入度 (In-Degree): 每个微服务接收的通信数量分布。
    • 出度 (Out-Degree): 每个微服务发起的通信数量分布。
    • 响应时间 (Response Time): 每个通信完成所需时间的分布。
    • 在所有三个指标上,本文方法始终获得最接近训练数据的结果。
    • 与 GReaT 和概率模型相比,本文方法将 EMD 降低了 2.6 倍至 10 倍。
  • 结论: 本文方法在捕捉微服务交互的复杂性方面表现最佳,其生成的跟踪在分支结构和时间特性上与真实数据高度相似。

6.3. 合成数据作为 ML 驱动微服务管理的训练数据 (Synthetic Data as Training Data for ML-Driven Microservice Management)

这项实验评估了使用合成数据集替代稀缺的真实数据来训练用于微服务管理任务的机器学习模型的效果。机器学习模型在真实测试数据上进行评估,并与使用真实训练数据集时的原始性能进行比较。

6.3.1. 实验设置

  • 训练数据选择: 选择真实数据的一个子集,并标记相应的条件(例如,关键微服务)。从真实数据中提取指令,并使用它们来生成合成跟踪。
  • 无效调用图过滤: 在训练前,使用 4.1 节中相同的准确率指标过滤掉无效的调用图。
  • 模型训练与测试: 模型在 5K 合成调用图上训练,并在 2K 真实调用图上测试。所有实验使用相同的测试数据集。
  • 基线: 使用 GReaT 和阿里巴巴概率模型生成的合成跟踪作为基线。
  • 重复实验: 每个实验运行 5 次,改变随机种子,并取平均结果。

6.3.2. 关键组件提取 (Critical Component Extraction)

  • 任务: 使用 FIRM (Qiu et al., 2020) 预测关键组件(可能违反服务水平目标 SLO 的微服务)。FIRM 使用支持向量机 (SVM) 训练调用图中的延迟相关特征。
  • 评估: 训练 SVM 以检测来自两个流行应用程序(A 和 B)的关键组件。训练两个 SVM:一个使用真实数据,一个使用本文微调模型生成的合成数据。
  • 结果 (Figure 5 - images/5.jpg):
    • 使用本文方法生成的合成数据训练的 SVM,其准确率与使用真实数据训练的 SVM 几乎相同,差异小于 1.5 个百分点。
    • 使用基线模型生成的合成跟踪训练的 SVM,性能差距为 6 到 81 个百分点。
  • 结论: 本文方法生成的合成数据可以有效替代真实数据来训练关键组件提取模型,且性能损失极小。

6.3.3. 异常检测 (Anomaly Detection)

  • 任务: 使用 TraceVAE (Xie et al., 2023) 检测调用图中异常特征(如不规则的图结构或时间消耗)。TraceVAE 是一个变分自编码器 (VAE) 模型。
  • 评估: 训练 TraceVAE 模型,分别使用真实数据和本文方法生成的合成数据。
  • 结果 (Figure 5 - images/5.jpg):
    • 使用本文方法生成的合成跟踪训练的模型,其 ROC AUC 结果与使用真实数据训练的模型相当。
  • 结论: 本文方法生成的合成数据同样适用于训练异常检测模型,并能达到与真实数据相似的性能。

6.3.4. 其他分类任务 (Additional Classification Tasks)

  • 实验: 进行了另外两个分类任务的实验,使用微调的 Llama-2 7B 模型。
    1. 高延迟预测 (High Latency Prediction): 预测调用图是否具有高延迟(定义为每个服务延迟的 90 百分位数或更高)。
    2. 不常见通信预测 (Uncommon Communications Prediction): 预测调用图中直接邻居之间是否存在不常见通信模式。
  • 结果 (Table 2):
    • 高延迟: 真实数据训练准确率为 68.3%,合成数据训练为 67.1%。
    • 不常见通信: 真实数据训练准确率为 65.3%,合成数据训练为 62.5%。
  • 结论: 尽管使用合成跟踪训练的模型在准确率上略有下降,但它们仍然表现出相似的特性,可以有效地用于实际任务。

6.4. 遵循指令能力 (Instruction-following Capability)

本实验评估了指令调优模型准确生成具有特定属性(如高延迟、不常见通信类型)的调用图的能力,包括在训练数据中未出现的指令组合。

6.4.1. 实验设置

  • 指令调优数据集构建:
    • 高延迟 (High Latency): 指令要求调用图的延迟高于训练数据集的 90 百分位数 (p90)。示例:Build a call graph with high latency.
    • 不常见通信 (Uncommon Communications): 指令要求调用图层包含在训练数据中出现频率低于 10% 的通信。示例:Include an edge from (SRC) to (DEST) with (TYPE) communication type.
  • 测试组合指令: 在训练样本中不组合这些特定指令,以测试模型在推理时对新指令组合的响应能力。
  • 评估: 过滤 1K 验证指令,检查有多少生成的调用图符合定义的标准(例如,超过 p90 延迟)。与没有特定指令生成的输出进行比较。

6.4.2. 结果分析 (Figure 6 - images/6.jpg)

Figure 6 (images/6.jpg) 展示了高延迟和不常见通信的指令遵循准确率。

  • 高延迟指令: 模型在遵循高延迟指令方面表现良好。
  • 不常见通信指令: 模型在遵循不常见通信指令方面也表现出较高的准确率。
  • 指令组合: 即使模型没有明确地针对组合指令进行训练,它也能同时满足高延迟和不常见通信这两个条件,展现出强大的泛化能力。
  • 无指令基线: 在没有特定指令的情况下,模型可能会由于固有的偏差(例如,与服务 ID 或边数相关的偏差)而与期望结果一致,导致“无指令”情况下的准确率有时也较高。
  • 结论: 本文的指令调优方法显著提升了模型根据用户定制化需求生成特定类型跟踪数据的能力,这对于研究边缘案例和调试微服务管理技术非常有用。

本实验证明了预训练模型在执行与微服务跟踪相关的下游任务中的实用性,即使在部分信息或缺失数据的情况下。通过额外的微调,预训练模型适应每个下游任务。

6.5.1. 预测不常见通信 (Predicting Uncommon Communications)

  • 任务: 根据跟踪的前 10 行预测不常见通信模式(如 4.4 节定义)。这是一个二分类任务。
  • 训练: 使用 15K 样本对原始 Llama-2 7B 和本文预训练的模型进行微调。每个样本的提示包含真实跟踪的前 10 条边,以及表示后续跟踪部分是否存在不常见通信模式的二元标签。
  • 对比: 原始 Llama-2 7B 和通过情境学习 (in-context learning) 提供 16 个示例的 Llama-3.1 405B
  • 结果 (Figure 7 - images/6.jpg 的右侧图,左侧柱状图):
    • 原始 Llama-2 模型准确率仅为 60.6%,表明其缺乏识别不常见模式的足够训练。
    • Llama-3.1 405B 通过情境学习,准确率更低(45.6%),这表明即使是大型通用模型,在没有领域特定训练的情况下也难以处理特定领域任务。
    • 本文模型准确率达到 76.8%,证明其在解释和基于部分跟踪数据进行预测方面的能力得到增强。
  • 结论: 经过领域预训练和微调后,本文模型在特定跟踪预测任务上显著优于通用 LLM。

6.5.2. 填充缺失数据 (Infilling Missing Data)

大规模跟踪日志中缺失数据很常见(例如,阿里巴巴的微服务调用图中有 67% 的跟踪包含缺失值)。本任务旨在微调模型以准确填充微服务调用图中缺失的数据。

6.5.2.1. 填充缺失属性 (Infilling a Missing Attribute)

  • 任务: 填充跟踪中缺失的属性值(例如,通信类型、目的地微服务)。这是一个多分类问题。
  • 训练: 构建了一个包含 1.2K 问题的训练数据集,每个问题包含一系列边,其中一个属性被标记为 [MISSING]
  • 评估: 在 6K 样本的测试数据集上进行评估。
  • 结果 (Figure 7 - images/6.jpg 的右侧图,中间柱状图):
    • 本文模型在预测正确属性方面的准确率超过 70%。
    • 显著优于基线模型(如原始 Llama-2)约 30% 到 40%。
  • 结论: 本文模型在填充微服务调用图中的缺失属性方面表现出强大的能力。

6.5.2.2. 填充连接两个层的缺失调用 (Infilling a Missing Call Connecting Two Layers)

  • 任务: 填充连接父层和子层之间的缺失边。
  • 训练: 数据集包含 1K 样本,每个样本代表一对父子层,其中缺失的连接边被标记为 [MISSING]
  • 评估: 在 5K 测试用例上生成正确的边,确保结束时间匹配或超过开始时间。
  • 结果 (Figure 7 - images/6.jpg 的右侧图,右侧柱状图):
    • 原始 Llama-2 模型准确率仅为 24%。
    • Llama-3.1 405B 达到 34%。
    • 本文模型保持了 66% 的高准确率。
  • 结论: 即使面对更复杂的任务,本文模型在填充缺失连接边方面也显示出鲁棒性,再次证明了其在处理结构化跟踪数据方面的优势。

6.6. 记忆化 (Memorization)

评估合成跟踪是否通过记忆训练数据生成,通过测量与训练数据结构和调用图属性完全匹配的跟踪百分比。

6.6.1. 实验设置

  • 分析对象: 4.1 节中生成的合成跟踪。
  • 度量: 计算合成跟踪中与训练数据具有相同调用图结构和边属性的比例。

6.6.2. 结果分析 (Figure 15 - images/15.jpg)

Figure 15 (images/15.jpg) 展示了记忆化合成跟踪的比例,随温度参数变化。

  • 基线方法 (Baseline): 记忆化水平相对较高,范围在 16% 到 24% 之间。这表明基线模型在生成时倾向于复现训练数据中的具体样本。
  • 本文方法 (Recursive 和 Recursive + Instruction): 记忆化水平显著降低,范围在 3% 到 5% 之间。
  • 结论: 递归生成方法不仅能生成更具结构性的跟踪,还能有效地最小化训练数据的记忆化,从而生成更多样化的合成跟踪。

7. 总结与思考

7.1. 结论总结

本文介绍了一种新颖的训练方法,旨在将预训练的大型语言模型 (LLM) 适配用于生成微服务跟踪图。该方法的核心在于递归调用图生成 (recursive call graph generation)指令调优 (instruction tuning)。通过将复杂的图生成任务分解为更简单的逐层步骤,并引入中间指令 (intermediate instructions) 来强化结构约束的遵守,模型能够生成高度准确且有效的微服务调用图。

实验结果表明:

  1. 优越的生成质量: 本文方法在生成准确、有效的调用图方面,以及在与真实跟踪的分布相似性方面,均显著优于现有基线方法。
  2. 替代真实数据的潜力: 合成生成的跟踪可以有效地替代真实数据,用于训练微服务管理任务(如关键组件提取和异常检测)中的机器学习模型,且性能损失极小。
  3. 强大的指令遵循能力: 指令调优增强了模型根据用户指定特征(如高延迟或不常见通信模式)生成特定图的能力,这对于测试特殊场景和边缘情况至关重要。
  4. 适应下游任务: 经过预训练的模型能够有效地适应并执行预测关键跟踪特征和填充缺失数据等下游任务,在这些任务中,其性能优于大型通用基础模型。

7.2. 局限性与未来工作

7.2.1. 递归方法对历史信息的丢弃

  • 局限性: 递归生成方法的一个主要缺点是,先前生成的边信息在传递给下一层生成步骤时被丢弃,只有前一层的条件信息被传递。虽然对于微服务调用图生成而言,直接邻居的影响最大,这种丢弃影响较小,但它限制了模型捕捉更长范围依赖和时间模式的能力。
  • 未来工作: 探索如何高效压缩历史跟踪信息,同时保留关键细节,以便在生成合成跟踪时能够基于压缩后的历史信息进行条件生成。这可能涉及时间序列调用图的建模。

7.2.2. 手动构建指令模板

  • 局限性: 目前的方法使用手动构建的指令模板,这可能未能充分发挥预训练 LLM 的潜力,并导致次优的生成质量。
  • 未来工作: 借鉴 Liu et al. (2024)、Gunasekar et al. (2023) 和 Li et al. (2024) 的方法,通过 LLM 生成输出的方式来多样化指令。结合领域特定知识,指导 LLM 生成对下游任务更有用和多样化的指令。

7.2.3. 适用范围的拓展

  • 局限性: 本文主要关注微服务调用图。虽然其他系统跟踪(如操作系统调用图)也具有相似的层次结构,但它们可能具有更大的深度和更多样化的节点/边类型。
  • 未来工作: 评估所提出的方法是否能有效应用于这些更复杂的系统跟踪,并探索可能需要的调整。

7.3. 个人启发与批判

7.3.1. 个人启发

  1. LLM 泛化能力的再验证: 这篇论文再次强调了大型语言模型 (LLM) 强大的泛化和领域适应能力。即使是针对高度结构化、非自然语言的计算机系统跟踪数据,LLM 经过适当的编码、预训练和微调,也能展现出卓越的生成能力,远超传统方法。这为将 LLM 应用于更多专业领域(如生物信息学、材料科学、工业控制系统)提供了新的思路。
  2. 结构化推理的重要性: 论文提出的“递归生成”和“中间指令”机制是其成功的关键。它揭示了对于复杂结构化数据的生成,简单地将数据扁平化输入 LLM 是不够的,需要设计更符合数据内在逻辑的生成策略,引导 LLM 进行多步、有约束的“思考”。这与 LLM 领域中“思维链 (Chain-of-Thought)”等技术异曲同工,强调了显式推理在解决复杂问题中的价值。
  3. 合成数据的高价值: 论文证明了高质量的合成数据可以有效替代真实数据,用于训练微服务管理任务的 ML 模型。这对于解决真实数据稀缺、隐私敏感或难以大规模获取的问题具有巨大意义。通过生成多样化、逼真的合成数据,可以加速系统开发、测试和优化,甚至用于模拟极端或罕见故障场景,从而提高系统的鲁棒性。
  4. LLM 在数据工程中的潜力: 除了作为生成器,本文还展示了微调后的 LLM 在数据预测和缺失数据填充等数据工程任务中的潜力。这表明 LLM 不仅是内容创造者,也可以是智能的数据助手,帮助处理和完善现有数据。

7.3.2. 批判与潜在改进

  1. 对“旧”信息丢弃的进一步思考: 论文提到了递归生成方法会丢弃先前生成的边缘信息,仅传递条件信息。虽然作者认为这对微服务调用图影响不大,但在某些复杂的、长依赖的系统跟踪中,这种信息丢失可能会导致生成的数据在全局一致性上存在缺陷。未来的研究可以探索更高级的记忆机制,例如:

    • 摘要式记忆: 不直接传递所有历史边,而是通过一个小型编码器或另一个 LLM 对历史信息进行压缩和摘要,生成一个固定大小的表示,作为额外上下文传递。
    • 图神经网络集成: 结合图神经网络 (GNN) 来显式地建模图结构和节点间的长距离依赖,LLM 负责生成文本特征,GNN 负责保持图的结构和拓扑一致性。
    • 结构化提示 (Structural Prompting): 设计一种能够编码历史图结构信息并将其作为结构化提示注入 LLM 的机制。
  2. 指令模板的自动化与优化: 手动构建指令模板虽然有效,但费时费力,且可能无法完全覆盖所有潜在的用户意图或领域知识。

    • LLM 自生成指令 (LLM-generated Instructions): 可以尝试用一个更强大的 LLM (如 GPT-4 或 Llama-3.1 405B 自身) 来生成更多样化、更细致的指令模板,甚至通过自我反思 (Self-reflection) 机制来优化这些指令,使其更具表达力和有效性。
    • 领域知识图谱集成: 结合微服务领域的知识图谱,自动生成与特定微服务、应用或故障模式相关的指令,实现更智能的定制化生成。
  3. 对“真实性”的深层验证: 论文在评估生成数据与真实数据的相似性时,使用了 KL 散度、EMD、重度访问者预测准确率等指标。这些是很好的统计性度量,但“真实性”有时还包含人类直观感受或特定场景下的行为模式。

    • 专家评估 (Expert Evaluation): 引入领域专家对合成跟踪进行盲测,评估其与真实跟踪的“手感”相似度,特别是在模拟异常行为或极端负载时。
    • 下游任务的更多样化验证: 除了 FIRM 和 TraceVAE,可以在更多元的微服务管理任务(如故障注入、性能预测、A/B 测试)中验证合成数据的有效性,以更全面地评估其实用性。
  4. 计算成本与可扩展性: LLM 的训练和推理成本高昂。虽然使用了 LoRA 这样的参数高效微调技术,但对于超大规模的微服务系统和长时间序列的跟踪生成,计算资源仍可能是一个挑战。

    • 轻量级 LLM 或蒸馏: 探索使用更轻量级的 LLM 进行微调,或将大型 LLM 的知识蒸馏到小型模型上,以降低部署成本。

    • 增量式生成与更新: 对于实时或近实时的跟踪生成需求,可能需要研究增量式生成或仅更新部分图结构的方法。

      总而言之,这篇论文为利用 LLM 生成复杂结构化系统跟踪开辟了新途径,其提出的递归生成和指令调优机制具有重要的启发意义。尽管存在一些局限性,但它为未来更智能、更高效的系统数据生成和管理奠定了坚实的基础。

相似论文推荐

基于向量语义检索推荐的相关论文。

暂时没有找到相似论文。