blob: e5f3227ae09853f516b357148cdf4d367caed88b [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-State-apache-en.png","https://iotdb.apache.org/img/AINode-call1.png","https://iotdb.apache.org/img/AINode-call2.png","https://iotdb.apache.org/img/AINode-call3.png","https://iotdb.apache.org/img/AINode-analysis1.png","https://iotdb.apache.org/img/AINode-analysis2.png","https://iotdb.apache.org/img/s6.png"],"dateModified":"2026-04-10T04:06:27.000Z","author":[]}</script><meta property="og:url" content="https://iotdb.apache.org/UserGuide/latest/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/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-DBeLiGMP.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"><link rel="modulepreload" href="/assets/s6-CiE-58wv.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/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/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 switch-active">Tree</li><li class="switch-type">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/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/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/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/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/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">1/10/24</span><meta property="datePublished" content="2024-01-10T02:47:40.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 15 min</span><meta property="timeRequired" content="PT15M"></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 CALL INFERENCE (...) 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 or algorithms into MLNode for unified management and use by IoTDB.</li><li><strong>Inference</strong>: The process of using the created model to complete the timing analysis task applicable to the model on the specified timing data.</li><li><strong>Built-in capabilities</strong>: AINode comes with machine learning algorithms or home-grown models for common timing analysis scenarios (e.g., prediction and anomaly detection).</li></ul><div style="text-align:center;"><img src="/img/AINode-en.png" style="zoom:50%;"></div><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/Deployment-and-Maintenance/AINode_Deployment_apache.html">AINode Deployment</a>.</p><h2 id="_4-usage-guidelines" tabindex="-1"><a class="header-anchor" href="#_4-usage-guidelines"><span>4. Usage Guidelines</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>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>Successfully registered models can be queried for model-specific information through the show models command. The SQL definition is 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:#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:</li></ol><ul><li>When AINode starts, show models only displays BUILT-IN models.</li></ul><ol start="2"><li>Custom Model Import:</li></ol><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><ol start="3"><li>Foundation Model Weights:</li></ol><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><ol start="4"><li>Download Outcomes:</li></ol><ul><li>Success → State changes to ACTIVE.</li><li>Failure → State changes to INACTIVE.</li></ul><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-using-built-in-model-reasoning" tabindex="-1"><a class="header-anchor" href="#_4-4-using-built-in-model-reasoning"><span>4.4 Using Built-in Model Reasoning</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;">call</span><span style="color:#ABB2BF;"> inference(</span><span style="color:#56B6C2;">&lt;</span><span style="color:#ABB2BF;">model_id</span><span style="color:#56B6C2;">&gt;</span><span style="color:#ABB2BF;">,inputSql,(</span><span style="color:#56B6C2;">&lt;</span><span style="color:#ABB2BF;">parameterName</span><span style="color:#56B6C2;">&gt;=&lt;</span><span style="color:#ABB2BF;">parameterValue</span><span style="color:#56B6C2;">&gt;</span><span style="color:#ABB2BF;">)*)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;">window_function:</span></span>
<span class="line"><span style="color:#ABB2BF;"> head(window_size)</span></span>
<span class="line"><span style="color:#ABB2BF;"> tail(window_size)</span></span>
<span class="line"><span style="color:#56B6C2;"> count</span><span style="color:#ABB2BF;">(window_size,sliding_step)</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></div><p>Built-in model inference does not require a registration process, the inference function can be used by calling the inference function through the call keyword, and its corresponding parameters are described as follows:</p><ul><li><p><strong>built_in_model_name</strong>: built-in model name</p></li><li><p><strong>parameterName</strong>: parameter name</p></li><li><p><strong>parameterValue</strong>: parameter value</p></li><li><p><strong>Note</strong>: To use a built-in time series large model for inference, the corresponding model weights must be stored locally in the directory <code>/IOTDB_AINODE_HOME/data/ainode/models/weights/model_id/</code>. If the weights are not present locally, they will be automatically downloaded from HuggingFace. Ensure your environment has direct access to HuggingFace.</p></li></ul><h4 id="built-in-models-and-parameter-descriptions" tabindex="-1"><a class="header-anchor" href="#built-in-models-and-parameter-descriptions"><span>Built-in Models and Parameter Descriptions</span></a></h4><p>The following machine learning models are currently built-in, please refer to the following links for detailed parameter descriptions.</p><table><thead><tr><th>Model</th><th>built_in_model_name</th><th>Task type</th><th>Parameter description</th></tr></thead><tbody><tr><td>Arima</td><td>_Arima</td><td>Forecast</td><td><a href="https://www.sktime.net/en/latest/api_reference/auto_generated/sktime.forecasting.arima.ARIMA.html?highlight=Arima" target="_blank" rel="noopener noreferrer">Arima Parameter description</a></td></tr><tr><td>STLForecaster</td><td>_STLForecaster</td><td>Forecast</td><td><a href="https://www.sktime.net/en/latest/api_reference/auto_generated/sktime.forecasting.trend.STLForecaster.html#sktime.forecasting.trend.STLForecaster" target="_blank" rel="noopener noreferrer">STLForecaster Parameter description</a></td></tr><tr><td>NaiveForecaster</td><td>_NaiveForecaster</td><td>Forecast</td><td><a href="https://www.sktime.net/en/latest/api_reference/auto_generated/sktime.forecasting.naive.NaiveForecaster.html#naiveforecaster" target="_blank" rel="noopener noreferrer">NaiveForecaster Parameter description</a></td></tr><tr><td>ExponentialSmoothing</td><td>_ExponentialSmoothing</td><td>Forecast</td><td><a href="https://www.sktime.net/en/latest/api_reference/auto_generated/sktime.forecasting.exp_smoothing.ExponentialSmoothing.html" target="_blank" rel="noopener noreferrer">ExponentialSmoothing Parameter description</a></td></tr><tr><td>GaussianHMM</td><td>_GaussianHMM</td><td>Annotation</td><td><a href="https://www.sktime.net/en/latest/api_reference/auto_generated/sktime.detection.hmm_learn.gaussian.GaussianHMM.html" target="_blank" rel="noopener noreferrer">GaussianHMMParameter description</a></td></tr><tr><td>GMMHMM</td><td>_GMMHMM</td><td>Annotation</td><td><a href="https://www.sktime.net/en/latest/api_reference/auto_generated/sktime.detection.hmm_learn.gmm.GMMHMM.html" target="_blank" rel="noopener noreferrer">GMMHMM Parameter description</a></td></tr><tr><td>Stray</td><td>_Stray</td><td>Anomaly detection</td><td><a href="https://www.sktime.net/en/latest/api_reference/auto_generated/sktime.detection.stray.STRAY.html" target="_blank" rel="noopener noreferrer">Stray Parameter description</a></td></tr></tbody></table><p>After completing the registration of the model, the inference function can be used by calling the inference function through the call keyword, and its corresponding parameters are described as follows:</p><ul><li><strong>model_id</strong>: corresponds to a registered model</li><li><strong>sql</strong>: sql query statement, the result of the query is used as input to the model for model inference. The dimensions of the rows and columns in the result of the query need to match the size specified in the specific model config. (It is not recommended to use the <code>SELECT *</code> clause for the sql here because in IoTDB, <code>*</code> does not sort the columns, so the order of the columns is undefined, you can use <code>SELECT s0,s1</code> to ensure that the columns order matches the expectations of the model input)</li><li><strong>window_function</strong>: Window functions that can be used in the inference process, there are currently three types of window functions provided to assist in model inference: <ul><li><p><strong>head(window_size)</strong>: Get the top window_size points in the data for model inference, this window can be used for data cropping.<br><img src="/img/AINode-call1.png" alt="" loading="lazy"></p></li><li><p><strong>tail(window_size)</strong>: get the last window_size point in the data for model inference, this window can be used for data cropping.<br><img src="/img/AINode-call2.png" alt="" loading="lazy"></p></li><li><p><strong>count(window_size, sliding_step)</strong>: sliding window based on the number of points, the data in each window will be reasoned through the model respectively, as shown in the example below, window_size for 2 window function will be divided into three windows of the input dataset, and each window will perform reasoning operations to generate results respectively. The window can be used for continuous inference<br><img src="/img/AINode-call3.png" alt="" loading="lazy"></p></li></ul></li></ul><p><strong>Explanation 1</strong>: window can be used to solve the problem of cropping rows when the results of the sql query and the input row requirements of the model do not match. Note that when the number of columns does not match or the number of rows is directly less than the model requirement, the inference cannot proceed and an error message will be returned.</p><p><strong>Explanation 2</strong>: In deep learning applications, timestamp-derived features (time columns in the data) are often used as covariates in generative tasks, and are input into the model together to enhance the model, but the time columns are generally not included in the model&#39;s output. In order to ensure the generality of the implementation, the model inference results only correspond to the real output of the model, if the model does not output the time column, it will not be included in the results.</p><h4 id="example-1" tabindex="-1"><a class="header-anchor" href="#example-1"><span>Example</span></a></h4><p>The following is an example of inference in action using a deep learning model, for the <code>dlinear</code> prediction model with input <code>[96,2]</code> and output <code>[48,2]</code> mentioned above, which we use via SQL.</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">IoTDB</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">select</span><span style="color:#98C379;"> s1,s2</span><span style="color:#98C379;"> from</span><span style="color:#98C379;"> root.</span><span style="color:#E5C07B;">**</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;">root.eg.etth.s0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">root.eg.etth.s1</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;">1990-01-01T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7855</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.611</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-02T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7818</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.61</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-03T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7867</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6293</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-04T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.786</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.637</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-05T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7849</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.653</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-06T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7866</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6537</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-07T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7886</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.662</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-03-31T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7585</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.678</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-01T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7587</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6763</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-02T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.76</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6813</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-03T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7669</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.684</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-04T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7645</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.677</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-05T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7625</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.68</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-06T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7617</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6917</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;"> 96</span></span>
<span class="line"></span>
<span class="line"><span style="color:#61AFEF;">IoTDB</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">call</span><span style="color:#98C379;"> inference</span><span style="color:#ABB2BF;">(</span><span style="color:#61AFEF;">dlinear_example,</span><span style="color:#61AFEF;">&quot;select s0,s1 from root.**&quot;</span><span style="color:#61AFEF;">,</span><span style="color:#98C379;"> generateTime=True</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;">Time</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">_result_0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">_result_1</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;">1990-04-06T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.726302981376648</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6549958229064941</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-08T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7354921698570251</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6482787370681763</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-10T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7238251566886902</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6278168201446533</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-07-07T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7692174911499023</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.654654049873352</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-07-09T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7685555815696716</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6625318765640259</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-07-11T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7856493592262268</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6508299350738525</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;"> 48</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 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><h4 id="example-of-using-the-tail-head-window-function" tabindex="-1"><a class="header-anchor" href="#example-of-using-the-tail-head-window-function"><span>Example of using the tail/head window function</span></a></h4><p>When the amount of data is variable and you want to take the latest 96 rows of data for inference, you can use the corresponding window function tail. head function is used in a similar way, except that it takes the earliest 96 points.</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">IoTDB</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">select</span><span style="color:#98C379;"> s1,s2</span><span style="color:#98C379;"> from</span><span style="color:#98C379;"> root.</span><span style="color:#E5C07B;">**</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;">root.eg.etth.s0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">root.eg.etth.s1</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;">1988-01-01T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7355</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.211</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-01T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7855</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.611</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-02T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7818</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.61</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-03T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7867</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6293</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-04T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.786</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.637</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-05T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7849</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.653</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-06T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7866</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6537</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-07T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7886</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.662</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-03-31T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7585</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.678</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-01T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7587</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6763</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-02T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.76</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6813</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-03T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7669</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.684</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-04T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7645</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.677</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-05T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7625</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.68</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-06T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7617</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6917</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;"> 996</span></span>
<span class="line"></span>
<span class="line"><span style="color:#61AFEF;">IoTDB</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">call</span><span style="color:#98C379;"> inference</span><span style="color:#ABB2BF;">(</span><span style="color:#61AFEF;">dlinear_example,</span><span style="color:#61AFEF;">&quot;select s0,s1 from root.**&quot;</span><span style="color:#61AFEF;">,</span><span style="color:#98C379;"> generateTime=True,</span><span style="color:#98C379;"> window=tail</span><span style="color:#ABB2BF;">(</span><span style="color:#61AFEF;">96</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;">Time</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">_result_0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">_result_1</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;">1990-04-06T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.726302981376648</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6549958229064941</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-08T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7354921698570251</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6482787370681763</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-10T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7238251566886902</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6278168201446533</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-07-07T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7692174911499023</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.654654049873352</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-07-09T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7685555815696716</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6625318765640259</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-07-11T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7856493592262268</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6508299350738525</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;"> 48</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 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><h4 id="example-of-using-the-count-window-function" tabindex="-1"><a class="header-anchor" href="#example-of-using-the-count-window-function"><span>Example of using the count window function</span></a></h4><p>This window is mainly used for computational tasks. When the task&#39;s corresponding model can only handle a fixed number of rows of data at a time, but the final desired outcome is multiple sets of prediction results, this window function can be used to perform continuous inference using a sliding window of points. Suppose we now have an anomaly detection model <code>anomaly_example(input: [24,2], output[1,1])</code>, which generates a 0/1 label for every 24 rows of data. An example of its use is as follows:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">IoTDB</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">select</span><span style="color:#98C379;"> s1,s2</span><span style="color:#98C379;"> from</span><span style="color:#98C379;"> root.</span><span style="color:#E5C07B;">**</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;">root.eg.etth.s0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">root.eg.etth.s1</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;">1990-01-01T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7855</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.611</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-02T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7818</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.61</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-03T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7867</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6293</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-04T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.786</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.637</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-05T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7849</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.653</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-06T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7866</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6537</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-01-07T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7886</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.662</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-03-31T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7585</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.678</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-01T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7587</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6763</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-02T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.76</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6813</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-03T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7669</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.684</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-04T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7645</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.677</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-05T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7625</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.68</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-06T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.7617</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6917</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;"> 96</span></span>
<span class="line"></span>
<span class="line"><span style="color:#61AFEF;">IoTDB</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">call</span><span style="color:#98C379;"> inference</span><span style="color:#ABB2BF;">(</span><span style="color:#61AFEF;">anomaly_example,</span><span style="color:#61AFEF;">&quot;select s0,s1 from root.**&quot;</span><span style="color:#61AFEF;">,</span><span style="color:#98C379;"> generateTime=True,</span><span style="color:#98C379;"> window=count</span><span style="color:#ABB2BF;">(</span><span style="color:#61AFEF;">24,24</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;">Time</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">_result_0</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;">1990-04-06T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-04-30T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-05-24T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1990-06-17T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0</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;"> 4</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 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>In the result set, each row&#39;s label corresponds to the output of the anomaly detection model after inputting each group of 24 rows of data.</p><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/AI-capability/TimeSeries-Large-Model.html">Time Series Large Model</a></p><h2 id="_5-privilege-management" tabindex="-1"><a class="header-anchor" href="#_5-privilege-management"><span>5. Privilege Management</span></a></h2><p>When using AINode related functions, the authentication of IoTDB itself can be used to do a permission management, users can only use the model management related functions when they have the USE_MODEL permission. When using the inference function, the user needs to have the permission to access the source sequence corresponding to the SQL of the input model.</p><table><thead><tr><th>Privilege Name</th><th>Privilege Scope</th><th>Administrator User (default ROOT)</th><th>Normal User</th><th>Path Related</th></tr></thead><tbody><tr><td>USE_MODEL</td><td>create model/show models/drop model</td><td></td><td></td><td>x</td></tr><tr><td>READ_DATA</td><td>call inference</td><td></td><td></td><td></td></tr></tbody></table><h2 id="_6-practical-examples" tabindex="-1"><a class="header-anchor" href="#_6-practical-examples"><span>6. Practical Examples</span></a></h2><h3 id="_6-1-power-load-prediction" tabindex="-1"><a class="header-anchor" href="#_6-1-power-load-prediction"><span>6.1 Power Load Prediction</span></a></h3><p>In some industrial scenarios, there is a need to predict power loads, which can be used to optimise power supply, conserve energy and resources, support planning and expansion, and enhance power system reliability.</p><p>The data for the test set of ETTh1 that we use is <a href="/img/ETTh1.csv">ETTh1</a>.</p><p>It contains power data collected at 1h intervals, and each data consists of load and oil temperature as High UseFul Load, High UseLess Load, Middle UseLess Load, Low UseFul Load, Low UseLess Load, Oil Temperature.</p><p>On this dataset, the model inference function of IoTDB-ML can predict the oil temperature in the future period of time through the relationship between the past values of high, middle and low use loads and the corresponding time stamp oil temperature, which empowers the automatic regulation and monitoring of grid transformers.</p><h4 id="step-1-data-import" tabindex="-1"><a class="header-anchor" href="#step-1-data-import"><span>Step 1: Data Import</span></a></h4><p>Users can import the ETT dataset into IoTDB using <code>import-data.sh</code> in the tools folder</p><p><code>Bash bash ./import-data.sh -ft csv -h 127.0.0.1 -p 6667 -u root -pw root -s /path/ETTh1.csv </code></p><h4 id="step-2-model-import" tabindex="-1"><a class="header-anchor" href="#step-2-model-import"><span>Step 2: Model Import</span></a></h4><p>We can enter the following SQL in iotdb-cli to pull a trained model from huggingface for registration for subsequent inference.</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 dlinear </span><span style="color:#C678DD;">using</span><span style="color:#ABB2BF;"> uri </span><span style="color:#98C379;">&#39;https://huggingface.co/hvlgo/dlinear/tree/main&#39;</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>This model is trained on the lighter weight deep model DLinear, which is able to capture as many trends within a sequence and relationships between variables as possible with relatively fast inference, making it more suitable for fast real-time prediction than other deeper models.</p><h4 id="step-3-model-inference" tabindex="-1"><a class="header-anchor" href="#step-3-model-inference"><span>Step 3: Model inference</span></a></h4><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">IoTDB</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">select</span><span style="color:#98C379;"> s0,s1,s2,s3,s4,s5,s6</span><span style="color:#98C379;"> from</span><span style="color:#98C379;"> root.eg.etth</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;">root.eg.etth.s0</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">root.eg.etth.s1</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">root.eg.etth.s2</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">root.eg.etth.s3</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">root.eg.etth.s4</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">root.eg.etth.s5</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">root.eg.etth.s6</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;">2017-10-20T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">10.449</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">3.885</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.706</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2.025</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2.041</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.944</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.864</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-20T01:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">11.119</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">3.952</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.813</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2.31</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2.071</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.005</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.442</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-20T02:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">9.511</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2.88</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">7.533</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.564</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.949</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.883</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.16</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-20T03:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">9.645</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2.21</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">7.249</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.066</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.828</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.914</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">7.949</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-23T20:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.105</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.938</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">4.371</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">-0.569</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">3.533</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.279</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">9.708</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-23T21:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">7.167</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.206</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">4.087</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">-0.462</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">3.107</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.432</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.723</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-23T22:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">7.1</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.34</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">4.015</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">-0.32</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2.772</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.31</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.864</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-23T23:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">9.176</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2.746</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">7.107</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.635</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2.65</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.097</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">9.004</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;"> 96</span></span>
<span class="line"></span>
<span class="line"><span style="color:#61AFEF;">IoTDB</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">call</span><span style="color:#98C379;"> inference</span><span style="color:#ABB2BF;">(</span><span style="color:#61AFEF;">dlinear_example,</span><span style="color:#98C379;"> &quot;select s0,s1,s2,s3,s4,s5,s6 from root.eg.etth&quot;,</span><span style="color:#98C379;"> generateTime=True,</span><span style="color:#98C379;"> window=head</span><span style="color:#ABB2BF;">(</span><span style="color:#61AFEF;">96</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;">Time</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">output0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">output1</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">output2</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">output3</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">output4</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">output5</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">output6</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;">2017-10-23T23:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">10.319546</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">3.1450553</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">7.877341</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.5723765</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2.7303758</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.1362307</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.867775</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-24T01:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">10.443649</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">3.3286757</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">7.8593454</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.7675098</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2.560634</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.1177158</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.920919</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-24T03:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">10.883752</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">3.2341104</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.47036</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.6116762</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2.4874182</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.1760603</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.798939</span><span style="color:#ABB2BF;">| </span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-26T19:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.0115595</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.2995274</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">6.9900327</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">-0.098746896</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">3.04923</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.176214</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">9.548782</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-26T21:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">8.612427</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2.5036244</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">5.6790237</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0.66474205</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2.8870275</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.2051733</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">9.330128</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017-10-26T22:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">10.096699</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">3.399722</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">6.9909</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.7478468</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2.7642853</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1.1119363</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">9.541455</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;"> 48</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 class="line-number"></div><div class="line-number"></div></div></div><p>We compare the results of the prediction of the oil temperature with the real results, and we can get the following image.</p><p>The data before 10/24 00:00 represents the past data input to the model, the blue line after 10/24 00:00 is the oil temperature forecast result given by the model, and the red line is the actual oil temperature data from the dataset (used for comparison).</p><figure><img src="/img/AINode-analysis1.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>As can be seen, we have used the relationship between the six load information and the corresponding time oil temperatures for the past 96 hours (4 days) to model the possible changes in this data for the oil temperature for the next 48 hours (2 days) based on the inter-relationships between the sequences learned previously, and it can be seen that the predicted curves maintain a high degree of consistency in trend with the actual results after visualisation.</p><h3 id="_6-2-power-prediction" tabindex="-1"><a class="header-anchor" href="#_6-2-power-prediction"><span>6.2 Power Prediction</span></a></h3><p>Power monitoring of current, voltage and power data is required in substations for detecting potential grid problems, identifying faults in the power system, effectively managing grid loads and analysing power system performance and trends.</p><p>We have used the current, voltage and power data in a substation to form a dataset in a real scenario. The dataset consists of data such as A-phase voltage, B-phase voltage, and C-phase voltage collected every 5 - 6s for a time span of nearly four months in the substation.</p><p>The test set data content is <a href="/img/data.csv">data</a>.</p><p>On this dataset, the model inference function of IoTDB-ML can predict the C-phase voltage in the future period through the previous values and corresponding timestamps of A-phase voltage, B-phase voltage and C-phase voltage, empowering the monitoring management of the substation.</p><h4 id="step-1-data-import-1" tabindex="-1"><a class="header-anchor" href="#step-1-data-import-1"><span>Step 1: Data Import</span></a></h4><p>Users can import the dataset using <code>import-data.sh</code> in the tools folder</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;">bash</span><span style="color:#98C379;"> ./import-data.sh</span><span style="color:#D19A66;"> -ft</span><span style="color:#98C379;"> csv</span><span style="color:#D19A66;"> -h</span><span style="color:#D19A66;"> 127.0.0.1</span><span style="color:#D19A66;"> -p</span><span style="color:#D19A66;"> 6667</span><span style="color:#D19A66;"> -u</span><span style="color:#98C379;"> root</span><span style="color:#D19A66;"> -pw</span><span style="color:#98C379;"> root</span><span style="color:#D19A66;"> -s</span><span style="color:#98C379;"> /path/data.csv</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="step-2-model-import-1" tabindex="-1"><a class="header-anchor" href="#step-2-model-import-1"><span>Step 2: Model Import</span></a></h4><p>We can select built-in models or registered models in IoTDB CLI for subsequent inference.</p><p>We use the built-in model STLForecaster for prediction. STLForecaster is a time series forecasting method based on the STL implementation in the statsmodels library.</p><h4 id="step-3-model-inference-1" tabindex="-1"><a class="header-anchor" href="#step-3-model-inference-1"><span>Step 3: Model Inference</span></a></h4><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">IoTDB</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;"> root.eg.voltage</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;">root.eg.voltage.s0</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">root.eg.voltage.s1</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">root.eg.voltage.s2</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;">2023-02-14T20:38:32.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2038.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2028.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2041.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2023-02-14T20:38:38.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2014.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2005.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2018.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2023-02-14T20:38:44.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2014.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2005.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2018.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2023-02-14T20:47:52.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2024.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2016.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2027.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2023-02-14T20:47:57.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2024.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2016.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2027.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2023-02-14T20:48:03.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2024.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2016.0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">2027.0</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;"> 96</span></span>
<span class="line"></span>
<span class="line"><span style="color:#61AFEF;">IoTDB</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">call</span><span style="color:#98C379;"> inference</span><span style="color:#ABB2BF;">(</span><span style="color:#61AFEF;">_STLForecaster,</span><span style="color:#98C379;"> &quot;select s0,s1,s2 from root.eg.voltage&quot;,</span><span style="color:#98C379;"> generateTime=True,</span><span style="color:#98C379;"> window=head</span><span style="color:#ABB2BF;">(</span><span style="color:#61AFEF;">96</span><span style="color:#ABB2BF;">)</span><span style="color:#98C379;">,predict_length=</span><span style="color:#D19A66;">48</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;">Time</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">output0</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">output1</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">output2</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;">2023-02-14T20:48:03.000+08:00</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2026.3601</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2018.2953</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2029.4257</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2023-02-14T20:48:09.000+08:00</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2019.1538</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2011.4361</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2022.0888</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2023-02-14T20:48:15.000+08:00</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2025.5074</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2017.4522</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2028.5199</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2023-02-14T20:52:15.000+08:00</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2022.2336</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2015.0290</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2025.1023</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2023-02-14T20:52:21.000+08:00</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2015.7241</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2008.8975</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2018.5085</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2023-02-14T20:52:27.000+08:00</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2022.0777</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2014.9136</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2024.9396</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2023-02-14T20:52:33.000+08:00</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2015.5682</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2008.7821</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">2018.3458</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;"> 48</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 class="line-number"></div><div class="line-number"></div></div></div><p>Comparing the predicted results of the C-phase voltage with the real results, we can get the following image.</p><p>The data before 02/14 20:48 represents the past data input to the model, the blue line after 02/14 20:48 is the predicted result of phase C voltage given by the model, while the red line is the actual phase C voltage data from the dataset (used for comparison).</p><figure><img src="/img/AINode-analysis2.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>It can be seen that we used the voltage data from the past 10 minutes and, based on the previously learned inter-sequence relationships, modeled the possible changes in the phase C voltage data for the next 5 minutes. The visualized forecast curve shows a certain degree of synchronicity with the actual results in terms of trend.</p><h3 id="_6-3-anomaly-detection" tabindex="-1"><a class="header-anchor" href="#_6-3-anomaly-detection"><span>6.3 Anomaly Detection</span></a></h3><p>In the civil aviation and transport industry, there exists a need for anomaly detection of the number of passengers travelling on an aircraft. The results of anomaly detection can be used to guide the adjustment of flight scheduling to make the organisation more efficient.</p><p>Airline Passengers is a time-series dataset that records the number of international air passengers between 1949 and 1960, sampled at one-month intervals. The dataset contains a total of one time series. The dataset is <a href="/img/airline.csv">airline</a>.<br> On this dataset, the model inference function of IoTDB-ML can empower the transport industry by capturing the changing patterns of the sequence in order to detect anomalies at the sequence time points.</p><h4 id="step-1-data-import-2" tabindex="-1"><a class="header-anchor" href="#step-1-data-import-2"><span>Step 1: Data Import</span></a></h4><p>Users can import the dataset using <code>import-data.sh</code> in the tools folder</p><p><code>Bash bash ./import-data.sh -ft csv -h 127.0.0.1 -p 6667 -u root -pw root -s /path/data.csv </code></p><h4 id="step-2-model-inference" tabindex="-1"><a class="header-anchor" href="#step-2-model-inference"><span>Step 2: Model Inference</span></a></h4><p>IoTDB has some built-in machine learning algorithms that can be used directly, a sample prediction using one of the anomaly detection algorithms is shown below:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-shell"><span class="line"><span style="color:#61AFEF;">IoTDB</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;"> root.eg.airline</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;">root.eg.airline.s0</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;">1949-01-31T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">224.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1949-02-28T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">118.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1949-03-31T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">132.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1949-04-30T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">129.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1960-09-30T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">508.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1960-10-31T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">461.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1960-11-30T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">390.0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1960-12-31T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">432.0</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;"> 144</span></span>
<span class="line"></span>
<span class="line"><span style="color:#61AFEF;">IoTDB</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#98C379;">call</span><span style="color:#98C379;"> inference</span><span style="color:#ABB2BF;">(</span><span style="color:#61AFEF;">_Stray,</span><span style="color:#98C379;"> &quot;select s0 from root.eg.airline&quot;,</span><span style="color:#98C379;"> generateTime=True,</span><span style="color:#98C379;"> k=</span><span style="color:#D19A66;">2</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;">Time</span><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">output0</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;">1960-12-31T00:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1961-01-31T08:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1961-02-28T08:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1961-03-31T08:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#56B6C2;">......</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1972-06-30T08:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1972-07-31T08:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">1</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1972-08-31T08:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1972-09-30T08:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1972-10-31T08:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0</span><span style="color:#ABB2BF;">|</span></span>
<span class="line"><span style="color:#ABB2BF;">|</span><span style="color:#61AFEF;">1972-11-30T08:00:00.000+08:00</span><span style="color:#ABB2BF;">| </span><span style="color:#61AFEF;">0</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;"> 144</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 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>We plot the results detected as anomalies to get the following image. Where the blue curve is the original time series and the time points specially marked with red dots are the time points that the algorithm detects as anomalies.</p><figure><img src="/img/s6.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>It can be seen that the Stray model has modelled the input sequence changes and successfully detected the time points where anomalies occur.</p></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/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/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</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>