Initial Commit

This commit is contained in:
Victor Mylle
2023-11-07 18:00:20 +00:00
commit 56c763a6f4
41 changed files with 358954 additions and 0 deletions

BIN
src/notebooks/checkpoint.pt Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,230 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"sys.path.append('..')\n",
"from data import DataProcessor\n",
"from trainers.quantile_trainer import QuantileTrainer\n",
"from trainers.autoregressive_trainer import AutoRegressiveTrainer\n",
"from trainers.trainer import Trainer\n",
"from utils.clearml import ClearMLHelper\n",
"from models import *\n",
"from losses import *\n",
"import torch\n",
"import numpy as np\n",
"from torch.nn import MSELoss, L1Loss\n",
"from datetime import datetime\n",
"import pytz\n",
"import torch.nn as nn\n",
"\n",
"# auto reload\n",
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Non-AutoRegressive"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"InsecureRequestWarning: Certificate verification is disabled! Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ClearML Task: created new task id=909da25a8d214f75ab3858506ae615e8\n",
"2023-11-07 16:29:35,665 - clearml.Task - INFO - Storing jupyter notebook directly as code\n",
"ClearML results page: http://192.168.1.182:8080/projects/2e46d4af6f1e4c399cf9f5aa30bc8795/experiments/909da25a8d214f75ab3858506ae615e8/output/log\n",
"2023-11-07 16:30:08,121 - clearml.model - WARNING - 500 model found when searching for `file:///workspaces/Thesis/src/notebooks/checkpoint.pt`\n",
"2023-11-07 16:30:08,123 - clearml.model - WARNING - Selected model `Quantile Regression - Linear` (id=bc0cb0d7fc614e2e8b0edf5b85348646)\n",
"2023-11-07 16:30:08,130 - clearml.frameworks - INFO - Found existing registered model id=bc0cb0d7fc614e2e8b0edf5b85348646 [/workspaces/Thesis/src/notebooks/checkpoint.pt] reusing it.\n",
"2023-11-07 16:30:08,677 - clearml.Task - INFO - Completed model upload to http://192.168.1.182:8081/Thesis/NrvForecast/Non-AutoRegressive%20-%20Non%20Linear%20%283%20hidden%20layers%20-%201024%20units%29.909da25a8d214f75ab3858506ae615e8/models/checkpoint.pt\n",
"2023-11-07 16:30:10,302 - clearml.Task - INFO - Completed model upload to http://192.168.1.182:8081/Thesis/NrvForecast/Non-AutoRegressive%20-%20Non%20Linear%20%283%20hidden%20layers%20-%201024%20units%29.909da25a8d214f75ab3858506ae615e8/models/checkpoint.pt\n",
"Early stopping triggered\n"
]
}
],
"source": [
"#### Hyperparameters ####\n",
"inputDim = 96\n",
"learningRate = 0.0003\n",
"epochs = 50\n",
"\n",
"# model = LinearRegression(inputDim, 96)\n",
"model = NonLinearRegression(inputDim, 96, hiddenSize=1024, numLayers=5)\n",
"optimizer = torch.optim.Adam(model.parameters(), lr=learningRate)\n",
"\n",
"#### Data Processor ####\n",
"data_processor = DataProcessor()\n",
"data_processor.set_batch_size(1024)\n",
"\n",
"\n",
"data_processor.set_train_range((datetime(year=2015, month=1, day=1, tzinfo=pytz.UTC), datetime(year=2022, month=11, day=30, tzinfo=pytz.UTC)))\n",
"data_processor.set_test_range((datetime(year=2023, month=1, day=1, tzinfo=pytz.UTC), np.inf))\n",
"\n",
"#### ClearML ####\n",
"clearml_helper = ClearMLHelper(project_name=\"Thesis/NrvForecast\")\n",
"\n",
"#### Trainer ####\n",
"trainer = Trainer(model, optimizer, nn.MSELoss(), data_processor, \"cuda\", debug=False, clearml_helper=clearml_helper)\n",
"trainer.add_metrics_to_track([MSELoss(), L1Loss()])\n",
"trainer.plot_every(10)\n",
"trainer.early_stopping(patience=10)\n",
"trainer.train(epochs=epochs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# AutoRegressive Simple Linear"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ClearML Task: created new task id=6467cef37fdc408d95b89f0dca0e26dd\n",
"ClearML results page: http://192.168.1.182:8080/projects/2e46d4af6f1e4c399cf9f5aa30bc8795/experiments/6467cef37fdc408d95b89f0dca0e26dd/output/log\n",
"Early stopping triggered\n"
]
}
],
"source": [
"#### Hyperparameters ####\n",
"inputDim = 96\n",
"learningRate = 0.0003\n",
"epochs = 50\n",
"\n",
"# model = LinearRegression(inputDim, 1)\n",
"model = NonLinearRegression(inputDim, 1, hiddenSize=1024, numLayers=5)\n",
"optimizer = torch.optim.Adam(model.parameters(), lr=learningRate)\n",
"\n",
"#### Data Processor ####\n",
"data_processor = DataProcessor()\n",
"data_processor.set_batch_size(1024)\n",
"\n",
"\n",
"data_processor.set_train_range((datetime(year=2015, month=1, day=1, tzinfo=pytz.UTC), datetime(year=2022, month=11, day=30, tzinfo=pytz.UTC)))\n",
"data_processor.set_test_range((datetime(year=2023, month=1, day=1, tzinfo=pytz.UTC), np.inf))\n",
"\n",
"#### ClearML ####\n",
"clearml_helper = ClearMLHelper(project_name=\"Thesis/NrvForecast\")\n",
"\n",
"#### Trainer ####\n",
"trainer = AutoRegressiveTrainer(model, optimizer, nn.MSELoss(), data_processor, \"cuda\", debug=False, clearml_helper=clearml_helper)\n",
"trainer.add_metrics_to_track([MSELoss(), L1Loss()])\n",
"trainer.plot_every(10)\n",
"trainer.early_stopping(patience=10)\n",
"trainer.train(epochs=epochs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Quantile Regression"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/workspaces/Thesis/src/notebooks/../trainers/quantile_trainer.py:16: UserWarning:\n",
"\n",
"To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ClearML Task: created new task id=07a2dc72793446d8a8101eafce0d80db\n",
"ClearML results page: http://192.168.1.182:8080/projects/2e46d4af6f1e4c399cf9f5aa30bc8795/experiments/07a2dc72793446d8a8101eafce0d80db/output/log\n",
"Early stopping triggered\n"
]
}
],
"source": [
"#### Hyperparameters ####\n",
"inputDim = 96\n",
"learningRate = 0.0003\n",
"epochs = 50\n",
"\n",
"quantiles = torch.tensor([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]).to(\"cuda\")\n",
"\n",
"# model = LinearRegression(inputDim, len(quantiles))\n",
"model = NonLinearRegression(inputDim, len(quantiles), hiddenSize=1024, numLayers=5)\n",
"model.output_size = 1\n",
"optimizer = torch.optim.Adam(model.parameters(), lr=learningRate)\n",
"\n",
"#### Data Processor ####\n",
"data_processor = DataProcessor()\n",
"data_processor.set_batch_size(1024)\n",
"\n",
"data_processor.set_train_range((-np.inf, datetime(year=2022, month=11, day=30, tzinfo=pytz.UTC)))\n",
"data_processor.set_test_range((datetime(year=2023, month=1, day=1, tzinfo=pytz.UTC), np.inf))\n",
"\n",
"#### ClearML ####\n",
"clearml_helper = ClearMLHelper(project_name=\"Thesis/NrvForecast\")\n",
"\n",
"#### Trainer ####\n",
"trainer = QuantileTrainer(model, optimizer, data_processor, quantiles, \"cuda\", debug=True, clearml_helper=clearml_helper)\n",
"trainer.add_metrics_to_track([PinballLoss(quantiles), MSELoss(), L1Loss()])\n",
"trainer.early_stopping(patience=10)\n",
"trainer.plot_every(10)\n",
"trainer.train(epochs=epochs)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
}
},
"nbformat": 4,
"nbformat_minor": 2
}