blob: 0d3351ed61bdea897efe6095aa51a544c0c61e9a [file]
<!doctype html>
<html lang="en-US" data-theme="light">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-rc.26" />
<meta name="theme" content="VuePress Theme Hope 2.0.0-rc.99" />
<style>
:root {
--vp-c-bg: #fff;
}
[data-theme="dark"] {
--vp-c-bg: #1b1b1f;
}
html,
body {
background: var(--vp-c-bg);
}
</style>
<script>
const userMode = localStorage.getItem("vuepress-theme-hope-scheme");
const systemDarkMode =
window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)").matches;
if (userMode === "dark" || (userMode !== "light" && systemDarkMode)) {
document.documentElement.setAttribute("data-theme", "dark");
}
</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"AINode","image":["https://iotdb.apache.org/img/AInode1.png","https://iotdb.apache.org/img/AINode-en.png","https://iotdb.apache.org/img/AINode-State-apache-en.png"],"dateModified":"2026-04-10T04:06:27.000Z","author":[]}</script><meta property="og:url" content="https://iotdb.apache.org/UserGuide/latest-Table/AI-capability/AINode_apache.html"><meta property="og:site_name" content="IoTDB Website"><meta property="og:title" content="AINode"><meta property="og:description" content="AINode AINode is a native IoTDB node that supports the registration, management, and invocation of time-series-related models. It comes with built-in industry-leading self-devel..."><meta property="og:type" content="article"><meta property="og:image" content="https://iotdb.apache.org/img/AInode1.png"><meta property="og:locale" content="en-US"><meta property="og:locale:alternate" content="zh-CN"><meta property="og:updated_time" content="2026-04-10T04:06:27.000Z"><meta property="article:modified_time" content="2026-04-10T04:06:27.000Z"><link rel="alternate" hreflang="zh-cn" href="https://iotdb.apache.org/zh/UserGuide/latest-Table/AI-capability/AINode_apache.html"><script async src="https://widget.kapa.ai/kapa-widget.bundle.js" data-website-id="2d37bfdd-8d98-40ba-9223-9d4f81bfb327" data-project-name="Apache IoTDB" data-project-color="#FFFFFF" data-button-z-index="1999" data-button-padding="4px" data-button-border-radius="4px" data-button-image-height="24px" data-button-image-width="20px" data-button-text-color="#9E2878" data-project-logo="https://iotdb.apache.org/img/logo.svg" data-button-position-right="16px" data-button-position-bottom="8px" data-button-height="56px" data-button-width="48px" data-button-text="Ask" data-modal-override-open-selector="#custom-ask-ai-button" data-modal-image-width="150px" data-modal-title="AI Docs" data-modal-title-color="#9E2878" data-deep-thinking-button-active-bg-color="#F6F7F8" data-deep-thinking-button-active-text-color="#9E2878" data-deep-thinking-button-active-hover-text-color="#9E2878" data-modal-disclaimer="This is a custom LLM for Apache IoTDB with access to all [documentation](iotdb.apache.org/docs/), [GitHub Open Issues, PRs and READMEs](github.com/apache/iotdb).&#10;&#10;
If you encounter <Error in verifying browser for feedback submission. Captcha token could not be obtained.> please ensure that you can access Google services." data-user-analytics-fingerprint-enabled="true" data-consent-required="true" data-consent-screen-disclaimer="By clicking <I agree, let's chat>, you consent to the use of the AI assistant in accordance with kapa.ai's [Privacy Policy](https://www.kapa.ai/content/privacy-policy). This service uses reCAPTCHA, which requires your consent to Google's [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms). By proceeding, you explicitly agree to both kapa.ai's and Google's privacy policies."></script><link rel="icon" href="/favicon.ico"><meta name="Description" content="Apache IoTDB: Time Series Database for IoT"><meta name="Keywords" content="TSDB, time series, time series database, IoTDB, IoT database, IoT data management, 时序数据库, 时间序列管理, IoTDB, 物联网数据库, 实时数据库, 物联网数据管理, 物联网数据"><meta name="baidu-site-verification" content="wfKETzB3OT"><meta name="google-site-verification" content="mZWAoRY0yj_HAr-s47zHCGHzx5Ju-RVm5wDbPnwQYFo"><script type="text/javascript">var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setDoNotTrack", true]);
_paq.push(["disableCookies"]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '56']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script><title>AINode | IoTDB Website</title><meta name="description" content="AINode AINode is a native IoTDB node that supports the registration, management, and invocation of time-series-related models. It comes with built-in industry-leading self-devel...">
<link rel="preload" href="/assets/style-JraSdRX4.css" as="style"><link rel="stylesheet" href="/assets/style-JraSdRX4.css">
<link rel="modulepreload" href="/assets/app-pmkzp6TS.js"><link rel="modulepreload" href="/assets/AINode_apache.html-CZZrHy01.js"><link rel="modulepreload" href="/assets/AINode-0-en-CP_5ojW_.js"><link rel="modulepreload" href="/assets/AInode1-DHdC6PUe.js"><link rel="modulepreload" href="/assets/AINode-en-BDsXDcQK.js"><link rel="modulepreload" href="/assets/AINode-State-apache-en-CO7rO2lL.js">
</head>
<body>
<div id="app"><!--[--><!--[--><!--[--><span tabindex="-1"></span><a href="#main-content" class="vp-skip-link sr-only">Skip to main content</a><!--]--><!--[--><div class="theme-container external-link-icon has-toc" vp-container><!--[--><header id="navbar" class="vp-navbar" vp-navbar><div class="vp-navbar-start"><button type="button" class="vp-toggle-sidebar-button" title="Toggle Sidebar"><span class="icon"></span></button><!--[--><a class="route-link vp-brand" href="/" aria-label="Take me home"><img class="vp-nav-logo" src="/logo.png" alt><!----><!----></a><!--]--></div><div class="vp-navbar-center"><!--[--><!--]--></div><div class="vp-navbar-end"><!--[--><!--[--><div id="docsearch-container" style="display:none;"></div><div class="docsearch-placeholder"><button type="button" aria-label="Search" aria-keyshortcuts="Control+k" class="DocSearch DocSearch-Button"><span class="DocSearch-Button-Container"><svg width="20" height="20" viewBox="0 0 24 24" aria-hidden="true" class="DocSearch-Search-Icon"><circle cx="11" cy="11" r="8" stroke="currentColor" fill="none" stroke-width="1.4"></circle><path d="m21 21-4.3-4.3" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key DocSearch-Button-Key--ctrl">Ctrl</kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--><div><button id="custom-ask-ai-button"> ✨ Ask AI </button></div><nav class="vp-nav-links"><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="Documentation"><!--[--><!---->Documentation<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/latest/QuickStart/QuickStart_apache.html" aria-label="v2.0.x"><!---->v2.0.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/V1.3.x/QuickStart/QuickStart_apache.html" aria-label="v1.3.x"><!---->v1.3.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/V1.2.x/QuickStart/QuickStart.html" aria-label="v1.2.x"><!---->v1.2.x<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/UserGuide/V0.13.x/QuickStart/QuickStart.html" aria-label="v0.13.x"><!---->v0.13.x<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><a class="auto-link external-link" href="https://cwiki.apache.org/confluence/display/IOTDB/System+Design" aria-label="Design" rel="noopener noreferrer" target="_blank"><!---->Design<!----></a></div><div class="vp-nav-item hide-in-mobile"><a class="route-link auto-link" href="/Download/" aria-label="Download"><!---->Download<!----></a></div><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="Community"><!--[--><!---->Community<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/About-the-Community.html" aria-label="About the Community"><!---->About the Community<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Development-Guide.html" aria-label="Development Guide"><!---->Development Guide<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Community-Partners.html" aria-label="Community Partners"><!---->Community Partners<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Communication-Channels.html" aria-label="Communication Channels"><!---->Communication Channels<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Events-and-Reports.html" aria-label="Events and Reports"><!---->Events and Reports<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/Community/Committers.html" aria-label="Committers"><!---->Committers<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="ASF"><!--[--><!---->ASF<!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/" aria-label="Foundation" rel="noopener noreferrer" target="_blank"><!---->Foundation<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/licenses/" aria-label="License" rel="noopener noreferrer" target="_blank"><!---->License<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/security/" aria-label="Security" rel="noopener noreferrer" target="_blank"><!---->Security<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/foundation/sponsorship.html" aria-label="Sponsorship" rel="noopener noreferrer" target="_blank"><!---->Sponsorship<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/foundation/thanks.html" aria-label="Thanks" rel="noopener noreferrer" target="_blank"><!---->Thanks<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://www.apache.org/events/current-event" aria-label="Current Events" rel="noopener noreferrer" target="_blank"><!---->Current Events<!----></a></li><li class="vp-dropdown-item"><a class="auto-link external-link" href="https://privacy.apache.org/policies/privacy-policy-public.html" aria-label="Privacy" rel="noopener noreferrer" target="_blank"><!---->Privacy<!----></a></li></ul></button></div></div></nav><div class="vp-nav-item"><div class="vp-dropdown-wrapper"><button type="button" class="vp-dropdown-title" aria-label="Select language"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon i18n-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="i18n icon" name="i18n" style="width:1rem;height:1rem;vertical-align:middle;"><path d="M379.392 460.8 494.08 575.488l-42.496 102.4L307.2 532.48 138.24 701.44l-71.68-72.704L234.496 460.8l-45.056-45.056c-27.136-27.136-51.2-66.56-66.56-108.544h112.64c7.68 14.336 16.896 27.136 26.112 35.84l45.568 46.08 45.056-45.056C382.976 312.32 409.6 247.808 409.6 204.8H0V102.4h256V0h102.4v102.4h256v102.4H512c0 70.144-37.888 161.28-87.04 210.944L378.88 460.8zM576 870.4 512 1024H409.6l256-614.4H768l256 614.4H921.6l-64-153.6H576zM618.496 768h196.608L716.8 532.48 618.496 768z"></path></svg><!--]--><span class="arrow"></span><ul class="vp-dropdown"><li class="vp-dropdown-item"><a class="route-link route-link-active auto-link" href="/UserGuide/latest-Table/AI-capability/AINode_apache.html" aria-label="English"><!---->English<!----></a></li><li class="vp-dropdown-item"><a class="route-link auto-link" href="/zh/UserGuide/latest-Table/AI-capability/AINode_apache.html" aria-label="简体中文"><!---->简体中文<!----></a></li></ul></button></div></div><div class="vp-nav-item hide-in-mobile"><button type="button" class="vp-color-mode-switch" id="color-mode-switch"><svg xmlns="http://www.w3.org/2000/svg" class="icon auto-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="auto icon" name="auto" style="display:none;"><path d="M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon dark-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="dark icon" name="dark" style="display:none;"><path d="M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" class="icon light-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="light icon" name="light" style="display:block;"><path d="M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"></path></svg></button></div><div class="vp-nav-item vp-action"><a class="vp-action-link" href="https://github.com/apache/iotdb" target="_blank" rel="noopener noreferrer" aria-label="GitHub"><svg xmlns="http://www.w3.org/2000/svg" class="icon github-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="github icon" name="github" style="width:1.25rem;height:1.25rem;vertical-align:middle;"><path d="M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"></path></svg></a></div><!--]--><button type="button" class="vp-toggle-navbar-button" aria-label="Toggle Navbar" aria-expanded="false" aria-controls="nav-screen"><span><span class="vp-top"></span><span class="vp-middle"></span><span class="vp-bottom"></span></span></button></div></header><!----><!--]--><!----><div class="toggle-sidebar-wrapper"><span class="arrow start"></span></div><aside id="sidebar" class="vp-sidebar" vp-sidebar><!--[--><p class="vp-sidebar-header iotdb-sidebar-header"><span class="vp-sidebar-title">IoTDB User Guide (V2.0.x)</span></p><div class="sidebar-top-wrapper"><ul class="switch-list"><li class="switch-type">Tree</li><li class="switch-type switch-active">Table</li></ul><div class="help-icon-wrapper"><div class="help-icon"><span>Description</span></div></div></div><!--]--><ul class="vp-sidebar-links"><li><section class="vp-sidebar-group"><p class="vp-sidebar-header"><!----><span class="vp-sidebar-title">IoTDB User Guide (V2.0.x)</span><!----></p><ul class="vp-sidebar-links"></ul></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">About IoTDB</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Background knowledge</span><span class="vp-arrow end"></span></button><!----></section></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/latest-Table/QuickStart/QuickStart_apache.html" aria-label="Quick Start"><!---->Quick Start<!----></a></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Installation and Deployment</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Basic Functions</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Advanced Features</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable active" type="button"><!----><span class="vp-sidebar-title">AI capability</span><span class="vp-arrow down"></span></button><ul class="vp-sidebar-links"><li><a class="route-link route-link-active auto-link vp-sidebar-link active" href="/UserGuide/latest-Table/AI-capability/AINode_apache.html" aria-label="AINode(V2.0.5/6)"><!---->AINode(V2.0.5/6)<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/latest-Table/AI-capability/AINode_Upgrade_apache.html" aria-label="AINode(V2.0.8)"><!---->AINode(V2.0.8)<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/latest-Table/AI-capability/TimeSeries-Large-Model.html" aria-label="TimeSeries Large Model(V2.0.5/6)"><!---->TimeSeries Large Model(V2.0.5/6)<!----></a></li><li><a class="route-link auto-link vp-sidebar-link" href="/UserGuide/latest-Table/AI-capability/TimeSeries-Large-Model_Upgrade_apache.html" aria-label="TimeSeries Large Model(V2.0.8)"><!---->TimeSeries Large Model(V2.0.8)<!----></a></li></ul></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Tools System</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">API</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Ecosystem Integration</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">SQL Manual</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Technical Insider</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">Reference</span><span class="vp-arrow end"></span></button><!----></section></li><li><section class="vp-sidebar-group"><button class="vp-sidebar-header clickable" type="button"><!----><span class="vp-sidebar-title">FAQ</span><span class="vp-arrow end"></span></button><!----></section></li></ul><!----></aside><!--[--><main id="main-content" class="vp-page"><!--[--><!----><!----><nav class="vp-breadcrumb disable"></nav><div class="vp-page-title"><h1><!---->AINode</h1><div class="page-info"><!----><!----><span class="page-date-info" aria-label="Writing Date📅" data-balloon-pos="up"><svg xmlns="http://www.w3.org/2000/svg" class="icon calendar-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="calendar icon" name="calendar"><path d="M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"></path></svg><span data-allow-mismatch="text">7/4/25</span><meta property="datePublished" content="2025-07-04T15:38:44.000Z"></span><!----><span class="page-reading-time-info" aria-label="Reading Time⌛" data-balloon-pos="up"><svg xmlns="http://www.w3.org/2000/svg" class="icon timer-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="timer icon" name="timer"><path d="M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"></path></svg><span>About 9 min</span><meta property="timeRequired" content="PT9M"></span><!----><!----></div><hr></div><!----><div class="" vp-content><!----><div id="markdown-content"><h1 id="ainode" tabindex="-1"><a class="header-anchor" href="#ainode"><span>AINode</span></a></h1><p>AINode is a native IoTDB node that supports the registration, management, and invocation of time-series-related models. It comes with built-in industry-leading self-developed time-series large models, such as the Timer series developed by Tsinghua University. These models can be invoked through standard SQL statements, enabling real-time inference of time series data at the millisecond level, and supporting application scenarios such as trend forecasting, missing value imputation, and anomaly detection for time series data.</p><blockquote><p>Available since V2.0.5</p></blockquote><p>The system architecture is shown below:</p><div style="text-align:center;"><img src="/img/AINode-0-en.png" style="zoom:50 percent;"></div><p>The responsibilities of the three nodes are as follows:</p><ul><li><strong>ConfigNode:</strong><ul><li>Manages distributed nodes and handles load balancing across the system.</li></ul></li><li><strong>DataNode:</strong><ul><li>Receives and parses user SQL queries.</li><li>Stores time-series data.</li><li>Performs preprocessing computations on raw data.</li></ul></li><li><strong>AINode:</strong><ul><li>Manages and utilizes time-series models (including training/inference).</li><li>Supports deep learning and machine learning workflows.</li></ul></li></ul><h2 id="_1-advantageous-features" tabindex="-1"><a class="header-anchor" href="#_1-advantageous-features"><span>1. Advantageous features</span></a></h2><p>Compared with building a machine learning service alone, it has the following advantages:</p><ul><li><p><strong>Simple and easy to use</strong>: no need to use Python or Java programming, the complete process of machine learning model management and inference can be completed using SQL statements. Creating a model can be done using the CREATE MODEL statement, and using a model for inference can be done using the SELECT * FROM FORECAST (...) statement, making it simpler and more convenient to use.</p></li><li><p><strong>Avoid Data Migration</strong>: With IoTDB native machine learning, data stored in IoTDB can be directly applied to the inference of machine learning models without having to move the data to a separate machine learning service platform, which accelerates data processing, improves security, and reduces costs.</p></li></ul><figure><img src="/img/AInode1.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><ul><li><strong>Built-in Advanced Algorithms</strong>: supports industry-leading machine learning analytics algorithms covering typical timing analysis tasks, empowering the timing database with native data analysis capabilities. Such as: <ul><li><strong>Time Series Forecasting</strong>: learns patterns of change from past time series; thus outputs the most likely prediction of future series based on observations at a given past time.</li><li><strong>Anomaly Detection for Time Series</strong>: detects and identifies outliers in a given time series data, helping to discover anomalous behaviour in the time series.</li><li><strong>Annotation for Time Series (Time Series Annotation)</strong>: Adds additional information or markers, such as event occurrence, outliers, trend changes, etc., to each data point or specific time period to better understand and analyse the data.</li></ul></li></ul><h2 id="_2-basic-concepts" tabindex="-1"><a class="header-anchor" href="#_2-basic-concepts"><span>2. Basic Concepts</span></a></h2><ul><li><strong>Model</strong>: A machine learning model that takes time series data as input and outputs analysis results or decisions. Models are the basic management units of AINode, supporting model operations such as creation (registration), deletion, query, and inference.</li><li><strong>Create</strong>: Load externally designed or trained model files/algorithms into AINode for unified management and usage by IoTDB.</li><li><strong>Inference</strong>: Use the created model to complete time series analysis tasks applicable to the model on specified time series data.</li><li><strong>Built-in Capabilities</strong>: AINode comes with machine learning algorithms or self-developed models for common time series analysis scenarios (e.g., forecasting and anomaly detection).<br><img src="/img/AINode-en.png" alt="" loading="lazy"></li></ul><h2 id="_3-installation-and-deployment" tabindex="-1"><a class="header-anchor" href="#_3-installation-and-deployment"><span>3. Installation and Deployment</span></a></h2><p>The deployment of AINode can be found in the document <a class="route-link" href="/UserGuide/latest-Table/Deployment-and-Maintenance/AINode_Deployment_apache.html">AINode Deployment</a>.</p><h2 id="_4-usage-guide" tabindex="-1"><a class="header-anchor" href="#_4-usage-guide"><span>4. Usage Guide</span></a></h2><p>AINode provides model creation and deletion functions for time series models. Built-in models do not require creation and can be used directly.</p><h3 id="_4-1-registering-models" tabindex="-1"><a class="header-anchor" href="#_4-1-registering-models"><span>4.1 Registering Models</span></a></h3><p>Trained deep learning models can be registered by specifying their input and output vector dimensions for inference.</p><p>Models that meet the following criteria can be registered with AINode:</p><ol><li>AINode currently supports models trained with PyTorch 2.4.0. Features above version 2.4.0 should be avoided.</li><li>AINode supports models stored using PyTorch JIT (<code>model.pt</code>), which must include both the model structure and weights.</li><li>The model input sequence can include single or multiple columns. If multi-column, it must match the model capabilities and configuration file.</li><li>Model configuration parameters must be clearly defined in the <code>config.yaml</code> file. When using the model, the input and output dimensions defined in <code>config.yaml</code> must be strictly followed. Mismatches with the configuration file will cause errors.</li></ol><p>The SQL syntax for model registration is defined as follows:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#ABB2BF;"> model </span><span style="color:#56B6C2;">&lt;</span><span style="color:#ABB2BF;">model_id</span><span style="color:#56B6C2;">&gt;</span><span style="color:#C678DD;"> using</span><span style="color:#ABB2BF;"> uri </span><span style="color:#56B6C2;">&lt;</span><span style="color:#ABB2BF;">uri</span><span style="color:#56B6C2;">&gt;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>Detailed meanings of SQL parameters:</p><ul><li><p><strong>model_id</strong>: The global unique identifier for the model, non-repeating. Model names have the following constraints:</p><ul><li>Allowed characters: [0-9 a-z A-Z _] (letters, digits (not at the beginning), underscores (not at the beginning))</li><li>Length: 2-64 characters</li><li>Case-sensitive</li></ul></li><li><p><strong>uri</strong>: The resource path of the model registration files, which should include the <strong>model structure and weight file <code>model.pt</code> and the model configuration file <code>config.yaml</code></strong></p><ul><li><p><strong>Model structure and weight file</strong>: The weight file generated after model training, currently supporting <code>.pt</code> files from PyTorch training.</p></li><li><p><strong>Model configuration file</strong>: Parameters related to the model structure provided during registration, which must include input and output dimensions for inference:</p></li></ul><table><thead><tr><th><strong>Parameter Name</strong></th><th><strong>Description</strong></th><th><strong>Example</strong></th></tr></thead><tbody><tr><td>input_shape</td><td>Rows and columns of model input</td><td>[96,2]</td></tr><tr><td>output_shape</td><td>Rows and columns of model output</td><td>[48,2]</td></tr></tbody></table><p>In addition to inference, data types of input and output can also be specified:</p><table><thead><tr><th><strong>Parameter Name</strong></th><th><strong>Description</strong></th><th><strong>Example</strong></th></tr></thead><tbody><tr><td>input_type</td><td>Data type of model input</td><td>[&#39;float32&#39;, &#39;float32&#39;]</td></tr><tr><td>output_type</td><td>Data type of model output</td><td>[&#39;float32&#39;, &#39;float32&#39;]</td></tr></tbody></table><p>Additional notes can be specified for model management display:</p><table><thead><tr><th><strong>Parameter Name</strong></th><th><strong>Description</strong></th><th><strong>Example</strong></th></tr></thead><tbody><tr><td>attributes</td><td>Optional notes set by users for model display</td><td>&#39;model_type&#39;: &#39;dlinear&#39;, &#39;kernel_size&#39;: &#39;25&#39;</td></tr></tbody></table></li></ul><p>In addition to registering local model files, remote resource paths can be specified via URIs for registration, using open-source model repositories (e.g., HuggingFace).</p><h4 id="example" tabindex="-1"><a class="header-anchor" href="#example"><span>Example</span></a></h4><p>The <a href="https://github.com/apache/iotdb/tree/master/integration-test/src/test/resources/ainode-example" target="_blank" rel="noopener noreferrer">example folder</a> contains <a href="http://model.pt" target="_blank" rel="noopener noreferrer">model.pt</a> (trained model) and config.yaml with the following content:</p><div class="language-yaml line-numbers-mode" data-highlighter="shiki" data-ext="yaml" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-yaml"><span class="line"><span style="color:#E06C75;">configs</span><span style="color:#ABB2BF;">: </span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> # Required</span></span>
<span class="line"><span style="color:#E06C75;"> input_shape</span><span style="color:#ABB2BF;">: [</span><span style="color:#D19A66;">96</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">] </span><span style="color:#7F848E;font-style:italic;"># Model accepts 96 rows x 2 columns of data</span></span>
<span class="line"><span style="color:#E06C75;"> output_shape</span><span style="color:#ABB2BF;">: [</span><span style="color:#D19A66;">48</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">2</span><span style="color:#ABB2BF;">] </span><span style="color:#7F848E;font-style:italic;"># Model outputs 48 rows x 2 columns of data</span></span>
<span class="line"><span style="color:#ABB2BF;"> </span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> # Optional (default to all float32, column count matches shape)</span></span>
<span class="line"><span style="color:#E06C75;"> input_type</span><span style="color:#ABB2BF;">: [</span><span style="color:#98C379;">&quot;int64&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;int64&quot;</span><span style="color:#ABB2BF;">] </span><span style="color:#7F848E;font-style:italic;"># Data types of inputs, must match input column count</span></span>
<span class="line"><span style="color:#E06C75;"> output_type</span><span style="color:#ABB2BF;">: [</span><span style="color:#98C379;">&quot;text&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;int64&quot;</span><span style="color:#ABB2BF;">] </span><span style="color:#7F848E;font-style:italic;"># Data types of outputs, must match output column count</span></span>
<span class="line"></span>
<span class="line"><span style="color:#E06C75;">attributes</span><span style="color:#ABB2BF;">: </span><span style="color:#7F848E;font-style:italic;"># Optional user-defined notes</span></span>
<span class="line"><span style="color:#98C379;"> &#39;model_type&#39;</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&#39;dlinear&#39;</span></span>
<span class="line"><span style="color:#98C379;"> &#39;kernel_size&#39;</span><span style="color:#ABB2BF;">: </span><span style="color:#98C379;">&#39;25&#39;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Register the model by specifying this folder as the loading path:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#C678DD;"> create</span><span style="color:#ABB2BF;"> model dlinear_example </span><span style="color:#C678DD;">using</span><span style="color:#ABB2BF;"> uri </span><span style="color:#98C379;">&quot;file://./example&quot;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>Models can also be downloaded from HuggingFace for registration:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#C678DD;"> create</span><span style="color:#ABB2BF;"> model dlinear_example </span><span style="color:#C678DD;">using</span><span style="color:#ABB2BF;"> uri </span><span style="color:#98C379;">&quot;https://huggingface.co/google/timesfm-2.0-500m-pytorch&quot;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>After SQL execution, registration proceeds asynchronously. The registration status can be checked via model display (see Model Display section). The registration success time mainly depends on the model file size.</p><p>Once registered, the model can be invoked for inference through normal query syntax.</p><h3 id="_4-2-viewing-models" tabindex="-1"><a class="header-anchor" href="#_4-2-viewing-models"><span>4.2 Viewing Models</span></a></h3><p>Registered models can be queried using the <code>show models</code> command. The SQL definitions are:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">show models</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;">show models </span><span style="color:#56B6C2;">&lt;</span><span style="color:#ABB2BF;">model_id</span><span style="color:#56B6C2;">&gt;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>In addition to displaying all models, specifying a <code>model_id</code> shows details of a specific model. The display includes:</p><table><thead><tr><th><strong>ModelId</strong></th><th><strong>ModelType</strong></th><th><strong>Category</strong></th><th><strong>State</strong></th></tr></thead><tbody><tr><td>Model ID</td><td>Model Type</td><td>Model Category</td><td>Model State</td></tr></tbody></table><ul><li>Model State Transition Diagram</li></ul><figure><img src="/img/AINode-State-apache-en.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p><strong>Instructions:</strong></p><ol><li>Initialization: <ul><li>When AINode starts, show models only displays BUILT-IN models.</li></ul></li><li>Custom Model Import: <ul><li>Users can import custom models (marked as USER-DEFINED).</li><li>The system attempts to parse the ModelTypefrom the config file.</li><li>If parsing fails, the field remains empty.</li></ul></li><li>Foundation Model Weights: <ul><li>Time-series foundation model weights are not bundled with AINode.</li><li>AINode automatically downloads them during startup.</li><li>Download state: LOADING.</li></ul></li><li>Download Outcomes: <ul><li>Success → State changes to ACTIVE.</li><li>Failure → State changes to INACTIVE.</li></ul></li></ol><p><strong>Example</strong></p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#ABB2BF;">IoTDB</span><span style="color:#56B6C2;">&gt;</span><span style="color:#ABB2BF;"> show models</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">---------------------+--------------------+--------------+---------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| ModelId| ModelType| Category| </span><span style="color:#C678DD;">State</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">---------------------+--------------------+--------------+---------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| arima| Arima| BUILT-</span><span style="color:#C678DD;">IN</span><span style="color:#ABB2BF;">| ACTIVE|</span></span>
<span class="line"><span style="color:#ABB2BF;">| holtwinters| HoltWinters| BUILT-</span><span style="color:#C678DD;">IN</span><span style="color:#ABB2BF;">| ACTIVE|</span></span>
<span class="line"><span style="color:#ABB2BF;">|exponential_smoothing|ExponentialSmoothing| BUILT-</span><span style="color:#C678DD;">IN</span><span style="color:#ABB2BF;">| ACTIVE|</span></span>
<span class="line"><span style="color:#ABB2BF;">| naive_forecaster| NaiveForecaster| BUILT-</span><span style="color:#C678DD;">IN</span><span style="color:#ABB2BF;">| ACTIVE|</span></span>
<span class="line"><span style="color:#ABB2BF;">| stl_forecaster| StlForecaster| BUILT-</span><span style="color:#C678DD;">IN</span><span style="color:#ABB2BF;">| ACTIVE|</span></span>
<span class="line"><span style="color:#ABB2BF;">| gaussian_hmm| GaussianHmm| BUILT-</span><span style="color:#C678DD;">IN</span><span style="color:#ABB2BF;">| ACTIVE|</span></span>
<span class="line"><span style="color:#ABB2BF;">| gmm_hmm| GmmHmm| BUILT-</span><span style="color:#C678DD;">IN</span><span style="color:#ABB2BF;">| ACTIVE|</span></span>
<span class="line"><span style="color:#ABB2BF;">| stray| Stray| BUILT-</span><span style="color:#C678DD;">IN</span><span style="color:#ABB2BF;">| ACTIVE|</span></span>
<span class="line"><span style="color:#ABB2BF;">| custom| | USER-DEFINED| ACTIVE|</span></span>
<span class="line"><span style="color:#ABB2BF;">| timer_xl| Timer-XL| BUILT-</span><span style="color:#C678DD;">IN</span><span style="color:#ABB2BF;">| LOADING|</span></span>
<span class="line"><span style="color:#ABB2BF;">| sundial| Timer-Sundial| BUILT-</span><span style="color:#C678DD;">IN</span><span style="color:#ABB2BF;">| ACTIVE|</span></span>
<span class="line"><span style="color:#ABB2BF;">+</span><span style="color:#7F848E;font-style:italic;">---------------------+--------------------+--------------+---------+</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_4-3-deleting-models" tabindex="-1"><a class="header-anchor" href="#_4-3-deleting-models"><span>4.3 Deleting Models</span></a></h3><p>Registered models can be deleted via SQL, which removes all related files under AINode:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">drop</span><span style="color:#ABB2BF;"> model </span><span style="color:#56B6C2;">&lt;</span><span style="color:#ABB2BF;">model_id</span><span style="color:#56B6C2;">&gt;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>Specify the registered <code>model_id</code> to delete the model. Since deletion involves data cleanup, the operation is not immediate, and the model state becomes <code>DROPPING</code>, during which it cannot be used for inference. <strong>Note:</strong> Built-in models cannot be deleted.</p><h3 id="_4-4-inference-with-built-in-models" tabindex="-1"><a class="header-anchor" href="#_4-4-inference-with-built-in-models"><span>4.4 Inference with Built-in Models</span></a></h3><p>SQL syntax:</p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">SELECT</span><span style="color:#ABB2BF;"> * </span><span style="color:#C678DD;">FROM</span><span style="color:#ABB2BF;"> forecast(</span></span>
<span class="line"><span style="color:#ABB2BF;"> input, </span></span>
<span class="line"><span style="color:#ABB2BF;"> model_id,</span></span>
<span class="line"><span style="color:#ABB2BF;"> [output_length, </span></span>
<span class="line"><span style="color:#ABB2BF;"> output_start_time,</span></span>
<span class="line"><span style="color:#ABB2BF;"> output_interval,</span></span>
<span class="line"><span style="color:#ABB2BF;"> timecol, </span></span>
<span class="line"><span style="color:#ABB2BF;"> preserve_input,</span></span>
<span class="line"><span style="color:#ABB2BF;"> model_options]?</span></span>
<span class="line"><span style="color:#ABB2BF;">)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Built-in models do not require prior registration for inference. Simply use the <code>forecast</code> function and specify the <code>model_id</code> to invoke the model&#39;s inference capabilities.</p><ul><li><strong>Note</strong>: Inference with built-in time series large models requires local availability of model weights in the directory <code>/IOTDB_AINODE_HOME/data/ainode/models/weights/model_id/</code>. If weights are missing, they will be automatically downloaded from HuggingFace. Ensure direct network access to HuggingFace.</li></ul><p>Parameter descriptions:</p><table><thead><tr><th>Parameter</th><th>Type</th><th>Attribute</th><th>Description</th><th>Required</th><th>Notes</th></tr></thead><tbody><tr><td>input</td><td>Table</td><td>SET SEMANTIC</td><td>Input data for forecasting</td><td>Yes</td><td></td></tr><tr><td>model_id</td><td>String</td><td>Scalar</td><td>Name of the model to use</td><td>Yes</td><td>Must be non-empty and a built-in model; otherwise, errors like &quot;MODEL_ID cannot be null&quot; occur.</td></tr><tr><td>output_length</td><td>INT32</td><td>Scalar (default: 96)</td><td>Size of the output forecast window</td><td>No</td><td>Must be &gt; 0.</td></tr><tr><td>output_start_time</td><td>Timestamp</td><td>Scalar (default: last input timestamp + output_interval)</td><td>Start timestamp of the forecast results</td><td>No</td><td>Can be negative (before 1970-01-01).</td></tr><tr><td>output_interval</td><td>Time interval</td><td>Scalar (default: inferred from input)</td><td>Time interval between forecast points (supports ns, us, ms, s, m, h, d, w)</td><td>No</td><td>If &gt; 0, uses user-specified interval; else, infers from input.</td></tr><tr><td>timecol</td><td>String</td><td>Scalar (default: &quot;time&quot;)</td><td>Name of the timestamp column</td><td>No</td><td>Must exist in <code>input</code> and be of TIMESTAMP type; otherwise, errors occur.</td></tr><tr><td>preserve_input</td><td>Boolean</td><td>Scalar (default: false)</td><td>Retain all input rows in the output</td><td>No</td><td></td></tr><tr><td>model_options</td><td>String</td><td>Scalar (default: empty)</td><td>Model-specific key-value pairs (e.g., normalization)</td><td>No</td><td>Unsupported parameters are ignored. See appendix for built-in model parameters.</td></tr></tbody></table><p><strong>Notes:</strong></p><ol><li>The <code>forecast</code> function predicts all columns in the input table by default (excluding the time column and columns specified in <code>partition by</code>).</li><li>The <code>forecast</code> function does not require the input data to be in any specific order. It sorts the input data in ascending order by the timestamp (specified by the <code>TIMECOL</code> parameter) before invoking the model for prediction.</li><li>Different models have varying requirements for the number of input data rows. If the input data has fewer rows than the minimum requirement, an error will be reported. <ul><li>Among the current built-in models in AINode: <ul><li>Timer-XL requires at least 96 rows of input data.</li><li>Timer-Sundial requires at least 16 rows of input data.</li></ul></li></ul></li><li>The result columns of the <code>forecast</code> function include all input columns from the input table, with their original data types preserved. If <code>preserve_input = true</code>, an additional <code>is_input</code> column will be included to indicate whether a row is from the input data. <ul><li>Currently, only columns of type INT32, INT64, FLOAT, or DOUBLE are supported for prediction. Otherwise, an error will occur: &quot;The type of the column [%s] is [%s], only INT32, INT64, FLOAT, DOUBLE is allowed.&quot;</li></ul></li><li><code>output_start_time</code> and <code>output_interval</code> only affect the generation of the timestamp column in the output results. Both are optional parameters: <ul><li><code>output_start_time</code> defaults to the last timestamp of the input data plus <code>output_interval</code>.</li><li><code>output_interval</code> defaults to the sampling interval of the input data, calculated as: (last timestamp - first timestamp) / (number of rows - 1).</li><li>The timestamp of the Nth output row is calculated as: <code>output_start_time + (N - 1) * output_interval</code>.</li></ul></li></ol><p><strong>Example: Database and table must be pre-created</strong></p><div class="language-sql line-numbers-mode" data-highlighter="shiki" data-ext="sql" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-sql"><span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> database</span><span style="color:#61AFEF;"> etth</span></span>
<span class="line"><span style="color:#C678DD;">create</span><span style="color:#C678DD;"> table</span><span style="color:#61AFEF;"> eg</span><span style="color:#ABB2BF;"> (hufl </span><span style="color:#C678DD;">FLOAT</span><span style="color:#ABB2BF;"> FIELD, hull </span><span style="color:#C678DD;">FLOAT</span><span style="color:#ABB2BF;"> FIELD, mufl </span><span style="color:#C678DD;">FLOAT</span><span style="color:#ABB2BF;"> FIELD, mull </span><span style="color:#C678DD;">FLOAT</span><span style="color:#ABB2BF;"> FIELD, lufl </span><span style="color:#C678DD;">FLOAT</span><span style="color:#ABB2BF;"> FIELD, lull </span><span style="color:#C678DD;">FLOAT</span><span style="color:#ABB2BF;"> FIELD, ot </span><span style="color:#C678DD;">FLOAT</span><span style="color:#ABB2BF;"> FIELD)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>Using the ETTh1-tab dataset:<a href="/img/ETTh1-tab.csv">ETTh1-tab</a></p><p><strong>View supported models</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="color:#61AFEF;">IoTDB:etth</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">show</span><span style="color:#98C379;"> models</span></span>
<span class="line"><span style="color:#61AFEF;">+---------------------+--------------------+--------+------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">ModelId</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">ModelType</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">Category</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">State</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#61AFEF;">+---------------------+--------------------+--------+------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">arima</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">Arima</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">BUILT-IN</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">ACTIVE</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">holtwinters</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">HoltWinters</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">BUILT-IN</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">ACTIVE</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">exponential_smoothing</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">ExponentialSmoothing</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">BUILT-IN</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">ACTIVE</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">naive_forecaster</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">NaiveForecaster</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">BUILT-IN</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">ACTIVE</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">stl_forecaster</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">StlForecaster</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">BUILT-IN</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">ACTIVE</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">gaussian_hmm</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">GaussianHmm</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">BUILT-IN</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">ACTIVE</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">gmm_hmm</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">GmmHmm</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">BUILT-IN</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">ACTIVE</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">stray</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">Stray</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">BUILT-IN</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">ACTIVE</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">sundial</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">Timer-Sundial</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">BUILT-IN</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">ACTIVE</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">timer_xl</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">Timer-XL</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">BUILT-IN</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">ACTIVE</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#61AFEF;">+---------------------+--------------------+--------+------+</span></span>
<span class="line"><span style="color:#61AFEF;">Total</span><span style="color:#98C379;"> line</span><span style="color:#98C379;"> number</span><span style="color:#98C379;"> =</span><span style="color:#D19A66;"> 10</span></span>
<span class="line"><span style="color:#61AFEF;">It</span><span style="color:#98C379;"> costs</span><span style="color:#98C379;"> 0.004s</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>Inference with sundial model:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-bash"><span class="line"><span style="color:#61AFEF;">IoTDB:etth</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">select</span><span style="color:#98C379;"> Time,</span><span style="color:#98C379;"> HUFL,HULL,MUFL,MULL,LUFL,LULL,OT</span><span style="color:#98C379;"> from</span><span style="color:#98C379;"> eg</span><span style="color:#98C379;"> LIMIT</span><span style="color:#D19A66;"> 96</span></span>
<span class="line"><span style="color:#61AFEF;">+-----------------------------+------+-----+-----+-----+-----+-----+------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">Time</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">HUFL</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">HULL</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">MUFL</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">MULL</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">LUFL</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">LULL</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">OT</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#61AFEF;">+-----------------------------+------+-----+-----+-----+-----+-----+------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2016-07-01T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">5.827</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2.009</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1.599</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">0.462</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">4.203</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.34</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">30.531</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2016-07-01T01:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">5.693</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2.076</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1.492</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">0.426</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">4.142</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1.371</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">27.787</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2016-07-01T02:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">5.157</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1.741</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1.279</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">0.355</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">3.777</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1.218</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">27.787</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2016-07-01T03:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">5.09</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1.942</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1.279</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">0.391</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">3.807</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1.279</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">25.044</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#61AFEF;">Total</span><span style="color:#98C379;"> line</span><span style="color:#98C379;"> number</span><span style="color:#98C379;"> =</span><span style="color:#D19A66;"> 96</span></span>
<span class="line"><span style="color:#61AFEF;">It</span><span style="color:#98C379;"> costs</span><span style="color:#98C379;"> 0.119s</span></span>
<span class="line"></span>
<span class="line"><span style="color:#61AFEF;">IoTDB:etth</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">select</span><span style="color:#E5C07B;"> *</span><span style="color:#98C379;"> from</span><span style="color:#98C379;"> forecast</span><span style="color:#ABB2BF;">( </span></span>
<span class="line"><span style="color:#61AFEF;"> model_id</span><span style="color:#ABB2BF;"> =&gt; </span><span style="color:#98C379;">&#39;sundial&#39;,</span></span>
<span class="line"><span style="color:#61AFEF;"> input</span><span style="color:#ABB2BF;"> =&gt; (select </span><span style="color:#98C379;">Time,</span><span style="color:#98C379;"> ot</span><span style="color:#98C379;"> from</span><span style="color:#98C379;"> etth.eg</span><span style="color:#98C379;"> where</span><span style="color:#98C379;"> time</span><span style="color:#ABB2BF;"> &gt;</span><span style="color:#98C379;">=</span><span style="color:#98C379;"> 2016-08-07T18:00:00.000+08:00</span><span style="color:#98C379;"> limit</span><span style="color:#D19A66;"> 1440</span><span style="color:#ABB2BF;">) </span><span style="color:#98C379;">order</span><span style="color:#98C379;"> BY</span><span style="color:#98C379;"> time,</span></span>
<span class="line"><span style="color:#61AFEF;"> output_length</span><span style="color:#ABB2BF;"> =&gt; </span><span style="color:#D19A66;">96</span></span>
<span class="line"><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#61AFEF;">+-----------------------------+---------+</span></span>
<span class="line"><span style="color:#ABB2BF;">| time| </span><span style="color:#61AFEF;">ot</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#61AFEF;">+-----------------------------+---------+</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2016-10-06T18:00:00.000+08:00</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">20.781654</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2016-10-06T19:00:00.000+08:00</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">20.252121</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2016-10-06T20:00:00.000+08:00</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">19.960138</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2016-10-06T21:00:00.000+08:00</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">19.662334</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#61AFEF;">Total</span><span style="color:#98C379;"> line</span><span style="color:#98C379;"> number</span><span style="color:#98C379;"> =</span><span style="color:#D19A66;"> 96</span></span>
<span class="line"><span style="color:#61AFEF;">It</span><span style="color:#98C379;"> costs</span><span style="color:#98C379;"> 1.615s</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_4-5-time-series-large-model-import-steps" tabindex="-1"><a class="header-anchor" href="#_4-5-time-series-large-model-import-steps"><span>4.5 Time Series Large Model Import Steps</span></a></h3><p>AINode supports multiple time series large models. For deployment, refer to <a class="route-link" href="/UserGuide/latest-Table/AI-capability/TimeSeries-Large-Model.html">Time Series Large Model</a></p><h2 id="_5-permission-management" tabindex="-1"><a class="header-anchor" href="#_5-permission-management"><span>5 Permission Management</span></a></h2><p>AINode uses IoTDB&#39;s authentication for permission management. Users need <code>USE_MODEL</code> permission for model management and <code>READ_DATA</code> permission for inference (to access input data sources).</p><table><thead><tr><th><strong>Permission</strong></th><th><strong>Scope</strong></th><th><strong>Admin (ROOT)</strong></th><th><strong>Regular User</strong></th><th><strong>Path-Related</strong></th></tr></thead><tbody><tr><td>USE_MODEL</td><td>Create/Show/Drop models</td><td>✔️</td><td>✔️</td><td></td></tr><tr><td>READ_DATA</td><td>Call inference functions</td><td>✔️</td><td>✔️</td><td>✔️</td></tr></tbody></table><h2 id="_6-appendix" tabindex="-1"><a class="header-anchor" href="#_6-appendix"><span>6 Appendix</span></a></h2><p><strong>Arima</strong></p><table><thead><tr><th>Parameter</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td>order</td><td>ARIMA order <code>(p, d, q)</code>: p=autoregressive, d=differencing, q=moving average.</td><td>(1,0,0)</td></tr><tr><td>seasonal_order</td><td>Seasonal ARIMA order <code>(P, D, Q, s)</code>: seasonal AR, differencing, MA orders, and season length (e.g., 12 for monthly data).</td><td>(0,0,0,0)</td></tr><tr><td>method</td><td>Optimizer: &#39;newton&#39;, &#39;nm&#39;, &#39;bfgs&#39;, &#39;lbfgs&#39;, &#39;powell&#39;, &#39;cg&#39;, &#39;ncg&#39;, &#39;basinhopping&#39;.</td><td>&#39;lbfgs&#39;</td></tr><tr><td>maxiter</td><td>Maximum iterations/function evaluations.</td><td>50</td></tr><tr><td>out_of_sample_size</td><td>Number of tail samples for validation (not used in fitting).</td><td>0</td></tr><tr><td>scoring</td><td>Scoring function for validation (sklearn metric or custom).</td><td>&#39;mse&#39;</td></tr><tr><td>trend</td><td>Trend term configuration. If <code>with_intercept=True</code> and None, defaults to &#39;c&#39; (constant).</td><td>None</td></tr><tr><td>with_intercept</td><td>Include intercept term.</td><td>True</td></tr><tr><td>time_varying_regression</td><td>Allow regression coefficients to vary over time.</td><td>False</td></tr><tr><td>enforce_stationarity</td><td>Enforce stationarity of AR components.</td><td>True</td></tr><tr><td>enforce_invertibility</td><td>Enforce invertibility of MA components.</td><td>True</td></tr><tr><td>simple_differencing</td><td>Use differenced data for estimation (sacrifices first rows).</td><td>False</td></tr><tr><td>measurement_error</td><td>Assume observation errors.</td><td>False</td></tr><tr><td>mle_regression</td><td>Use maximum likelihood for regression (must be False if <code>time_varying_regression=True</code>).</td><td>True</td></tr><tr><td>hamilton_representation</td><td>Use Hamilton representation (default is Harvey).</td><td>False</td></tr><tr><td>concentrate_scale</td><td>Exclude scale parameter from likelihood (reduces parameters).</td><td>False</td></tr></tbody></table><p><strong>NaiveForecaster</strong></p><table><thead><tr><th>Parameter</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td>strategy</td><td>Forecasting strategy: - <code>&quot;last&quot;</code>: Use last training value (seasonal if <code>sp</code>&gt;1). - <code>&quot;mean&quot;</code>: Use mean of last window (seasonal if <code>sp</code>&gt;1). - <code>&quot;drift&quot;</code>: Fit line through last window and extrapolate (non-robust to NaN).</td><td>&quot;last&quot;</td></tr><tr><td>sp</td><td>Seasonal period. <code>None</code> or 1 means no seasonality; 12 means monthly.</td><td>1</td></tr></tbody></table><p><strong>STLForecaster</strong></p><table><thead><tr><th>Parameter</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td>sp</td><td>Seasonal period (units). Passed to statsmodels&#39; STL.</td><td>2</td></tr><tr><td>seasonal</td><td>Seasonal smoothing window (odd ≥3, typically ≥7).</td><td>7</td></tr><tr><td>seasonal_deg</td><td>LOESS polynomial degree for season (0=constant, 1=linear).</td><td>1</td></tr><tr><td>trend_deg</td><td>LOESS polynomial degree for trend (0 or 1).</td><td>1</td></tr><tr><td>low_pass_deg</td><td>LOESS polynomial degree for low-pass (0 or 1).</td><td>1</td></tr><tr><td>seasonal_jump</td><td>Interpolation step for season LOESS (larger = faster).</td><td>1</td></tr><tr><td>trend_jump</td><td>Interpolation step for trend LOESS (larger = faster).</td><td>1</td></tr><tr><td>low_pass_jump</td><td>Interpolation step for low-pass LOESS.</td><td>1</td></tr></tbody></table><p><strong>ExponentialSmoothing (HoltWinters)</strong></p><table><thead><tr><th>Parameter</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td>damped_trend</td><td>Use damped trend (trend flattens instead of growing infinitely).</td><td>True</td></tr><tr><td>initialization_method</td><td>Initialization method: - <code>&quot;estimated&quot;</code>: Fit to estimate initial states - <code>&quot;heuristic&quot;</code>: Use heuristic for initial level/trend/season - <code>&quot;known&quot;</code>: User-provided initial values - <code>&quot;legacy-heuristic&quot;</code>: Legacy compatibility</td><td>&quot;estimated&quot;</td></tr><tr><td>optimized</td><td>Optimize parameters via maximum likelihood.</td><td>True</td></tr><tr><td>remove_bias</td><td>Remove bias to make residuals&#39; mean zero.</td><td>False</td></tr><tr><td>use_brute</td><td>Use brute-force grid search for initial parameters.</td><td></td></tr></tbody></table></div><!----><!----><!----></div><footer class="vp-page-meta"><div class="vp-meta-item edit-link"><a class="auto-link external-link vp-meta-label" href="https://github.com/apache/iotdb-docs/edit/main/src/UserGuide/latest-Table/AI-capability/AINode_apache.md" aria-label="Found Error? Edit this page on GitHub" rel="noopener noreferrer" target="_blank"><!--[--><svg xmlns="http://www.w3.org/2000/svg" class="icon edit-icon" viewBox="0 0 1024 1024" fill="currentColor" aria-label="edit icon" name="edit"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></svg><!--]-->Found Error? Edit this page on GitHub<!----></a></div><div class="vp-meta-item git-info"><div class="update-time"><span class="vp-meta-label">Last Updated: </span><time class="vp-meta-info" datetime="2026-04-10T04:06:27.000Z" data-allow-mismatch>4/10/26, 4:06 AM</time></div><!----></div></footer><nav class="vp-page-nav"><!----><a class="route-link auto-link next" href="/UserGuide/latest-Table/AI-capability/AINode_Upgrade_apache.html" aria-label="AINode(V2.0.8)"><div class="hint">Next<span class="arrow end"></span></div><div class="link">AINode(V2.0.8)<!----></div></a></nav><!----><!----><!--]--></main><!--]--><footer class="site-footer"><span id="doc-version" style="display:none;">latest-Table</span><p class="copyright-text">Copyright © 2026 The Apache Software Foundation.
Apache IoTDB, IoTDB, Apache, the Apache feather logo, and the Apache IoTDB project logo are either registered trademarks or trademarks of The Apache Software Foundation in all countries</p><p style="text-align:center;margin-top:10px;color:#909399;font-size:12px;margin:0 30px;"><strong>Having questions?</strong> Connect with us on QQ, WeChat, or Slack. <a href="https://github.com/apache/iotdb/issues/1995">Join the community</a></p></footer></div><!--]--><!--]--><!--[--><!----><!--]--><!--]--></div>
<script type="module" src="/assets/app-pmkzp6TS.js" defer></script>
</body>
</html>