Skip to main content

BiTCN — Bidirectional Temporal Convolutional Network

Fast training · Bidirectional TCN · NeuralForecast-native


Overview

  • Model ID: bitcn-forecasting
  • Architecture: BiTCN (NeuralForecast / NIXTLA)
  • Framework: NeuralForecast (PyTorch Lightning backend)
  • Backend: forecasting specialist (specialists-ts-cu121)
  • specialist_type: forecasting
  • Hardware: GPU (small footprint, ~512 MB VRAM); also runs on CPU (slower)
  • Training time: 2–20 minutes (fast convergence)

BiTCN processes a series in both forward and backward directions with dilated causal convolutions, giving a large receptive field without the quadratic cost of attention — a strong, fast baseline.


When to Use

Perfect for:

  • Fast training iteration
  • Univariate forecasting (single series)
  • Multi-series forecasting with the NeuralForecast unique_id format
  • A strong baseline without Transformer complexity

Not ideal for:

  • Complex multivariate dependencies — try PatchTST
  • Zero-shot forecasting — use TimesFM 2.5
  • Very irregular timestamps — use Prophet

Training

Dataset format

BiTCN uses the NeuralForecast standard format — a CSV with three columns:

ColumnTypeDescription
unique_idstringSeries identifier (use "series_0" for a single series)
dsdatetimeTimestamp
yfloatTarget value
unique_id,ds,y
series_0,2020-01-01,102.3
series_0,2020-01-02,98.7
store_A,2020-01-01,1523.0
store_B,2020-01-01,892.0

Launch training

from colabhive import ColabHive

client = ColabHive(api_key="YOUR_KEY", account_id="YOUR_ACCOUNT")

dataset = client.datasets.upload(name="my-sales-dataset", file="./train.csv")

job = client.training.create(
model="bitcn-forecasting",
dataset_id=dataset.id,
hyperparameters={
"h": 30, # forecast horizon
"input_size": 180, # context window
"frequency": "D", # D=daily
"learning_rate": 1e-3,
"max_steps": 1000,
"batch_size": 32,
"dropout": 0.1,
},
)
job.wait()
print(job.get_metrics())

# Publish the trained model as an inference endpoint
endpoint = client.training.register_for_inference(
run_id=job.id,
name="bitcn-sales-endpoint",
description="BiTCN sales forecaster",
visibility="account",
)

The exact accepted hyperparameters come from the template's schema: GET /api/builder/v1/training/model-configs/{model_config_id}/schema.


Inference

result = client.endpoints.infer(
endpoint_id=endpoint.endpoint_id,
input_data={
"values": [102.3, 98.7, 105.1, 99.4, 103.8], # historical values
"horizon": 96,
"frequency": "D",
},
)
print(result)
curl -X POST "https://api.colabhive.com/api/builder/v1/endpoints/{ENDPOINT_ID}/infer" \
-H "X-Account-ID: YOUR_ACCOUNT_ID" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input": {"values": [102.3, 98.7, 105.1, 99.4], "horizon": 30, "frequency": "D"}}'

Hyperparameter Guide

ParameterEffectTypical Range
hForecast horizon1–720
input_sizeContext window2×h to 10×h
max_stepsTraining iterations500–5000
batch_sizeMini-batch size16–256
dropoutRegularization0.0–0.3

Frequency reference: H hourly · D daily · W weekly · M monthly · Q quarterly · T minute.