常见问题

关于 TimeGPT 的常见问题

目录

时间GPT

什么是 TimeGPT? TimeGPT 是第一个用于时间序列预测的基础模型。它仅使用历史值作为输入,就可以在各种领域为新的时间序列生成准确的预测。该模型像人类阅读句子一样,从左到右顺序“读取”时间序列数据。它查看过去数据的窗口,我们可以把它看作是“标记”,然后预测下一个会发生什么。这种预测基于模型识别的模式,并将其外推到未来。除了预测,TimeGPT 还支持其他与时间序列相关的任务,例如假设场景、异常检测等等。
TimeGPT 是基于大型语言模型(LLM)吗?

不,TimeGPT 并不是基于任何大型语言模型。虽然它遵循在大量数据集上训练大型变换器模型的相同原则,但其架构是专门设计用于处理时间序列数据,并已经经过训练以最小化预测误差。

如何开始使用 TimeGPT?

要开始使用 TimeGPT,您需要在这里注册一个账户。您将收到一封电子邮件,要求您确认注册。确认后,您将能够访问您的仪表板,其中包含您账户的详细信息。

TimeGPT的可访问性如何?使用成本是多少?

要更深入地了解TimeGPT,请参考研究论文。虽然模型架构的某些方面仍然保密,但TimeGPT的注册对所有人开放。新用户将获得$1,000美元的免费积分,之后的使用费用基于令牌消耗。有关更多详细信息,请参考定价和账单部分。

我该如何使用TimeGPT?
  • 通过 Python SDK

  • 通过 TimeGPT API。有关如何使用不同语言调用API的说明,请参阅 API 文档

这两种方法都需要您拥有一个 API 密钥,该密钥在注册时获得,并可以在您的仪表板的 API 密钥 下找到。

TimeGPT API 密钥

什么是API密钥?

API密钥是一个唯一的字符字符串,用作在使用Nixtla SDK时验证您的请求的密钥。它确保提交请求的人是有权限这样做的。

我在哪里可以获得API密钥? 注册后,您将收到一个API密钥,该密钥可以在您的仪表板中的API Keys下找到。请记住,您的API密钥是个人的,不应与任何人共享。
我该如何使用我的API密钥?

要将您的API密钥集成到开发工作流程中,请参考关于设置您的API密钥的教程。

我如何检查我的API密钥状态?

如果您想检查您的API密钥状态,可以使用NixtlaClient类的validate_api_key方法

nixtla_client = NixtlaClient(
    api_key = 'my_api_key_provided_by_nixtla'
)

nixtla_client.validate_api_key()

如果您的密钥验证正确,这将返回

INFO:nixtla.nixtla_client:愉快的预测!:),如果您有任何问题或需要支持,请发送电子邮件至 ops@nixtla.io

True
如果我的API密钥不验证该怎么办?

如果您验证API密钥时,它返回

False

  • 检查您的API密钥在您的仪表板上是否处于活动状态

  • 考虑您组织可能设置的任何防火墙。可能会有访问限制。如果是这样,您可以将我们的端点列入白名单。
    https://dashboard.nixtla.io/api 和 https://api.nixtla.io/

特性与功能

TimeGPT的输入是什么?

TimeGPT 接受以 长格式pandas 数据框,必须包含以下列:

  • ds(时间戳):时间戳格式为 YYYY-MM-DDYYYY-MM-DD HH:MM:SS
  • y(数值型):要预测的目标变量。

(可选地,您也可以传递没有 ds 列的 DataFrame,只要它具有 DatetimeIndex)

TimeGPT 还支持 分布式数据框,如 dasksparkray

TimeGPT能处理多个时间序列吗?

可以。有关如何同时预测多个时间序列的指导,请参阅多个序列教程。

TimeGPT支持使用外生变量进行预测吗?

是的。有关如何将外生变量纳入TimeGPT的说明,请参阅外生变量教程。具体而言,关于如何处理日历日期,您可以查看节假日和特殊日期教程。对于分类变量,请参考分类变量教程。

TimeGPT可以用于异常检测吗?

可以。要学习如何使用TimeGPT进行异常检测,请参阅异常检测教程。

TimeGPT 支持交叉验证吗?

是的。要了解如何使用 TimeGPT 进行交叉验证,请参考 交叉验证 教程。

Can TimeGPT be used to forecast historical data?

是的。要了解如何使用 TimeGPT 进行历史数据预测,请参阅 历史预测 教程。

TimeGPT 可以用于不确定性量化吗?

可以。有关更多信息,请查看 预测区间分位数预测 教程。

TimeGPT 可以处理大数据集吗?

可以。当处理包含数十万或数百万时间序列的大数据集时,我们建议使用分布式后端。TimeGPT 兼容多个 分布式计算框架,包括 SparkRayDask。只要使用分布式后端,TimeGPT 的 SDK 和 API 在数据集大小上没有限制。

TimeGPT可以用于有限/短数据吗?

TimeGPT 支持任意数量的数据来生成点预测,并能够仅通过每个序列的一个观测值进行结果生产。当使用诸如 levelfinetune_stepsX_df(外部变量)或 add_history 等参数时,根据数据的频率,可能需要额外的数据点。有关更多详细信息,请参阅数据要求教程。

TimeGPT允许的最大预测期限是多少?

虽然TimeGPT没有最大预测期限,但随着预测期限的增加,其性能会下降。当预测期限超过数据的季节长度(例如,对于每月数据超过12个月)时,您将收到以下消息:WARNING:nixtla.nixtla_client:指定的期限"h"超过了模型期限。这可能导致预测不够准确。请考虑使用更小的期限

有关详细信息,请参考时间序列中的长期预测的教程。

TimeGPT 能处理缺失值吗?

TimeGPT 不能处理缺失值或具有不规则时间戳的序列。有关更多信息,请参见 处理不规则时间戳的时间序列预测处理缺失值 教程。

我如何绘制TimeGPT预测?

NixtlaClient类具有一个plot方法,可以用于可视化预测。此方法仅在交互环境中有效,例如Jupyter笔记本,而在Python脚本中无法使用。

TimeGPT 是否支持 polars?

目前,TimeGPT 不支持 polars。

TimeGPT产生稳定的预测吗?

TimeGPT 的设计旨在实现稳定性,确保对于相同的输入数据产生一致的结果。这意味着,给定相同的数据集,模型将生成相同的预测。

微调

什么是微调?

TimeGPT 是在最大的公开可用时间序列数据集上训练的,涵盖了金融、零售、医疗等多个领域。这种全面的训练使 TimeGPT 能够在没有额外训练的情况下,为新的时间序列生成准确的预测,这种能力被称为零-shot学习。

虽然零-shot模型提供了一个稳固的基准,但通过微调,TimeGPT 的性能通常可以得到改善。在这个过程中,TimeGPT 模型使用您的特定数据集进行额外训练,从预训练参数开始。更新后的模型随后生成预测。您可以使用 NixtlaClient 类中的 forecast 方法中的 finetune_stepsfinetune_loss 参数来控制微调的训练迭代次数和损失函数。

有关如何应用微调的详细指南,请参阅 微调使用特定损失函数的微调 教程。

我需要对每个系列进行微调吗?

不,您不需要单独对每个系列进行微调。当使用 finetune_steps 参数时,模型会同时对数据集中的所有系列进行微调。这种方法采用交叉学习的方式,使模型能够同时从多个系列中学习,从而改善单个预测。

请记住,选择合适的微调步数可能需要一些反复尝试。随着微调步数的增加,模型会变得更加专注于您的数据集,但训练时间会更长,并且可能更容易过拟合。

我可以保存微调参数吗?

目前,无法保存微调参数以供后续使用。这意味着无论是使用Python SDK还是API,每次提交数据时都需要进行微调。

定价与账单

定价是如何运作的?

TimeGPT 采用统一费率的订阅定价结构。我们目前提供早期用户订阅计划的特别价格,并有 30 天的免费试用期。您可以随时取消订阅。

  • 每月 $99,最多可进行 10,000 次 API 调用
  • 每月 $300 增加高级支持。为优先支持、最佳实践指导和功能优先级提供专用的 Slack/Teams 通道。注册以获取我们的专家团队的专业建议和专属服务。

开始您的免费试用

有关 Azure 上 TimeGEN-1 的定价,请参见有关令牌计数的部分。

是否有免费积分或折扣?

访问是通过我们的固定费用订阅计划。我们确实为学术研究提供一些积分。如果您想了解更多信息,请通过电子邮件与我们联系:ops@nixtla.io。

如何计算令牌?(AzureAI)

一个令牌对应于数据集的一个行。当使用外生变量时,一个令牌等于一行乘以额外列的数量,不包括 unique_idds 列。例如,在 TimeGPT 快速入门 中使用的 AirPassengers 数据集包含 144 行,对应于 144 个令牌。在 外生变量 教程中,按小时计算的电价数据集有 8,400 行。由于它包含 9 个外生变量,因此总共为 84,000 个令牌(8,400 行 x 10 列,包括目标)。此外,您还需要考虑外生变量的未来值,这些值在一个包含 120 行和 9 列的数据集中,增加了 1,080 个令牌(120 x 9)。因此总共为 85,080 个令牌。

此外,无论是否存在外生变量,您都必须在令牌计数中包括微调步骤和预测范围的数量,每个步骤或预测值代表一个额外的令牌。例如,如果预测范围是 24 而您有 5 个序列,这将增加 120 个额外的令牌(24 个预测值 x 5 个序列)。

对于高频数据,我们建议尽可能修剪输入。例如,在处理分钟级数据时,考虑将时间段修剪到最近一小时以降低成本。

在您的 仪表板使用情况 部分,您可以找到详细的令牌消耗历史记录,帮助您有效跟踪和管理使用情况。

什么被算作API调用?

API调用是向TimeGPT发出请求以执行某个操作,如预测或检测异常,或获取模型的元数据。

例如,如果我们使用timegpt-1模型预测每月数据,那么第一次执行此操作将产生2个API调用: - API调用 #1:获取模型的元数据 - API调用 #2:执行预测操作。 再次调用预测方法,使用相同的频率和模型仅算作1个API调用。

然而,如果我们在其他频率上进行预测,或者使用timegpt-1-long-horizon模型,则将产生2个API调用,因为必须在运行预测的基础上获取新的元数据。

我们还可以使用forecast方法中的add_history=True参数获取历史预测。这将导致2个API调用。

然后,如果API调用需要发送超过200MB的数据,API将返回错误,并要求您使用num_partitions参数来对请求进行分区。每个分区都将算作一个API调用,因此对于2个分区,将会有2个API调用。

如果我们执行交叉验证,无论窗口的数量多少,始终算作1个API调用。

示例 1. 一位用户第一次使用TimeGPT预测每日数据,使用timegpt-1模型。产生了多少个API调用?(: 2) 2. 上述同一用户在相同数据集上调用cross_validation方法,使用相同的模型。产生了多少个API调用?(: 1) 3. 该用户现在决定在更长的时间范围内进行预测,因此他们使用timegpt-1-long-horizon模型。产生了多少个API调用?(: 2) 4. 用户现在获得了一个非常大的数据集,频率为每日,且在预测时必须设置num_partitions=4。产生了多少个API调用?(: 4)

账单如何工作?

账单通过Stripe处理。我们与Stripe合作处理所有付款事务。您可以在您的仪表板中查看您的发票和付款历史,在账单部分。

隐私与安全

你如何确保我的数据的隐私和安全?

在Nixtla,我们非常重视您的隐私和安全。为了确保您充分了解我们关于您数据的政策,请参考以下文件:

此外,我们目前正在开发一个自托管版本的TimeGPT,专门针对企业数据的独特安全需求。此版本目前处于测试阶段。如果您有兴趣了解这个选项,请通过ops@nixtla.io与我们联系。

故障排除

以下部分包含一些常见的错误和警告

错误信息:无效的 API 密钥
ApiError: status_code: 401, body: {'data': None, 'message': '无效的 API 密钥', 'details': '找不到密钥', 'code': 'A12', 'requestID': 'E7F2BBTB2P', 'support': '如果您有问题或需要支持,请发送电子邮件至 ops@nixtla.io'}

解决方案: 当您的 TimeGPT API 密钥无效或未正确设置时,会出现此错误。请使用 validate_api_key 方法来验证密钥,或确保它是从您的 仪表板API 密钥 部分正确复制的。

错误信息:请求过多
ApiError: status_code: 429, body: {'data': None, 'message': '请求过多', 'details': '您需要添加支付方式才能继续使用API,请从 https://dashboard.nixtla.io 添加', 'code': 'A21', 'requestID': 'NCJDK7KSJ6', 'support': '如果您有任何问题或需要支持,请发送邮件至 ops@nixtla.io'}

解决方案: 当您耗尽了免费积分时,会发生此错误,您需要添加支付方式才能继续使用 TimeGPT。您可以在您的 仪表板账单 部分添加支付方式。

错误信息:WriteTimeout

解决方案: 如果您遇到 WriteTimeout 错误,这意味着请求已超过允许的处理时间。处理大型数据集时,这是一个常见问题。要解决此问题,请考虑在 NixtlaClient 类的 forecast 方法 中增加 num_partitions 参数,或者使用分布式后端(如果尚未使用的话)。

额外支持

如果您有任何其他问题或需要支持,请通过以下方式联系:

  • 在 GitHub 上打开一个 问题,以询问技术问题或报告错误。
  • 发送电子邮件至 ops@nixtla.io 以获得一般咨询或支持。
  • 加入我们的 Slack 社区,与我们的团队和预测社区进行互动。

Give us a ⭐ on Github