常见问题
关于 TimeGPT 的常见问题
目录
时间GPT
什么是 TimeGPT?
TimeGPT 是第一个用于时间序列预测的基础模型。它仅使用历史值作为输入,就可以在各种领域为新的时间序列生成准确的预测。该模型像人类阅读句子一样,从左到右顺序“读取”时间序列数据。它查看过去数据的窗口,我们可以把它看作是“标记”,然后预测下一个会发生什么。这种预测基于模型识别的模式,并将其外推到未来。除了预测,TimeGPT 还支持其他与时间序列相关的任务,例如假设场景、异常检测等等。
TimeGPT 是基于大型语言模型(LLM)吗?
不,TimeGPT 并不是基于任何大型语言模型。虽然它遵循在大量数据集上训练大型变换器模型的相同原则,但其架构是专门设计用于处理时间序列数据,并已经经过训练以最小化预测误差。
如何开始使用 TimeGPT?
要开始使用 TimeGPT,您需要在这里注册一个账户。您将收到一封电子邮件,要求您确认注册。确认后,您将能够访问您的仪表板,其中包含您账户的详细信息。
TimeGPT的可访问性如何?使用成本是多少?
要更深入地了解TimeGPT,请参考研究论文。虽然模型架构的某些方面仍然保密,但TimeGPT的注册对所有人开放。新用户将获得$1,000美元的免费积分,之后的使用费用基于令牌消耗。有关更多详细信息,请参考定价和账单部分。
我该如何使用TimeGPT?
通过 Python SDK
通过
TimeGPTAPI。有关如何使用不同语言调用API的说明,请参阅 API 文档
API 密钥 下找到。
TimeGPT API 密钥
什么是API密钥?
API密钥是一个唯一的字符字符串,用作在使用Nixtla SDK时验证您的请求的密钥。它确保提交请求的人是有权限这样做的。
我该如何使用我的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-DD或YYYY-MM-DD HH:MM:SS。y(数值型):要预测的目标变量。
(可选地,您也可以传递没有 ds 列的 DataFrame,只要它具有 DatetimeIndex)
TimeGPT 还支持 分布式数据框,如 dask、spark 和 ray。
TimeGPT能处理多个时间序列吗?
可以。有关如何同时预测多个时间序列的指导,请参阅多个序列教程。
TimeGPT支持使用外生变量进行预测吗?
是的。有关如何将外生变量纳入TimeGPT的说明,请参阅外生变量教程。具体而言,关于如何处理日历日期,您可以查看节假日和特殊日期教程。对于分类变量,请参考分类变量教程。
TimeGPT可以用于异常检测吗?
可以。要学习如何使用TimeGPT进行异常检测,请参阅异常检测教程。
TimeGPT 支持交叉验证吗?
是的。要了解如何使用 TimeGPT 进行交叉验证,请参考 交叉验证 教程。
Can TimeGPT be used to forecast historical data?
是的。要了解如何使用 TimeGPT 进行历史数据预测,请参阅 历史预测 教程。
TimeGPT 可以处理大数据集吗?
可以。当处理包含数十万或数百万时间序列的大数据集时,我们建议使用分布式后端。TimeGPT 兼容多个 分布式计算框架,包括 Spark、Ray 和 Dask。只要使用分布式后端,TimeGPT 的 SDK 和 API 在数据集大小上没有限制。
TimeGPT可以用于有限/短数据吗?
TimeGPT 支持任意数量的数据来生成点预测,并能够仅通过每个序列的一个观测值进行结果生产。当使用诸如 level、finetune_steps、X_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_steps 和 finetune_loss 参数来控制微调的训练迭代次数和损失函数。
有关如何应用微调的详细指南,请参阅 微调 和 使用特定损失函数的微调 教程。
我需要对每个系列进行微调吗?
不,您不需要单独对每个系列进行微调。当使用 finetune_steps 参数时,模型会同时对数据集中的所有系列进行微调。这种方法采用交叉学习的方式,使模型能够同时从多个系列中学习,从而改善单个预测。
请记住,选择合适的微调步数可能需要一些反复尝试。随着微调步数的增加,模型会变得更加专注于您的数据集,但训练时间会更长,并且可能更容易过拟合。
我可以保存微调参数吗?
目前,无法保存微调参数以供后续使用。这意味着无论是使用Python SDK还是API,每次提交数据时都需要进行微调。
定价与账单
定价是如何运作的?
TimeGPT 采用统一费率的订阅定价结构。我们目前提供早期用户订阅计划的特别价格,并有 30 天的免费试用期。您可以随时取消订阅。
- 每月 $99,最多可进行 10,000 次 API 调用
- 每月 $300 增加高级支持。为优先支持、最佳实践指导和功能优先级提供专用的 Slack/Teams 通道。注册以获取我们的专家团队的专业建议和专属服务。
有关 Azure 上 TimeGEN-1 的定价,请参见有关令牌计数的部分。
是否有免费积分或折扣?
访问是通过我们的固定费用订阅计划。我们确实为学术研究提供一些积分。如果您想了解更多信息,请通过电子邮件与我们联系:ops@nixtla.io。
如何计算令牌?(AzureAI)
一个令牌对应于数据集的一个行。当使用外生变量时,一个令牌等于一行乘以额外列的数量,不包括 unique_id 和 ds 列。例如,在 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合作处理所有付款事务。您可以在您的仪表板中查看您的发票和付款历史,在账单部分。
隐私与安全
故障排除
以下部分包含一些常见的错误和警告
错误信息:无效的 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 参数,或者使用分布式后端(如果尚未使用的话)。
额外支持
如果您有任何其他问题或需要支持,请通过以下方式联系:
Give us a ⭐ on Github