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_idformat - 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:
| Column | Type | Description |
|---|---|---|
unique_id | string | Series identifier (use "series_0" for a single series) |
ds | datetime | Timestamp |
y | float | Target 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
| Parameter | Effect | Typical Range |
|---|---|---|
h | Forecast horizon | 1–720 |
input_size | Context window | 2×h to 10×h |
max_steps | Training iterations | 500–5000 |
batch_size | Mini-batch size | 16–256 |
dropout | Regularization | 0.0–0.3 |
Frequency reference: H hourly · D daily · W weekly · M monthly · Q quarterly · T minute.
Related
- PatchTST Forecasting — Transformer alternative
- TimesFM 2.5 — zero-shot, no training needed
- Classical Forecasting — Prophet, ARIMA for simple patterns