From 636db8ae117bc3e7bb36d08eb3f57a583a7a141e Mon Sep 17 00:00:00 2001 From: attilabalint Date: Thu, 20 Jun 2024 14:34:32 +0200 Subject: [PATCH] updated statsforecast models --- Makefile | 46 ++++++------------- docker/base/darts/Dockerfile | 2 +- docker/base/sktime/Dockerfile | 2 +- docker/base/statsforecast/Dockerfile | 2 +- models/sf-auto-ces/Dockerfile | 4 +- models/sf-auto-ces/requirements.txt | 2 +- models/sf-auto-ces/src/main.py | 2 +- models/sf-historic-average/Dockerfile | 2 +- models/sf-historic-average/requirements.txt | 2 +- models/sf-mstl/Dockerfile | 2 +- models/sf-mstl/requirements.txt | 2 +- models/sf-naive-seasonal-avg/Dockerfile | 5 +- models/sf-naive-seasonal-avg/requirements.txt | 2 +- models/sf-naive-seasonal-avg/src/main.py | 4 +- models/sf-naive-seasonal/Dockerfile | 4 +- models/sf-naive-seasonal/requirements.txt | 2 +- models/sf-naive-seasonal/src/main.py | 2 +- models/sf-naive/Dockerfile | 2 +- models/sf-naive/requirements.txt | 2 +- models/sf-seasonal-es/Dockerfile | 5 +- models/sf-seasonal-es/requirements.txt | 2 +- models/sf-seasonal-es/src/main.py | 4 +- 22 files changed, 38 insertions(+), 64 deletions(-) diff --git a/Makefile b/Makefile index 2b2a1dc..90de175 100644 --- a/Makefile +++ b/Makefile @@ -129,13 +129,13 @@ download-salesforce-moirai: models/salesforce-moirai/models/moirai-1.0-R-small \ DOCKER_HUB_REPOSITORY := $(DOCKER_HUB_REPOSITORY) ENFOBENCH_VERSION := $(shell hatch version) -MODEL_NAME := sf-naive -IMAGE_TAG := $(ENFOBENCH_VERSION)-$(MODEL_NAME) +MODEL := sf-naive +IMAGE_TAG := $(ENFOBENCH_VERSION)-$(MODEL) DEFAULT_PORT := 3000 -DARTS_VERSION := 0.27.2 -SKTIME_VERSION := 0.26.1 -STATSFORECAST_VERSION := 1.5.0 +DARTS_VERSION := 0.30.0 +SKTIME_VERSION := 0.30.1 +STATSFORECAST_VERSION := 1.7.5 CHRONOS_VERSION := 1.2.0 @@ -143,28 +143,33 @@ CHRONOS_VERSION := 1.2.0 ## Build base image for darts base-image-darts: docker build --build-arg DARTS_VERSION=$(DARTS_VERSION) -t $(DOCKER_HUB_REPOSITORY):base-u8darts-$(DARTS_VERSION) ./docker/base/darts + docker push $(DOCKER_HUB_REPOSITORY):base-u8darts-$(DARTS_VERSION) .PHONY: base-image-sktime ## Build base image for sktime base-image-sktime: docker build --build-arg SKTIME_VERSION=$(SKTIME_VERSION) -t $(DOCKER_HUB_REPOSITORY):base-sktime-$(SKTIME_VERSION) ./docker/base/sktime + docker push $(DOCKER_HUB_REPOSITORY):base-sktime-$(SKTIME_VERSION) .PHONY: base-image-statsforecast ## Build base image for statsforecast base-image-statsforecast: docker build --build-arg STATSFORECAST_VERSION=$(STATSFORECAST_VERSION) -t $(DOCKER_HUB_REPOSITORY):base-statsforecast-$(STATSFORECAST_VERSION) ./docker/base/statsforecast + docker push $(DOCKER_HUB_REPOSITORY):base-statsforecast-$(STATSFORECAST_VERSION) .PHONY: base-image-amazon-chronos base-image-amazon-chronos: docker build --build-arg CHRONOS_VERSION=$(CHRONOS_VERSION) -t $(DOCKER_HUB_REPOSITORY):base-amazon-chronos-$(CHRONOS_VERSION) ./docker/base/amazon-chronos + docker push $(DOCKER_HUB_REPOSITORY):base-amazon-chronos-$(CHRONOS_VERSION) .PHONY: base-image-salesforce-moirai base-image-salesforce-moirai: docker build -t $(DOCKER_HUB_REPOSITORY):base-salesforce-moirai ./docker/base/salesforce-moirai + docker push $(DOCKER_HUB_REPOSITORY):base-salesforce-moirai ## Build base images @@ -175,45 +180,24 @@ base-images: base-image-darts \ base-image-salesforce-moirai -.PHONY: push-base-images -## Push base images to Docker Hub -push-base-images: - docker push $(DOCKER_HUB_REPOSITORY):base-u8darts-$(DARTS_VERSION) - docker push $(DOCKER_HUB_REPOSITORY):base-sktime-$(SKTIME_VERSION) - docker push $(DOCKER_HUB_REPOSITORY):base-statsforecast-$(STATSFORECAST_VERSION) - docker push $(DOCKER_HUB_REPOSITORY):base-amazon-chronos-$(CHRONOS_VERSION) - docker push $(DOCKER_HUB_REPOSITORY):base-salesforce-moirai - - -.PHONY: image +.PHONY: build-image ## Build a model image -image: - docker build -t $(DOCKER_HUB_REPOSITORY):$(IMAGE_TAG) ./models/$(MODEL_NAME) +build-image: + docker build -t $(DOCKER_HUB_REPOSITORY):$(IMAGE_TAG) ./models/$(MODEL) .PHONY: push-image ## Push a model image to Docker Hub -push-image: image +push-image: docker push $(DOCKER_HUB_REPOSITORY):$(IMAGE_TAG) .PHONY: run-image ## Run a model image -run-image: image +run-image: docker run -it --rm -p $(DEFAULT_PORT):3000 $(DOCKER_HUB_REPOSITORY):$(IMAGE_TAG) -MODELS = $(shell ls -d ./models/* | xargs -n 1 basename) -## Make all model images -images: - $(foreach var,$(MODELS), $(MAKE) image MODEL_NAME=$(var);) - - -## Push images to Docker Hub -push-images: - $(foreach var,$(MODELS), $(MAKE) push-image MODEL_NAME=$(var);) - - ################################################################################# # Self Documenting Commands # ################################################################################# diff --git a/docker/base/darts/Dockerfile b/docker/base/darts/Dockerfile index 8c598bc..43a3790 100644 --- a/docker/base/darts/Dockerfile +++ b/docker/base/darts/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.11.6-slim-bookworm +FROM python:3.11-slim-bookworm WORKDIR /usr/local/app diff --git a/docker/base/sktime/Dockerfile b/docker/base/sktime/Dockerfile index a2c19f9..a4f6e20 100644 --- a/docker/base/sktime/Dockerfile +++ b/docker/base/sktime/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.11.6-slim-bookworm +FROM python:3.11-slim-bookworm WORKDIR /usr/local/app diff --git a/docker/base/statsforecast/Dockerfile b/docker/base/statsforecast/Dockerfile index 28d4d2a..c0e1246 100644 --- a/docker/base/statsforecast/Dockerfile +++ b/docker/base/statsforecast/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.11.6-slim-bookworm +FROM python:3.11-slim-bookworm WORKDIR /usr/local/app diff --git a/models/sf-auto-ces/Dockerfile b/models/sf-auto-ces/Dockerfile index 065ced5..5f00301 100644 --- a/models/sf-auto-ces/Dockerfile +++ b/models/sf-auto-ces/Dockerfile @@ -1,4 +1,4 @@ -FROM attilabalint/enfobench-models:base-statsforecast-1.5.0 +FROM attilabalint/enfobench-models:base-statsforecast-1.7.5 WORKDIR /usr/local/app @@ -7,7 +7,5 @@ RUN pip install --no-cache-dir -r /usr/local/app/requirements.txt COPY ./src /usr/local/app/src -ENV ENFOBENCH_MODEL_SEASONALITY="1D" - EXPOSE 3000 CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "3000"] diff --git a/models/sf-auto-ces/requirements.txt b/models/sf-auto-ces/requirements.txt index a72ecee..bd04001 100644 --- a/models/sf-auto-ces/requirements.txt +++ b/models/sf-auto-ces/requirements.txt @@ -1 +1 @@ -enfobench>=0.6.0,<0.7.0 \ No newline at end of file +enfobench>=0.7.0,<0.8.0 \ No newline at end of file diff --git a/models/sf-auto-ces/src/main.py b/models/sf-auto-ces/src/main.py index 97ac14a..93cbbec 100644 --- a/models/sf-auto-ces/src/main.py +++ b/models/sf-auto-ces/src/main.py @@ -62,7 +62,7 @@ def forecast( # Load parameters -seasonality = os.getenv("ENFOBENCH_MODEL_SEASONALITY") +seasonality = os.getenv("ENFOBENCH_MODEL_SEASONALITY", "1D") # Instantiate your model model = AutoCESModel(seasonality=seasonality) diff --git a/models/sf-historic-average/Dockerfile b/models/sf-historic-average/Dockerfile index c739512..5f00301 100644 --- a/models/sf-historic-average/Dockerfile +++ b/models/sf-historic-average/Dockerfile @@ -1,4 +1,4 @@ -FROM attilabalint/enfobench-models:base-statsforecast-1.5.0 +FROM attilabalint/enfobench-models:base-statsforecast-1.7.5 WORKDIR /usr/local/app diff --git a/models/sf-historic-average/requirements.txt b/models/sf-historic-average/requirements.txt index a72ecee..bd04001 100644 --- a/models/sf-historic-average/requirements.txt +++ b/models/sf-historic-average/requirements.txt @@ -1 +1 @@ -enfobench>=0.6.0,<0.7.0 \ No newline at end of file +enfobench>=0.7.0,<0.8.0 \ No newline at end of file diff --git a/models/sf-mstl/Dockerfile b/models/sf-mstl/Dockerfile index c739512..5f00301 100644 --- a/models/sf-mstl/Dockerfile +++ b/models/sf-mstl/Dockerfile @@ -1,4 +1,4 @@ -FROM attilabalint/enfobench-models:base-statsforecast-1.5.0 +FROM attilabalint/enfobench-models:base-statsforecast-1.7.5 WORKDIR /usr/local/app diff --git a/models/sf-mstl/requirements.txt b/models/sf-mstl/requirements.txt index a72ecee..bd04001 100644 --- a/models/sf-mstl/requirements.txt +++ b/models/sf-mstl/requirements.txt @@ -1 +1 @@ -enfobench>=0.6.0,<0.7.0 \ No newline at end of file +enfobench>=0.7.0,<0.8.0 \ No newline at end of file diff --git a/models/sf-naive-seasonal-avg/Dockerfile b/models/sf-naive-seasonal-avg/Dockerfile index 2a027d0..5f00301 100644 --- a/models/sf-naive-seasonal-avg/Dockerfile +++ b/models/sf-naive-seasonal-avg/Dockerfile @@ -1,4 +1,4 @@ -FROM attilabalint/enfobench-models:base-statsforecast-1.5.0 +FROM attilabalint/enfobench-models:base-statsforecast-1.7.5 WORKDIR /usr/local/app @@ -7,8 +7,5 @@ RUN pip install --no-cache-dir -r /usr/local/app/requirements.txt COPY ./src /usr/local/app/src -ENV ENFOBENCH_MODEL_SEASONALITY="1D" -ENV ENFOBENCH_MODEL_WINDOW_SIZE="28" - EXPOSE 3000 CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "3000"] diff --git a/models/sf-naive-seasonal-avg/requirements.txt b/models/sf-naive-seasonal-avg/requirements.txt index a72ecee..bd04001 100644 --- a/models/sf-naive-seasonal-avg/requirements.txt +++ b/models/sf-naive-seasonal-avg/requirements.txt @@ -1 +1 @@ -enfobench>=0.6.0,<0.7.0 \ No newline at end of file +enfobench>=0.7.0,<0.8.0 \ No newline at end of file diff --git a/models/sf-naive-seasonal-avg/src/main.py b/models/sf-naive-seasonal-avg/src/main.py index 967ea45..9683edf 100644 --- a/models/sf-naive-seasonal-avg/src/main.py +++ b/models/sf-naive-seasonal-avg/src/main.py @@ -58,8 +58,8 @@ def forecast( # Load parameters -seasonality = os.getenv("ENFOBENCH_MODEL_SEASONALITY") -window_size = int(os.getenv("ENFOBENCH_MODEL_WINDOW_SIZE")) +seasonality = os.getenv("ENFOBENCH_MODEL_SEASONALITY", "1D") +window_size = int(os.getenv("ENFOBENCH_MODEL_WINDOW_SIZE", "28")) # Instantiate your model model = SeasonalWindowAverageModel(seasonality, window_size) diff --git a/models/sf-naive-seasonal/Dockerfile b/models/sf-naive-seasonal/Dockerfile index 065ced5..5f00301 100644 --- a/models/sf-naive-seasonal/Dockerfile +++ b/models/sf-naive-seasonal/Dockerfile @@ -1,4 +1,4 @@ -FROM attilabalint/enfobench-models:base-statsforecast-1.5.0 +FROM attilabalint/enfobench-models:base-statsforecast-1.7.5 WORKDIR /usr/local/app @@ -7,7 +7,5 @@ RUN pip install --no-cache-dir -r /usr/local/app/requirements.txt COPY ./src /usr/local/app/src -ENV ENFOBENCH_MODEL_SEASONALITY="1D" - EXPOSE 3000 CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "3000"] diff --git a/models/sf-naive-seasonal/requirements.txt b/models/sf-naive-seasonal/requirements.txt index a72ecee..bd04001 100644 --- a/models/sf-naive-seasonal/requirements.txt +++ b/models/sf-naive-seasonal/requirements.txt @@ -1 +1 @@ -enfobench>=0.6.0,<0.7.0 \ No newline at end of file +enfobench>=0.7.0,<0.8.0 \ No newline at end of file diff --git a/models/sf-naive-seasonal/src/main.py b/models/sf-naive-seasonal/src/main.py index b86f860..0f36214 100644 --- a/models/sf-naive-seasonal/src/main.py +++ b/models/sf-naive-seasonal/src/main.py @@ -51,7 +51,7 @@ def forecast( # Load parameters -seasonality = os.getenv("ENFOBENCH_MODEL_SEASONALITY") +seasonality = os.getenv("ENFOBENCH_MODEL_SEASONALITY", "1D") # Instantiate your model model = SeasonalNaiveModel(seasonality) diff --git a/models/sf-naive/Dockerfile b/models/sf-naive/Dockerfile index c739512..5f00301 100644 --- a/models/sf-naive/Dockerfile +++ b/models/sf-naive/Dockerfile @@ -1,4 +1,4 @@ -FROM attilabalint/enfobench-models:base-statsforecast-1.5.0 +FROM attilabalint/enfobench-models:base-statsforecast-1.7.5 WORKDIR /usr/local/app diff --git a/models/sf-naive/requirements.txt b/models/sf-naive/requirements.txt index a72ecee..bd04001 100644 --- a/models/sf-naive/requirements.txt +++ b/models/sf-naive/requirements.txt @@ -1 +1 @@ -enfobench>=0.6.0,<0.7.0 \ No newline at end of file +enfobench>=0.7.0,<0.8.0 \ No newline at end of file diff --git a/models/sf-seasonal-es/Dockerfile b/models/sf-seasonal-es/Dockerfile index 148505b..5f00301 100644 --- a/models/sf-seasonal-es/Dockerfile +++ b/models/sf-seasonal-es/Dockerfile @@ -1,4 +1,4 @@ -FROM attilabalint/enfobench-models:base-statsforecast-1.5.0 +FROM attilabalint/enfobench-models:base-statsforecast-1.7.5 WORKDIR /usr/local/app @@ -7,8 +7,5 @@ RUN pip install --no-cache-dir -r /usr/local/app/requirements.txt COPY ./src /usr/local/app/src -ENV ENFOBENCH_MODEL_SEASONALITY="1D" -ENV ENFOBENCH_MODEL_ALPHA="0.5" - EXPOSE 3000 CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "3000"] diff --git a/models/sf-seasonal-es/requirements.txt b/models/sf-seasonal-es/requirements.txt index a72ecee..bd04001 100644 --- a/models/sf-seasonal-es/requirements.txt +++ b/models/sf-seasonal-es/requirements.txt @@ -1 +1 @@ -enfobench>=0.6.0,<0.7.0 \ No newline at end of file +enfobench>=0.7.0,<0.8.0 \ No newline at end of file diff --git a/models/sf-seasonal-es/src/main.py b/models/sf-seasonal-es/src/main.py index e362a78..1c5f3f4 100644 --- a/models/sf-seasonal-es/src/main.py +++ b/models/sf-seasonal-es/src/main.py @@ -66,8 +66,8 @@ def forecast( # Load parameters -seasonality = os.getenv("ENFOBENCH_MODEL_SEASONALITY") -alpha = float(os.getenv("ENFOBENCH_MODEL_ALPHA")) +seasonality = os.getenv("ENFOBENCH_MODEL_SEASONALITY", "1D") +alpha = float(os.getenv("ENFOBENCH_MODEL_ALPHA", "0.5")) # Instantiate your model model = SeasonalExponentialSmoothingModel(seasonality=seasonality, alpha=alpha)