资料来源:火山引擎-开发者社区

近年来,多模态大语言模型(MLLM)发展迅速,并在图像、视频、音频等领域取得了突破性成果。然而,相较于这些研究较为成熟的模态,时间序列这一类型的数据与大模型结合的系统研究却较为匮乏。尽管已经有 TimeLLM 等工作尝试将 LLM 应用于时序任务,但这些研究大多局限于预测类任务,无法满足更复杂的理解与推理需求。

随着大语言模型在企业智能运维、金融分析等需要处理时序数据的应用场景中应用愈发广泛,“理解时间序列”的能力已成为多模态智能系统的一项基础能力。为此,我们提出了 ChatTS ,一个基于纯合成数据(synthetic data)微调的具备时间序列理解与推理能力的多模态大模型,该模型在多个真实和合成数据集上取得的显著效果提升。

ChatTS论文(ChatTS: Aligning Time Series with LLMs via Synthetic Data for Enhanced Understanding and Reasoning)成功入选数据库顶级会议 VLDB 2025。

论文 arXiv 链接:https://arxiv.org/pdf/2412.03104

ChatTS 代码和数据集:https://github.com/NetmanAIOps/ChatTS

模型参数:https://huggingface.co/bytedance-research/ChatTS-14B


背景


时间序列广泛存在于各类应用系统中,例如系统监控中的 CPU 使用率、电商业务中的访问请求数、金融交易市场中的股价波动等。理解这些时间序列的趋势、周期性、异常波动以及跨维度间的因果关系,是辅助人工或者自动分析的重要手段。传统的时间序列分析方法多基于统计模型或 AI 模型,而这些方法通常需要大量任务特定的训练、特定的数据预处理和结构化的输入输出,缺乏通用性和可解释性。
而 LLM 的强语言建模能力和泛化推理能力,为“用自然语言理解时间序列”提供了可能。然而,目前主流的 LLM 并不能直接处理原始的时间序列数组数据,现有工作要么将时间序列转成文本、图像输入,要么依赖 agent 工具进行间接分析,但都存在不同程度的限制。而目前 Time Series 和 LLM 结合的工作(TimeLLM,LLM4TS)等都局限于特定的时序任务,无法做问答和推理,从而难以接入现有的 LLM 工作流进行应用。
因此,我们思考,是否可以构建一种 “时间序列原生”的多模态 LLM,使其像处理图像一样,能够原生地理解时间序列的形状、波动与语义含义,并进行进一步的问答和推理?为此,我们提出了 ChatTS,一种原生支持多变量、时序、问答与推理的多模态大语言模型。ChatTS 引来了 HuggingFace 产品负责人 Victor Mustar,以及 SparkNLP 项目负责人 Maziyar Panahi 等人的转发和点赞:



 


挑战
构建时间序列多模态大模型面临诸多挑战:

  • 数据稀缺。与图文、语音等领域已有大规模的对齐数据集不同,时间序列与文本的对齐数据几乎不存在。
  • 时间序列具有高度结构性。时间序列包含的趋势、周期、局部波动、噪声等形态特征极其丰富,而要将这些复杂的数值特征准确地映射成语言,需要非常精准的对齐策略。
  • 时间序列输入往往是多变量、不同长度的。变量之间的协同波动与因果关系极具分析价值,但也加大了理解难度。
  • 现有的评估基准未覆盖时间序列多模态建模任务,这限制了模型的训练和验证。

因此,我们的目标是构建一个具备通用时序理解与推理能力的时间序列 MLLM,同时解决数据生成、建模、训练与评估全链条的问题。
现有方法
我们将现有尝试将 LLM 应用于时间序列的方式归为三类:文本化方法、图像化方法与 agent 方法。


文本化(Text-Based)方法最为直接,即将时间序列值编码成长文本输入 LLM。这类方法可保留精确信息,且模型能直接做数值计算,但存在显著的上下文长度限制,且无法处理多变量场景。图像化(Vision-Based)方法借助可视化图像(如时序折线图)输入视觉大模型,具备捕捉全局趋势与形状的优势,但面临图像分辨率不足、细节丢失的问题。Agent 方法(Agent-Based)通过将 LLM 与各种分析工具(如异常检测器、STL 分解器、相关性分析器等)结合,引导模型思考与调用工具,但该方式严重依赖工具准确性、推理链条极长且容易出现幻觉,不适合复杂分析任务。
因此,针对时序理解与推理任务,我们认为应构建一种新范式的 TS-MLLM(Time Series Multimodal LLM),能直接原生接收时间序列数组作为输入,并在此基础上学习如何对齐语言与数值波动,进而完成自然语言下的理解与推理任务。
我们的方法
为了突破训练数据匮乏这一核心瓶颈,我们从“合成”出发,设计了一整套基于属性控制的时间序列生成与对齐框架。该方法分为两个关键部分:合成数据生成与模型训练。
整体框架设计


面对时间序列与语言对齐数据的极度匮乏问题,我们从根本上摒弃了依赖真实数据标注的路径,而是选择“纯合成驱动”的方式,设计出一个端到端的数据生成、模型训练框架。该框架的核心思想是:将时间序列看作一种原生模态。通过对时间序列属性结构的拆解与控制,构建高度对齐的多模态训练数据;然后再用这些数据,去训练一个能够原生处理时间序列数组输入的多模态大语言模型。这一过程分为三个关键部分:属性驱动的数据生成、TSEvol 和原生多模态编码。
属性驱动(Attribute-Based)的时间序列生成


我们定义了一套详细的时间序列属性体系,覆盖四大类别:趋势 Trend(如稳定上升、阶段性变化)、周期 Seanonality(如正弦波、方波)、局部波动 Local Fluctuation(如尖峰、突降)、噪声 Noise(如平滑、高频抖动)等。这些属性具有明确的语义与参数,构成了“属性池”。每个时间序列由若干属性组合生成,并对应一段高质量自然语言描述。这种组合方式不仅确保了生成时间序列的多样性与真实性,还能精确对应语言文本的细节表达,避免了传统“图文描述不符”的问题。
为了增强场景适应性,我们引入了“指标采样器”,从真实的 AIOps、金融等领域中提取了数百个常见监控指标名,并通过 GPT 判断其物理属性适合的波动组合,确保合成数据具备现实世界合理性。
Time Series Evol-Instruct 问答扩展机制


仅有静态属性描述还不够,我们还需训练模型掌握复杂的提问、比较与推理能力。为此,我们设计了一个时间序列版本的 Evol-Instruct 框架,称为 TSEvol。该方法以一组基础 Q&A 为种子,依托已有attribute pools,不断演化出多种新问题形式。
演化策略包括:增加变量数量(单变量 → 多变量)、切换问题类型(从识别到比较、推理)、引入真实业务语境(如数据库性能故障场景)等。每一轮演化都能推动模型在理解复杂关系、使用自然语言总结规律、基于规则反推原因等方向逐步提升。
原生多模态模型设计


模型结构方面,我们基于 Qwen2.5-14B-Instruct,设计了一个时间序列原生感知的输入结构。时间序列被切分为小 patch,并用轻量级 MLP 编码,嵌入到原始文本上下文中。这种 patch-level 插入方式保留了时序的原始结构信息,同时使模型能在语言语境中定位具体的时间序列引用,实现上下文感知建模。


与之配套,我们设计了“数值保值归一化机制”。考虑到原始数值在实际业务中非常重要(如最大CPU使用率、磁盘IO等),我们在对序列进行0-1归一化时,同时将归一化参数以文本形式保留进 prompt,使模型既能学习序列形态,又不丢失绝对数值的意义。
模型训练:两阶段微调流程
为了让 ChatTS 具备原生的时间序列理解与推理能力,我们设计了一套基于全合成数据的两阶段训练流程,分别是大规模模态对齐训练(Alignment Training)与监督微调(SFT)。


在对齐训练阶段,我们使用由属性生成器构建的基础训练集,包括三类数据集:UTS(单变量全局与局部属性识别)、MTS-Shape(多变量趋势相关性)、MTS-Local(多变量局部波动相关性)。这些数据集采用固定模板与少量 GPT 生成文本进行组合构建,总规模为 10 万组问答样本,重点强化模型的对齐能力,尤其是多变量之间的形态关联与同步波动感知。
在监督微调阶段,我们引入了基于 TSEvol 演化生成的复杂问答数据,涵盖归纳、演绎、比较、因果等推理任务。同时,还引入一部分 Instruction-following 风格的数据,用于保持模型对格式指令的理解能力。这一阶段的目标是让模型能在对齐的基础上,具备灵活应对真实世界提问、进行深入分析与回答的能力。
此外,我们特别设计了一套保留数值含义的训练机制,在训练中加入了大量数值类子任务(如最大值/最小值/平均值、局部波动幅度、周期与趋势振幅等),强化模型对数值细节的精准识别能力。所有数据的时间序列长度在 64 到 1024 之间变化,模型结构采用全参数微调,训练平台为 8×A800 GPU,使用 DeepSpeed + LLaMA-Factory,底模为 QWen2.5-14B-Instruct。
实验效果


我们设计了一套全面的评估任务体系,覆盖单变量与多变量的趋势识别、周期分析、噪声判断、局部波动检测、相关性推理等任务,并在此基础上评估了模型在归纳、演绎、因果、多序列比较等多种推理任务中的表现。


我们一共收集了 3 个数据集用于评估。其中,数据集 A 包含了真实的时序序列,我们通过人工标注收集了 525 个问答题,包含了对齐和推理任务。数据集 B 是通过 synthetic time series generator 生成的评测集。MCQ2 是论文:《Language Models Still Struggle to Zero-shot Reason about Time Series》(https://arxiv.org/pdf/2404.11757)开源的数据集,用于评估比较推理的性能。
对齐任务评估:全方位精准识别时间序列属性


在对齐任务中,ChatTS 被要求识别时间序列中的趋势、周期、噪声、局部波动等属性,涵盖了分类任务(如波动类型)和数值预测任务(如周期长度、波动幅度)两类。我们在真实数据集与合成数据集上进行评测,结果显示,ChatTS 在所有指标上均大幅超越 GPT-4o 及其他基线方法,分类任务 F1 提升 46%–75%,数值任务相对准确率提升超过 80%。
在多变量任务上,ChatTS 优势更为显著。相比于文本方法因 prompt 长度受限导致的信息缺失、图像方法因分辨率不足难以精确判断多个指标走势,以及 Agent 方法因工具调用链冗长导致的性能不稳定,ChatTS 能一次性感知多个变量间的变化趋势与关系,做出准确判断,且 token 成本极低,显示出极强的实用性与高效性。
推理任务评估:从归纳到因果,全面提升时序理解深度


推理任务包括四类:归纳、演绎、因果、比较。实验结果显示,ChatTS 在所有推理任务上均优于基线,平均提升 25.8%。其中在归纳任务中,ChatTS 能准确结合时间序列与其现实物理含义之间的联系,展示出对业务语义的理解力;在因果任务中,模型能基于指标间波动幅度与先后顺序判断潜在故障传播路径,显示出类似专家的分析能力。
这也印证了 ChatTS 所采用的属性生成与 TSEvol 问答演化机制,在增强模型对时间序列物理含义与逻辑结构的理解能力上起到了核心作用。
合成数据有效性分析:不靠真实标注,依然超越大模型



 


我们通过消融实验,验证了属性生成机制与 TSEvol 对模型能力的提升效果。使用 GPT 生成的序列与问答数据替换属性生成数据后,模型在局部波动识别与数值预测方面性能大幅下降;去除 TSEvol 后,模型在因果与比较等复杂推理任务中表现明显退步。这表明,我们提出的两种机制在确保数据可控性、语义一致性与推理多样性方面,远超现有 GPT 生成方法,是推动多模态 LLM 理解时序的关键路径。
时间序列模态作用分析:时序模态带来的效果+成本双重优势


为了评估原生时间序列输入的重要性,我们将时间序列数组替换为文本 token 输入,并用相同数据训练文本-only 模型。结果显示,在多变量任务上,文本-only 模型几乎完全失效,出现严重幻觉和无法区分变量的情况;而在单变量任务上虽然在噪声识别任务上略有优势,但整体表现远不如 ChatTS。
即使在 Qwen2.5-32B 上使用相同数据训练文本-only 模型,最终效果也不如 ChatTS-14B,说明时间序列原生模态输入是性能提升的关键,且在推理任务中尤其有效。此外,时间序列模态相较于文本编码,在成本开销上也具有显著的优势,这进一步说明了时间序列模态对于时序分析的意义。
与 Agent 方法对比:原生时序能力是有效的


尽管 Agent 方法引入了多个专业分析工具,我们发现即便使用“完美工具”(即通过synthetic dataset的label,能够准确地控制agent tool的准确率),其在多变量任务与推理任务上仍不如 ChatTS。这是因为 Agent 方法在工具调用链中存在大量冗余思考、工具选择错误、响应格式错误等问题,容易造成失误。而 ChatTS 的一体化建模方式省去了调用逻辑,具备端到端的直接推理能力,整体效率更高、结果更稳定。我们发现,基于agent的模型在分析时间序列时,通常会出现错误工具调用(Error Tool Using)的问题。这是因为,大模型在做时序问答时,需要先根据自身的经验知识,来选择正确的工具提取time series的对应特征,并结合推理能力回答问题。然而实际场景中,问答的场景可能是多样化的,LLM只有能够准确地理解任务需求和解决方法的前提下,才能够尽可能地比较准确地调用这些tool。这也导致了其效果在与ChatTS的比较中处于劣势。
Case Studies


左右滑动查看更多
为了展示 ChatTS 在应对真实时间序列以及复杂问题下的能力,我们做了几个基于真实时间序列的 Case Studies。可以发现,ChatTS 不论是在基本的形态分析,还是在精确的数值分析(例如输出具体的局部波动高度)等方面,都表现出了较好的效果。此外,我们还可以将 ChatTS 与一些实际应用结合,例如基于多条时间序列,结合专家知识,对故障去进行初步的诊断和分析。
思考与展望
ChatTS 展示了一个全新的范式:通过可控合成数据,训练具备真实理解能力的多模态大模型。我们从零出发,仅使用合成数据训练出了一个在真实任务中表现优异的模型,这说明“数据生成 + 模态对齐”的范式具备高度潜力。当前,ChatTS 聚焦在时序分析的理解与推理任务,未来我们可以拓展其能力至更高阶任务(如预测、分类等),甚至结合外部知识库、专家规则,实现更强的决策支持能力。
此外,我们注意到 agent 方法尽管当前效果不佳,但在特定工具准确性极高的情况下具备一定潜力。因此,我们也思考是否可以将 ChatTS 作为 agent 的理解模块,再与精准工具协同配合,形成更强的混合型分析框架。此外,我们也考虑将DeepSeek-R1这样的深度思考能力引入ChatTS,进一步提升其时序推理能力。
总结
本文分享了我们提出的时间序列多模态大模型 ChatTS 的整体设计与实现思路。从数据稀缺问题出发,我们构建了一套基于属性的时间序列与文本对齐的合成数据体系,并结合进化式问答生成算法,完成了 ChatTS 的全流程训练。在多个评估任务中,ChatTS 均显著超越现有主流大模型,验证了“原生时间序列模态”结合“精准属性对齐”的有效性。我们相信,这一思路为时间序列与大模型的结合提供了新的方向,也为多模态智能系统提供了新的范式支撑。
团队
我们来自字节跳动的 ByteBrain 团队与清华大学NetMan实验室。ByteBrain团队致力于用 AI 技术,为各种基础架构与系统(数据库、云原生、大数据、网络等)降本增效、提升稳定性。

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

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

相关文章

WPF学习笔记(25)MVVM框架与项目实例

MVVM框架与项目实例一、MVVM框架1. 概述2. 核心组件与优势一、MVVM项目1.普通项目2. MVVM架构3. MVVM项目实例1. 项目准备2. LoginViewModel与Login2. MainWindowViewModel4. MVVM项目优化1. BaseViewModel2. RealyCommand3. 效果展示总结一、MVVM框架 1. 概述 官方文档&…

MySQL实操

## 基于MySQL#先启动MySQL服务#第一次登录[rootlocalhost ~]# mysql -uroot -P3306#密码登录[rootlocalhost ~]# mysql -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 9Server version: 8.0.41 Source dist…

ez_rust_writeup

一道简单的[[rust逆向]] #rust逆向 #位运算 题目信息 文件名:ezrust.exe 题目附件:https://wwfj.lanzoul.com/iczMR30k5j4h 密码:bueq 题目分析 1. 初步分析 这是一道Rust编写的逆向题目。通过IDA分析可以看到,这是一个典型的flag验证程序。 …

【QT】-隐式转换 explicit用法

通俗易懂的解释:隐式转换 vs 显式转换 什么是隐式转换? 隐式转换就是编译器偷偷帮你做的类型转换,你甚至都没意识到它发生了。 例子: cpp 运行 double x = 5; // 隐式:int → double(5 变成 5.0) int y = x * 2.5; // 隐式:double → int(截断小数部分) 构造函数的隐…

Django核心知识点详解:JSON、AJAX、Cookie、Session与用户认证

1. JSON数据格式详解1.1 什么是JSON?JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有以下特点:独立于语言,几乎所有编程语言都支持易于人阅读和编写易于机器解析和生成基于文本&#xff…

[特殊字符] Python 实战 | 批量统计中文文档词频并导出 Excel

本文展示如何用 Python 脚本: 批量读取文件夹中的多篇中文文档; 用 jieba 分词并统计词频(过滤停用词与单字符); 将各文档词频输出为对应 Excel 文件; 是文本分析、内容审查、报告编写中的实用技巧。 &…

共享打印机(详细操作+常见问题:需输入用户名密码、无法连接等)

文章目录一、设置打印机共享的准备工作二、Windows系统下打印机共享设置1. 启用主机打印机共享2. 客户端添加共享打印机三、我所遇到的问题及解决方法客户机遇到输入用户名、密码错误代码 0x0000011b一、错误代码 0x0000011b 的含义二、解决方法添加打印机没成功其他问题此次打…

在 Windows 系统上配置 [go-zero](https://go-zero.dev) 开发环境教程

💻 在 Windows 系统上配置 go-zero 开发环境教程 本教程将详细介绍如何在 Windows 系统上配置 go-zero 微服务框架的开发环境,包括依赖安装、路径配置、常见问题等。 🧱 一、前置环境安装 1. 安装 Go 下载地址:https://go.dev/…

开源=白嫖?

国内有一个非常浓重的思想,开源,开源就是免费,就是白嫖,就是不花钱,白给。那么什么是开源?“源代码”是软件中大多数计算机用户从未见过的部分;它是计算机程序员可以操纵的代码,以改变一个软件(…

2048-控制台版本

2048控制台版 文章目录2048控制台版实现效果:在这里插入图片描述库函数使用:初始化变量功能函数实现:状态判断函数int Judge();数字生成函数 bool CtreateNumber()打印游戏界面 void…

提取出Wallpaper Engine壁纸的mpkg类静态壁纸

github 地址 https://github.com/notscuffed/repkg先下载软件2853…26目录这样获取有的直接mp4格式,就不能用这方法准备好后 cmd 进入repkg目录 执行 repkg extract ./294...333/scene.pkg

AI健康小屋“15分钟服务圈”:如何重构社区健康生态?

AI健康小屋作为“15分钟服务圈”的核心载体,通过技术赋能与场景重构,正推动社区健康生态从被动治疗向主动预防、从单一服务向全周期管理转型。那我们应该如何重构社区健康生态呢?服务模式创新1.全时段覆盖AI健康小屋通过分时段服务满足不同群…

[netty5: WebSocketFrame]-源码分析

WebSocketFrame WebSocketFrame 是 Netty 中用于表示 WebSocket 消息帧的抽象基类,封装了帧的内容、分片标志和扩展位信息,供各类具体帧(如文本、二进制、控制帧)继承使用。 public abstract class WebSocketFrame extends Buffer…

【加解密与C】非对称加解密(三)ECC椭圆曲线

ECC椭圆曲线的基本概念椭圆曲线密码学(Elliptic Curve Cryptography,ECC)是一种基于椭圆曲线数学的公钥密码体制。与传统的RSA相比,ECC在相同安全级别下使用更短的密钥,计算效率更高,适用于资源受限的环境。…

力扣网编程150题:加油站(贪心解法)

一. 简介 前面一篇文章使用暴力解法来解决力扣网150 题目:加油站。文章如下: 力扣网编程150题:加油站(暴力解法)-CSDN博客 暴力解法就是遍历了所有元素作为起始点的可能,算法时间复杂度为 O(n*n)&#x…

windwos 设置redis长久密码不生效

1、设置长久密码redis.windows.conf 文件修改对应的设置密码2、启动时设置对应的加载配置文件

物联网(IoT)领域存在多种协议

物联网(IoT)领域存在多种协议,主要是因为不同的应用场景对通信的需求差异很大,包括实时性、带宽、功耗、设备兼容性、安全性等。以下从协议多样性的原因和你提到的具体协议(如 dc3-driver-* 模块)展开说明&…

二、encoders

文章目录一、batch_encoder (用于 BFV)1. 概述2. 数学原理3. 使用方法4. 代码示例二、ckks_encoder (用于 CKKS)在 1. bfv_basics.cpp 中,我们展示了如何使用BFV方案执行非常简单的计算。计算是在 plain_modulus 参数的模下执行的,并且 只使用了 BFV 明文…

数据一致性解决方案总结

数据一致性解决方案总结 我们在系统中,主要进行了数据冗余,那么就会带来数据一致性的问题。常见的数据一致性问题有:数据库主从同步延迟导致的读数据不一致;数据库主主之间数据的不一致;缓存和数据库之间的数据不一致。…

17.Spring Boot的Bean详解(新手版)

文章目录1. 什么是Bean?从零开始理解1.1 Bean的定义1.2 为什么需要Bean?1.3 Bean vs 普通对象的区别2. Spring容器:Bean的家2.1 什么是Spring容器?2.2 容器的工作流程3. Bean的声明方式详解3.1 使用Component及其专门化注解3.1.1 …