diff --git a/.github/workflows/master-develop-test.yml b/.github/workflows/master-develop-test.yml index deba579..e74371c 100644 --- a/.github/workflows/master-develop-test.yml +++ b/.github/workflows/master-develop-test.yml @@ -17,7 +17,7 @@ jobs: fail-fast: false matrix: os: [ ubuntu-latest ] - python-version: [ '3.9' ] + python-version: [ '3.10' ] env: POSTGRES_DB: mlflow diff --git a/.github/workflows/pull_request_tests.yml b/.github/workflows/pull_request_tests.yml index 92893a4..06cbf8a 100644 --- a/.github/workflows/pull_request_tests.yml +++ b/.github/workflows/pull_request_tests.yml @@ -14,7 +14,7 @@ jobs: fail-fast: false matrix: os: [ ubuntu-latest ] - python-version: [ '3.9' ] + python-version: [ '3.10' ] env: POSTGRES_DB: mlflow @@ -64,7 +64,7 @@ jobs: - name: Install python dependencies run: | python -m pip install --upgrade pip - pip install flake8 pytest pytest-cov . + pip install flake8 pytest pytest-cov torch . if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: start MLOps server diff --git a/.github/workflows/test_cli.yml b/.github/workflows/test_cli.yml index ea9ed41..7470418 100644 --- a/.github/workflows/test_cli.yml +++ b/.github/workflows/test_cli.yml @@ -14,7 +14,7 @@ jobs: fail-fast: false matrix: os: [ ubuntu-latest ] - python-version: [ '3.9' ] + python-version: [ '3.10' ] env: POSTGRES_DB: mlflow diff --git a/mlflow_server/mlflow/Dockerfile b/mlflow_server/mlflow/Dockerfile index 2dd242f..82aa60c 100644 --- a/mlflow_server/mlflow/Dockerfile +++ b/mlflow_server/mlflow/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.9-slim +FROM python:3.10-slim ENV VIRTUAL_ENV=/opt/venv RUN python3 -m venv $VIRTUAL_ENV diff --git a/mlflow_server/mlflow/requirements_mlflow.txt b/mlflow_server/mlflow/requirements_mlflow.txt index 94d7c96..9010baa 100644 --- a/mlflow_server/mlflow/requirements_mlflow.txt +++ b/mlflow_server/mlflow/requirements_mlflow.txt @@ -1,7 +1,7 @@ -mlflow==2.10.0 +mlflow==3.11.1 psycopg2 psycopg2-binary sqlalchemy pymysql boto3 -requests==2.31.0 +requests==2.33.0 diff --git a/mlops/Experiment.py b/mlops/Experiment.py index c74a3df..e8e56ff 100644 --- a/mlops/Experiment.py +++ b/mlops/Experiment.py @@ -9,17 +9,23 @@ import boto3 import docker import mlflow -import torch.cuda from git import Repo from minio import Minio -from torch.cuda import is_available from mlops import LOG_FILE from mlops.ProjectFile import ProjectFile logger = logging.getLogger(__name__) +def _cuda_available(): + try: + subprocess.run(['nvidia-smi'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, check=True) + return True + except (subprocess.CalledProcessError, FileNotFoundError): + return False + + class Experiment: def __init__(self, script, config_path, project_path: str = '.', @@ -70,7 +76,7 @@ def check_gpu(self): logger.debug(f'GPU resource not explicitly requested {e} defaulting to True') request_gpu = True - logger.info(f'GPU requested: {request_gpu}, cuda_available {torch.cuda.is_available()}') + logger.info(f'GPU requested: {request_gpu}, cuda_available {_cuda_available()}') if request_gpu: return True else: @@ -285,9 +291,9 @@ def run(self, **kwargs): logger.debug(f'Mounting shared env file for minio authentication to /root/.aws') docker_args_default['v'] = '~/.aws/credentials:/root/.aws/credentials:ro' - if self.use_gpu and not is_available(): + if self.use_gpu and not _cuda_available(): logger.warn('requested GPU resource but none available - using CPU') - elif self.use_gpu and is_available(): + elif self.use_gpu and _cuda_available(): gpu_params = {'gpus': 'all', 'runtime': 'nvidia'} logger.info('Adding docker args: {0}'.format(gpu_params)) diff --git a/mlops/_version.py b/mlops/_version.py index 1624eed..8787f4c 100644 --- a/mlops/_version.py +++ b/mlops/_version.py @@ -1 +1 @@ -__version__='0.10.0' +__version__='0.10.1' diff --git a/requirements.txt b/requirements.txt index 17d5cde..0343be5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,18 +1,12 @@ -mlflow==2.10.0 +mlflow==3.11.1 boto3 docker minio pytest -colorlog -xnat -monai -itk fsspec tqdm -pandas -matplotlib GitPython PyYAML -requests==2.31.0 +requests==2.33.0 click setuptools diff --git a/setup.cfg b/setup.cfg index 3c5169a..6c1af39 100644 --- a/setup.cfg +++ b/setup.cfg @@ -10,23 +10,17 @@ long_description_content_type = text/markdown [options] packages = find: -python_requires = <3.12 +python_requires = >=3.10 install_requires = - mlflow==2.10.0 + mlflow>=3.11.1,<4.0.0 boto3 docker minio - colorlog - monai - itk - pandas - matplotlib - xnat GitPython PyYAML click tqdm - requests==2.31.0 + requests>=2.33.0 [options.entry_points] console_scripts = diff --git a/tests/data/Dockerfile b/tests/data/Dockerfile index 8ccd4de..d701e1f 100644 --- a/tests/data/Dockerfile +++ b/tests/data/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.9-slim +FROM python:3.10-slim RUN apt-get update && apt-get install -y git # Configure application diff --git a/tests/data/requirements.txt b/tests/data/requirements.txt index 5ed8c83..13f0d97 100644 --- a/tests/data/requirements.txt +++ b/tests/data/requirements.txt @@ -1,6 +1,6 @@ numpy -f https://download.pytorch.org/whl/torch_stable.html -torch==2.0.1+cpu -mlflow==2.10.0 +torch==2.8.0 +mlflow==3.11.1 boto3 -requests==2.31.0 +requests==2.33.0