Initial Commit
This commit is contained in:
230
src/notebooks/training.ipynb
Normal file
230
src/notebooks/training.ipynb
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user