Demo數據集準備
我們使用(yong)公開(kai)的里面的電(dian)力(li)需(xu)(xu)求數據(ju)(ju),作為預測(ce)算(suan)法(fa)的數據(ju)(ju)來源,基于(yu)歷史數據(ju)(ju)預測(ce)未來若(ruo)干小時的電(dian)力(li)需(xu)(xu)求。數據(ju)(ju)集的采集頻次為30分鐘,單位與時間戳未提供(gong)。為了(le)方便(bian)演示,按照頻率從2025-01-01 00:00:00開(kai)始向前倒(dao)推生成時間戳,并存(cun)儲在(zai)TDengine對應的表里。
數據集中包含5個文件,我們使用編號最大的一個子集來完成演示。該數據文件,放置于//github.com/taosdata/TDgpt-demo倉庫的demo_data目錄下(xia),請參考下(xia)文(wen)的步驟導入TDengine以完成(cheng)演示。數據(ju)集(ji)的統計信息(xi)如下(xia):

演示環境準備
環境要求
您可基于Linux、Mac以及Windows操作系統完成Demo系統的運行。但為(wei)使用docker-compose,您計算機上需要安裝有下(xia)屬軟件(jian):
- Git
- Docker Engine: v20.10+
- Docker Compose: v2.20+
Demo中包含3個docker鏡像(xiang) (TDengine, TDgpt, Grafana),以及(ji)一(yi)組用于產生(sheng)預測/異常檢測結果的shell腳本。組件(jian)版本的要(yao)求如(ru)下:

克隆Demo倉庫到本地
git clone //github.com/taosdata/TDgpt-demo
cd TDgpt-demo
chmod 775 analyse.sh
文件(jian)夾(jia)下包含docker-compose.yml、tdengine.yml兩(liang)個yml文件(jian)。docker-compose.yml 包含了所有一鍵啟動(dong)demo所需的鏡(jing)像配置信息,其引用tdengine.yml作為(wei)Grafana的數據源配置。
TDgpt-demo/demo_data下包含三(san)個csv文件(electricity_demand.csv、wind_power.csv、ec2_failure.csv),以(yi)及三(san)個同前綴sql腳(jiao)本,分別對應電(dian)力需求預測、風(feng)力發電(dian)預測和運(yun)維監控異(yi)常檢測場景(jing)。
TDgpt-demo/demo_dashboard下包含了(le)三(san)個(ge)json文件(electricity_demand_forecast.json、wind_power_forecast.json、ec2_failure_anomaly.json),分別對應(ying)三(san)個(ge)場景的(de)看板(ban)。
docker-compose.yml中已經定(ding)義(yi)了TDengine容(rong)器的持(chi)久化(hua)卷:tdengine-data,待容(rong)器啟動后,使(shi)用(yong)docker cp命令(ling)將demo_data拷貝至容(rong)器內使(shi)用(yong)。
運行和關閉Demo
注意:在運行demo前,請根據您宿主機的架構(CPU類型),編輯docker-compose.yml文件,為TDengine指定對應的platform參數:linux/amd64(Intel/AMD CPU)或linux/arm64(ARM CPU)。TDgpt必須統一使用linux/amd64參數。
進入docker-compose.yml文件(jian)所在的目錄執行如下(xia)命令,啟動TDengine、TDgpt和(he)Grafana一體化演(yan)示環境:
docker-compose up -d
首次運行(xing)時,等待10s后請執行(xing)如(ru)下命令將(jiang)TDgpt的Anode節點(dian)注冊到(dao)TDengine:
docker exec -it tdengine taos -s "create anode 'tdgpt:6090'"
在宿主機執行下列(lie)命令,初始化體驗測試環(huan)境的數據:
docker cp analyse.sh tdengine:/var/lib/taos
docker cp demo_data tdengine:/var/lib/taos
docker exec -it tdengine taos -s "source /var/lib/taos/demo_data/init_electricity_demand.sql"
關閉演示環境,請使用:
docker-compose down
進行演示
- 打開瀏覽器,輸入//localhost:3000,并用默認的用戶名口令 admin/admin 登錄Grafana。
- 登錄成功后,進入路徑”Home → Dashboards”頁面,并且導入electricity_demand_forecast.json文件。

- 導入后,選擇“electricity_demand”這個面板。面板已經配置好了真實值、TDtsfm_1以及HoltWinters的預測結果。當前只有真實值的數據曲線。
- 我們以analyze.sh腳本,來進行預測。首先完成TDtsfm_1算法的演示:
docker exec -it tdengine /var/lib/taos/analyse.sh --type forecast --db tdgpt_demo --table electricity_demand --stable single_val --algorithm tdtsfm_1 --params "fc_rows=48,wncheck=0" --start "2024-01-01" --window 30d --step 1d
上(shang)述shell腳本,將從指定的(de)(de)(de)起始時(shi)間開始(2024-01-01)以前(qian)一(yi)(yi)個(ge)月的(de)(de)(de)數(shu)據為輸(shu)入(ru)(ru),使用(yong)TDtsfm_1算法預測(ce)當前(qian)下一(yi)(yi)天的(de)(de)(de)每30mins的(de)(de)(de)電力需求(qiu)(共計48個(ge)數(shu)據點),直(zhi)到(dao)達到(dao)electricity_demand 表中最后(hou)一(yi)(yi)天的(de)(de)(de)記錄,并將結(jie)果(guo)寫入(ru)(ru)electricity_demand_tdtsfm_1_result 表中。執行(xing)新的(de)(de)(de)預測(ce)前(qian),腳本會新建/清空對應的(de)(de)(de)結(jie)果(guo)表。執行(xing)過程(cheng)中將持續在(zai)控(kong)制臺上(shang),按照天為單位推進(jin)輸(shu)出如下的(de)(de)(de)執行(xing)結(jie)果(guo):
taos> INSERT INTO tdgpt_demo.electricity_demand_tdtsfm_1_result SELECT _frowts, forecast(val, 'algorithm=tdtsfm_1,fc_rows=48,wncheck=0')
FROM tdgpt_demo.electricity_deman
WHERE ts >= '2024-01-12 00:00:00' AND ts < '2024-02-11 00:00:00'
Insert OK, 48 row(s) affected (0.238208s)
- Grafana的看板上,配置刷新頻率為5s,將動態顯示預測結果的黃色曲線,直觀呈現與實際值的對比。為了展示清晰,請按住command鍵點擊左下角的Real以及TDtsfm_1圖例(Mac下,Windows下請使用win鍵),從而只保留這兩條曲線展示。




- 完成HoltWinters模型的演示:
docker exec -it tdengine /var/lib/taos/analyse.sh --type forecast --db tdgpt_demo --table electricity_demand --stable single_val --algorithm holtwinters --params "rows=48,period=48,wncheck=0,trend=add,seasonal=add" --start "2024-01-01" --window 30d --step 1d
與第四步類似,HoltWinters模型將動態(tai)輸出(chu)預(yu)測(ce)(ce)結(jie)果(guo)并呈現在看板上(shang)。從預(yu)測(ce)(ce)結(jie)果(guo)中(zhong)可以看到,TDtsfm_1對數據(ju)的預(yu)測(ce)(ce)精(jing)度顯著優于傳(chuan)統的統計學方法HoltWinters。除了預(yu)測(ce)(ce)精(jing)度外,HoltWinters算法的最大問題(ti)是(shi)需要非(fei)常精(jing)細化(hua)的對參數進行調整評估,否(fou)則還容易(yi)出(chu)現下圖中(zhong)這種頻繁發(fa)生的預(yu)測(ce)(ce)值奇(qi)異(yi)點。

基(ji)于鼠(shu)標(biao)圈(quan)選的(de)(de)方式,我們可以查看(kan)一段時(shi)間(jian)內的(de)(de)細粒(li)度(du)預測結果對比:

您也可以嘗試其(qi)他算法或(huo)模型,來找(zhao)到最合適自己場景的算法和(he)模型。
Demo腳本使用詳解
腳本概述
analyse.sh腳本用于(yu)在(zai) TDengine 數據庫上(shang)執行時間序列預測和異常檢測分析,支持滑動(dong)窗口算法(fa)處理。主要功能(neng)包括:
- 時間序列預測 :使用 HoltWinters 等算法進行未來值預測 。
- 異常檢測 :使用 k-Sigma 等算法識別數據異常點 。
- 自動窗口滑動 :支持自定義窗口大小和步長進行連續分析。
參數說明

TDengine推薦使用超級(ji)表(biao)來進行(xing)數據建模。因此,Demo中建立(li)了一(yi)個名為 single_val 的超級(ji)表(biao),包含(han)ts (timestamp類(lei)(lei)型) 和val (float類(lei)(lei)型),以及標簽定義(yi)scene (varchar (64) )。現階(jie)段(duan)TDgpt只支持單列值輸(shu)入(ru)輸(shu)出,因此這(zhe)個超級(ji)表(biao)可(ke)以作為所有源數據表(biao)和結果表(biao)的結構(gou)定義(yi)。子(zi)表(biao)的表(biao)名與tag名稱保持一(yi)致即可(ke)。
db參數(shu)指定了源數(shu)據(ju)表和結果(guo)表隸屬的數(shu)據(ju)庫。結果(guo)表將以(yi)【源表名(ming)稱】_【算(suan)法名(ming)稱】_【result】格式存(cun)儲。Grafana里面(mian)通過查詢結果(guo)表實現分析結果(guo)和原始數(shu)據(ju)的對比。
一般情況下,對于(yu)非(fei)必(bi)填(tian)項,用戶在demo過(guo)程中只需(xu)要(yao)設置–start參(can)數以節(jie)省(sheng)運行(xing)時間。對于(yu)必(bi)填(tian)項,請參(can)考示例值進行(xing)設置。
時間格式說明
step和window參(can)數指(zhi)定的滑(hua)動步長和分(fen)析窗口大小需(xu)符合如下(xia)參(can)數約定:

腳本執行流程
graph TDgpt_Demo
A[開始] --> B[參數解析與驗證]
B --> C{是否指定start?}
C -->|否| D[查詢最小時間戳]
C -->|是| E[轉換時間格式]
D --> E
E --> F[計算時間窗口]
F --> G[生成結果表]
G --> H{是否到達數據終點?}
H -->|否| I[生成并執行SQL]
I --> H
H -->|是| J[輸出完成信息]
使用更多的數據
參(can)考「運行(xing)和關閉Demo」章(zhang)節里electricity_demand.sql腳本的內容(rong),確保按(an)照(zhao)規定格(ge)式(shi)將(jiang)數據(ju)準(zhun)備為csv格(ge)式(shi)(逗號(hao)分隔,值需要(yao)用英文雙(shuang)引號(hao)括起(qi)來),即可將(jiang)數據(ju)導入TDengine。然后,請使用「進(jin)行(xing)演示」章(zhang)節中的方法來生成(cheng)預(yu)測結果(guo),并(bing)調整Grafana中的看板以(yi)實現和實際(ji)數據(ju)的對比。
結論
在本文中(zhong),我們(men)展示(shi)了使用TDgpt來進行電力需求預測的(de)(de)(de)完整流(liu)程(cheng)。從(cong)中(zhong)可以(yi)看(kan)到,基于TDgpt 來構建時(shi)序數據分析,能夠(gou)以(yi)SQL方式實(shi)現與應用的(de)(de)(de)便捷集成,還可以(yi)用Grafana 進行展示(shi),大(da)大(da)降(jiang)低(di)開發和應用時(shi)序數據預測和異常檢測的(de)(de)(de)成本。
從預測效(xiao)果來(lai)看,基于transformer架構的(de)(de)預訓練模(mo)型(xing)(xing)(xing)TDtsfm_1在使(shi)用的(de)(de)數據集上展(zhan)示出顯著優于Holtwinters模(mo)型(xing)(xing)(xing)的(de)(de)效(xiao)果。在不同(tong)(tong)的(de)(de)實際場景下(xia),用戶需要針對數據特點,針對模(mo)型(xing)(xing)(xing)算(suan)法進行選擇和參數調優,也可以選擇不同(tong)(tong)的(de)(de)算(suan)法或模(mo)型(xing)(xing)(xing)進行嘗試。
TDengine 的企業(ye)版中,TDgpt 將為(wei)用戶提供更多的選擇:
- 模型選擇器。模型選擇器可以自動根據用戶的歷史數據集,對購買的所有模型進行準確性評估。用戶可選擇最適合自己場景的模型或算法進行部署和應用。
- TDtsfm_1自研模型的重訓練及微調。TDtsfm_1基于海量時序數據進行了預訓練,在大部分場景下相比于傳統的機器學習和統計預測模型都會有顯著的準確率優勢。如果用戶對于模型預測準確度有更高的要求,可以申請購買 TDgpt 企業版的預訓練服務。使用用戶的場景歷史數據進行預訓練,在特定場景下的預測效果可能更佳。
- 第三方解決方案。濤思數據聯合國內外時序分析/異常檢測專業廠家、研究機構,為用戶提供專業的分析解決方案,包括落地過程中的實施服務等。
關于(yu)企(qi)業版更多信息,點擊下方按鈕,咨詢解決方案專家。
關于背景
電(dian)力需求預測(ce)作(zuo)為現代能源(yuan)管理(li)的(de)核(he)心(xin)工具,其核(he)心(xin)價值貫穿電(dian)力系統的(de)全生命周期。在資(zi)(zi)(zi)源(yuan)配(pei)置(zhi)層面,通過精準(zhun)預判(pan)用(yong)電(dian)趨(qu)勢,可優(you)化發(fa)電(dian)設(she)施布(bu)局與電(dian)網升級節奏,避免超(chao)前投(tou)資(zi)(zi)(zi)造成的(de)資(zi)(zi)(zi)源(yuan)閑置(zhi)或滯后建設(she)引發(fa)的(de)供應缺(que)口,典型場(chang)景(jing)中(zhong)可使基礎設(she)施投(tou)資(zi)(zi)(zi)效率提(ti)升15%-20%。對于(yu)電(dian)力運營(ying)商而言,負荷預測(ce)支(zhi)撐著從燃(ran)料采(cai)購(gou)到(dao)機(ji)組調度的(de)動(dong)態優(you)化,在火力發(fa)電(dian)領(ling)域(yu)已實現噸煤(mei)發(fa)電(dian)量2%以上的(de)能效提(ti)升,同時通過削峰填谷降低電(dian)網備用(yong)容(rong)量需求,顯(xian)著壓縮系統運行(xing)成本。
在(zai)能源(yuan)安全維度,預(yu)(yu)測(ce)(ce)技(ji)術構建起電(dian)力(li)供(gong)需的(de)(de)(de)(de)緩沖機制。短期預(yu)(yu)測(ce)(ce)誤(wu)差每降低1個百分點,對應減少的(de)(de)(de)(de)緊急調(diao)峰成本可達區域(yu)電(dian)網日(ri)均運營費用的(de)(de)(de)(de)3%-5%,這在(zai)應對極(ji)端天氣或突發事(shi)件(jian)時尤為關(guan)鍵。而中(zhong)長(chang)期預(yu)(yu)測(ce)(ce)則為跨區域(yu)電(dian)力(li)互濟(ji)、儲(chu)能設施配置提供(gong)決策基線,有效緩解結構性(xing)缺(que)電(dian)風(feng)險。市場環(huan)境(jing)中(zhong),預(yu)(yu)測(ce)(ce)能力(li)直接轉(zhuan)化為經濟(ji)收益,發電(dian)企業通過日(ri)前96時段負荷預(yu)(yu)測(ce)(ce)優化報價(jia)策略,在(zai)電(dian)力(li)現貨市場中(zhong)可額外(wai)獲取10%-18%的(de)(de)(de)(de)價(jia)格套(tao)利(li)空間,工商用戶則借助負荷特性(xing)分析制定用能方案,實現年(nian)度電(dian)費支出5%-10%的(de)(de)(de)(de)降幅。
本文提供(gong)基(ji)于 docker-compose 快(kuai)速(su)(su)部署 TDgp 體驗(yan)測(ce)試環境的(de)指引,并基(ji)于這(zhe)個(ge)環境和真實的(de)數據,展(zhan)示日前預測(ce)電力需求的(de)全(quan)過程,便于大家快(kuai)速(su)(su)掌握 TDgpt,迅(xun)速(su)(su)讓自己擁有AI驅(qu)動的(de)時序數據預測(ce)與異常(chang)檢(jian)測(ce)的(de)能力。
關于TDgpt
TDgpt 是 TDengine 內(nei)置的(de)(de)時(shi)序數(shu)(shu)(shu)據(ju)(ju)(ju)分析(xi)智能(neng)體,它基于(yu) TDengine 的(de)(de)時(shi)序數(shu)(shu)(shu)據(ju)(ju)(ju)查詢功能(neng),通過(guo) SQL 提供運行時(shi)可動態擴展(zhan)和切換(huan)的(de)(de)時(shi)序數(shu)(shu)(shu)據(ju)(ju)(ju)高級(ji)分析(xi)的(de)(de)能(neng)力,包(bao)括時(shi)序數(shu)(shu)(shu)據(ju)(ju)(ju)預(yu)測(ce)和時(shi)序數(shu)(shu)(shu)據(ju)(ju)(ju)異常檢(jian)測(ce)。通過(guo)預(yu)置的(de)(de)時(shi)序大模型、大語言模型、機(ji)器學習、傳統的(de)(de)算(suan)法,TDgpt 能(neng)幫(bang)助工程師(shi)在10分鐘(zhong)內(nei)完(wan)成時(shi)序預(yu)測(ce)與(yu)異常檢(jian)測(ce)模型的(de)(de)上(shang)線,降低至少80%的(de)(de)時(shi)序分析(xi)模型研發和維護(hu)成本。
截止到(dao)3.3.6.0版(ban)(ban)本, 提供Arima、HoltWinters、LSTM、MLP 以(yi)及基(ji)于Transformer架(jia)構(gou)自(zi)研的TDtsfm (TDengine time series foundation model) v1版(ban)(ban)和其(qi)他時序(xu)(xu)模(mo)型(xing),以(yi)及k-Sigma、Interquartile range(IQR)、Grubbs、SHESD、Local Outlier Factor(LOF)、Autoencoder這六種(zhong)異常檢測模(mo)型(xing)。用戶可以(yi)根據自(zi)行接入(ru)自(zi)研或其(qi)他開(kai)源的時序(xu)(xu)模(mo)型(xing)或算法。


























