From de872d35318a66a708952ca1a3d9dd4c8a08df63 Mon Sep 17 00:00:00 2001 From: Clayton Davis Date: Wed, 22 Jun 2022 10:32:32 -0400 Subject: [PATCH 1/4] chore: added ability to select pip and conda repos by setting PIP_REPO and CONDA_CHANNEL_ALIAS environment variables --- service/.env | 4 ++++ service/app.py | 5 ++++- service/flavours/mlflow/Dockerfile | 17 ++++++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/service/.env b/service/.env index d9574f35..f2882c98 100644 --- a/service/.env +++ b/service/.env @@ -1,5 +1,9 @@ # APP PORT=5000 +#Testing repos +#PYPI_REPO=http://local.repo/repodir +#CONDA_CHANNEL_ALIAS=http://successfully.failed + # mount path inside of Kaniko container # this path works on Windows and POSIX. Windows will interpret root to mean "C" drive so /data will internally map to C:/data MOUNT_PATH_DIR=/data diff --git a/service/app.py b/service/app.py index 7f239edf..8c439220 100644 --- a/service/app.py +++ b/service/app.py @@ -35,7 +35,7 @@ load_dotenv() -CHASSIS_DEV = False +CHASSIS_DEV = True WINDOWS = True if os.name == 'nt' else False HOME_DIR = str(Path.home()) @@ -364,6 +364,9 @@ def create_job_object( f'--build-arg=MODEL_CLASS={module_name}', # Modzy is the default interface. '--build-arg=INTERFACE=modzy', + f'--build-arg=PYPI_REPO={os.getenv("PYPI_REPO") if os.getenv("PYPI_REPO") is not None else "https://pypi.org/simple"}', + f'--build-arg=CONDA_THANNEL_ALIAS={os.getenv("CONDA_CHANNEL_ALIAS") if os.getenv("CONDA_CHANNEL_ALIAS") is not None else "channel_alias: https://conda.anaconda.org/"}', + ] modzy_uploader_args = [ diff --git a/service/flavours/mlflow/Dockerfile b/service/flavours/mlflow/Dockerfile index a62b6b9f..39fc9a6a 100644 --- a/service/flavours/mlflow/Dockerfile +++ b/service/flavours/mlflow/Dockerfile @@ -10,9 +10,12 @@ ARG MODEL_CLASS ARG INTERFACE # This is the model.yaml file. ARG MODZY_METADATA_PATH +#PyPi Repo +ARG PYPI_REPO +#Conda Repo +ARG CONDA_THANNEL_ALIAS #OMI Annotations - LABEL ml.openmodel.interfaces=["${INTERFACE}"] LABEL ml.openml.model_name="${MODEL_NAME}" LABEL ml.openmodel.protocols=[["v2"]] @@ -22,6 +25,18 @@ LABEL ml.openmodel.port="45000" WORKDIR /app RUN apt-get update && apt-get install -y build-essential cmake + +#set Python repos +RUN mkdir ~/.pip +RUN echo '[global]' >| ~/.pip/pip.conf +RUN echo 'index-url = '${PYPI_REPO} >> ~/.pip/pip.conf + +RUN echo 'channels:'>| ~/.condarc +RUN echo ' - r'>> ~/.condarc +RUN echo ' - defaults'>> ~/.condarc +RUN echo 'show_channel_urls: True'>> ~/.condarc +RUN echo ${CONDA_THANNEL_ALIAS} >> ~/.condarc + # create env ENV CONDA_ENV chassis-env From f69f9375d3711e373c6b423a94c7c0ead7ebcda8 Mon Sep 17 00:00:00 2001 From: Clayton Davis Date: Wed, 22 Jun 2022 12:58:46 -0400 Subject: [PATCH 2/4] chore: added ability to select pip and conda repos by setting PIP_REPO and CONDA_CHANNEL_ALIAS environment variables to all Dockerfiles --- service/app.py | 4 ++-- service/flavours/mlflow/Dockerfile | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/service/app.py b/service/app.py index 8c439220..1fe29cd5 100644 --- a/service/app.py +++ b/service/app.py @@ -364,8 +364,8 @@ def create_job_object( f'--build-arg=MODEL_CLASS={module_name}', # Modzy is the default interface. '--build-arg=INTERFACE=modzy', - f'--build-arg=PYPI_REPO={os.getenv("PYPI_REPO") if os.getenv("PYPI_REPO") is not None else "https://pypi.org/simple"}', - f'--build-arg=CONDA_THANNEL_ALIAS={os.getenv("CONDA_CHANNEL_ALIAS") if os.getenv("CONDA_CHANNEL_ALIAS") is not None else "channel_alias: https://conda.anaconda.org/"}', + f'--build-arg=CHASSIS_PYPI_REPO={os.getenv("PYPI_REPO") if os.getenv("PYPI_REPO") is not None else "https://pypi.org/simple"}', + f'--build-arg=CHASSIS_CONDA_CHANNEL_ALIAS={os.getenv("CONDA_CHANNEL_ALIAS") if os.getenv("CONDA_CHANNEL_ALIAS") is not None else "channel_alias: https://conda.anaconda.org/"}', ] diff --git a/service/flavours/mlflow/Dockerfile b/service/flavours/mlflow/Dockerfile index 39fc9a6a..add5b5b7 100644 --- a/service/flavours/mlflow/Dockerfile +++ b/service/flavours/mlflow/Dockerfile @@ -11,9 +11,9 @@ ARG INTERFACE # This is the model.yaml file. ARG MODZY_METADATA_PATH #PyPi Repo -ARG PYPI_REPO +ARG CHASSIS_PYPI_REPO #Conda Repo -ARG CONDA_THANNEL_ALIAS +ARG CHASSIS_CONDA_CHANNEL_ALIAS #OMI Annotations LABEL ml.openmodel.interfaces=["${INTERFACE}"] @@ -29,13 +29,13 @@ RUN apt-get update && apt-get install -y build-essential cmake #set Python repos RUN mkdir ~/.pip RUN echo '[global]' >| ~/.pip/pip.conf -RUN echo 'index-url = '${PYPI_REPO} >> ~/.pip/pip.conf +RUN echo 'index-url = '${CHASSIS_PYPI_REPO} >> ~/.pip/pip.conf RUN echo 'channels:'>| ~/.condarc RUN echo ' - r'>> ~/.condarc RUN echo ' - defaults'>> ~/.condarc RUN echo 'show_channel_urls: True'>> ~/.condarc -RUN echo ${CONDA_THANNEL_ALIAS} >> ~/.condarc +RUN echo ${CHASSIS_CONDA_CHANNEL_ALIAS} >> ~/.condarc # create env ENV CONDA_ENV chassis-env From 06a4691ee45c9cc7bab37327dbac86d17cf1a9e5 Mon Sep 17 00:00:00 2001 From: Clayton Davis Date: Wed, 22 Jun 2022 12:58:57 -0400 Subject: [PATCH 3/4] chore: added ability to select pip and conda repos by setting PIP_REPO and CONDA_CHANNEL_ALIAS environment variables to all Dockerfiles --- service/flavours/mlflow/Dockerfile.arm | 16 ++++++++++++++++ service/flavours/mlflow/Dockerfile.arm.gpu | 15 +++++++++++++++ service/flavours/mlflow/Dockerfile.gpu | 15 +++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/service/flavours/mlflow/Dockerfile.arm b/service/flavours/mlflow/Dockerfile.arm index d19283e4..0ee1fa28 100644 --- a/service/flavours/mlflow/Dockerfile.arm +++ b/service/flavours/mlflow/Dockerfile.arm @@ -21,9 +21,25 @@ ARG MODEL_CLASS ARG INTERFACE # This is the model.yaml file. ARG MODZY_METADATA_PATH +#PyPi Repo +ARG CHASSIS_PYPI_REPO +#Conda Repo +ARG CHASSIS_CONDA_CHANNEL_ALIAS WORKDIR /app +#set Python repos +RUN mkdir ~/.pip +RUN echo '[global]' >| ~/.pip/pip.conf +RUN echo 'index-url = '${CHASSIS_PYPI_REPO} >> ~/.pip/pip.conf + +RUN echo 'channels:'>| ~/.condarc +RUN echo ' - r'>> ~/.condarc +RUN echo ' - defaults'>> ~/.condarc +RUN echo 'show_channel_urls: True'>> ~/.condarc +RUN echo ${CHASSIS_CONDA_CHANNEL_ALIAS} >> ~/.condarc + + COPY flavours/${MODEL_CLASS}/${MODEL_DIR}/conda.yaml ./conda.yaml ENV CONDA_ENV chassis-env diff --git a/service/flavours/mlflow/Dockerfile.arm.gpu b/service/flavours/mlflow/Dockerfile.arm.gpu index 24e463b3..67ea2313 100644 --- a/service/flavours/mlflow/Dockerfile.arm.gpu +++ b/service/flavours/mlflow/Dockerfile.arm.gpu @@ -18,9 +18,24 @@ ARG MODEL_CLASS ARG INTERFACE # This is the model.yaml file. ARG MODZY_METADATA_PATH +#PyPi Repo +ARG CHASSIS_PYPI_REPO +#Conda Repo +ARG CHASSIS_CONDA_CHANNEL_ALIAS WORKDIR /app +#set Python repos +RUN mkdir ~/.pip +RUN echo '[global]' >| ~/.pip/pip.conf +RUN echo 'index-url = '${CHASSIS_PYPI_REPO} >> ~/.pip/pip.conf + +RUN echo 'channels:'>| ~/.condarc +RUN echo ' - r'>> ~/.condarc +RUN echo ' - defaults'>> ~/.condarc +RUN echo 'show_channel_urls: True'>> ~/.condarc +RUN echo ${CHASSIS_CONDA_CHANNEL_ALIAS} >> ~/.condarc + COPY flavours/${MODEL_CLASS}/${MODEL_DIR}/requirements.txt ./user_requirements.txt RUN apt-get update && apt-get install libffi-dev diff --git a/service/flavours/mlflow/Dockerfile.gpu b/service/flavours/mlflow/Dockerfile.gpu index 881300f0..a239fc8b 100644 --- a/service/flavours/mlflow/Dockerfile.gpu +++ b/service/flavours/mlflow/Dockerfile.gpu @@ -20,9 +20,24 @@ ARG MODEL_CLASS ARG INTERFACE # This is the model.yaml file. ARG MODZY_METADATA_PATH +#PyPi Repo +ARG CHASSIS_PYPI_REPO +#Conda Repo +ARG CHASSIS_CONDA_CHANNEL_ALIAS WORKDIR /app +#set Python repos +RUN mkdir ~/.pip +RUN echo '[global]' >| ~/.pip/pip.conf +RUN echo 'index-url = '${CHASSIS_PYPI_REPO} >> ~/.pip/pip.conf + +RUN echo 'channels:'>| ~/.condarc +RUN echo ' - r'>> ~/.condarc +RUN echo ' - defaults'>> ~/.condarc +RUN echo 'show_channel_urls: True'>> ~/.condarc +RUN echo ${CHASSIS_CONDA_CHANNEL_ALIAS} >> ~/.condarc + COPY flavours/${MODEL_CLASS}/${MODEL_DIR}/conda.yaml ./conda.yaml ENV CONDA_ENV chassis-env From f9edcaf3f39f120702749585206b127579c087e8 Mon Sep 17 00:00:00 2001 From: Clayton Davis Date: Thu, 23 Jun 2022 22:49:37 -0400 Subject: [PATCH 4/4] chore: minor versioning updates --- chassisml_sdk/examples/requirements.txt | 2 +- service/app.py | 2 +- service/flavours/mlflow/Dockerfile.arm | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/chassisml_sdk/examples/requirements.txt b/chassisml_sdk/examples/requirements.txt index 83257b98..c2d147f5 100644 --- a/chassisml_sdk/examples/requirements.txt +++ b/chassisml_sdk/examples/requirements.txt @@ -1,5 +1,5 @@ modzy-sdk>=0.6.0 -chassisml==1.1.2 +chassisml>=1.3 cloudpickle==2.0.0 ipykernel==6.6.0 mlflow>=1.23.1 diff --git a/service/app.py b/service/app.py index 1fe29cd5..0fb801fd 100644 --- a/service/app.py +++ b/service/app.py @@ -35,7 +35,7 @@ load_dotenv() -CHASSIS_DEV = True +CHASSIS_DEV = False WINDOWS = True if os.name == 'nt' else False HOME_DIR = str(Path.home()) diff --git a/service/flavours/mlflow/Dockerfile.arm b/service/flavours/mlflow/Dockerfile.arm index 0ee1fa28..27a587a1 100644 --- a/service/flavours/mlflow/Dockerfile.arm +++ b/service/flavours/mlflow/Dockerfile.arm @@ -2,8 +2,7 @@ # - flavours # - mlflow -FROM balenalib/aarch64-ubuntu-python:3-latest-build - +FROM balenalib/aarch64-ubuntu-python:3-latest-build-20220513 RUN [ "cross-build-start" ] # Install miniconda