From ca321bd703abf38780c91fe24eb1db7711045e34 Mon Sep 17 00:00:00 2001 From: David Gardner Date: Tue, 21 Jan 2025 14:59:57 -0800 Subject: [PATCH 1/9] Lazily import pymilvus, allowing non-milvus workflows to be used when milvus is not installed (on ARM) --- examples/llm/vdb_upload/vdb_utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/llm/vdb_upload/vdb_utils.py b/examples/llm/vdb_upload/vdb_utils.py index 806d4e2e9..e4b764d93 100644 --- a/examples/llm/vdb_upload/vdb_utils.py +++ b/examples/llm/vdb_upload/vdb_utils.py @@ -15,7 +15,6 @@ import logging import typing -import pymilvus import yaml from morpheus.config import Config @@ -147,6 +146,8 @@ def build_milvus_config(resource_schema_config: dict): + import pymilvus + schema_fields = [] for field_data in resource_schema_config["schema_conf"]["schema_fields"]: field_data["dtype"] = DATA_TYPE_MAP.get(field_data["dtype"]) From 576b92b1c671eef0b1d9d56d5003986f5cf53635 Mon Sep 17 00:00:00 2001 From: David Gardner Date: Tue, 21 Jan 2025 15:42:06 -0800 Subject: [PATCH 2/9] Lazily import DATA_TYPE_MAP --- examples/llm/vdb_upload/vdb_utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/llm/vdb_upload/vdb_utils.py b/examples/llm/vdb_upload/vdb_utils.py index e4b764d93..11712c1fe 100644 --- a/examples/llm/vdb_upload/vdb_utils.py +++ b/examples/llm/vdb_upload/vdb_utils.py @@ -19,7 +19,6 @@ from morpheus.config import Config from morpheus.config import PipelineModes -from morpheus_llm.service.vdb.milvus_client import DATA_TYPE_MAP logger = logging.getLogger(__name__) @@ -148,6 +147,8 @@ def build_milvus_config(resource_schema_config: dict): import pymilvus + from morpheus_llm.service.vdb.milvus_client import DATA_TYPE_MAP + schema_fields = [] for field_data in resource_schema_config["schema_conf"]["schema_fields"]: field_data["dtype"] = DATA_TYPE_MAP.get(field_data["dtype"]) From fe3769af49602d55da64226794f3f33d4a968410 Mon Sep 17 00:00:00 2001 From: David Gardner Date: Tue, 21 Jan 2025 16:21:24 -0800 Subject: [PATCH 3/9] Document ARM not being supported on vdb_upload and rag pipelines --- examples/llm/rag/README.md | 6 ++++++ examples/llm/vdb_upload/README.md | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/examples/llm/rag/README.md b/examples/llm/rag/README.md index cf5ae2bae..a712c9618 100644 --- a/examples/llm/rag/README.md +++ b/examples/llm/rag/README.md @@ -26,6 +26,12 @@ All environments require additional Conda packages which can be installed with e | Morpheus Release Container | ✔ | Requires launching Milvus on the host | | Dev Container | ✘ | | +### Supported Architectures +| Architecture | Supported | Issue | +|--------------|-----------|-------| +| x86_64 | ✔ | | +| aarch64 | ✘ | [#2122](https://github.com/nv-morpheus/Morpheus/issues/2122) | + ## Table of Contents ## Background Information diff --git a/examples/llm/vdb_upload/README.md b/examples/llm/vdb_upload/README.md index 91dcef559..de9916c0f 100644 --- a/examples/llm/vdb_upload/README.md +++ b/examples/llm/vdb_upload/README.md @@ -42,6 +42,11 @@ All environments require additional Conda packages which can be installed with e | Morpheus Release Container | ✔ | Requires launching Triton and Milvus on the host | | Dev Container | ✘ | | +### Supported Architectures +| Architecture | Supported | Issue | +|--------------|-----------|-------| +| x86_64 | ✔ | | +| aarch64 | ✘ | [#2122](https://github.com/nv-morpheus/Morpheus/issues/2122) | ## Background Information From 2cb6084b3567c0d94d55baaf59cc36c1f17a80fa Mon Sep 17 00:00:00 2001 From: David Gardner Date: Tue, 21 Jan 2025 17:18:53 -0800 Subject: [PATCH 4/9] Document lack of arm support --- examples/gnn_fraud_detection_pipeline/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/examples/gnn_fraud_detection_pipeline/README.md b/examples/gnn_fraud_detection_pipeline/README.md index 64f56376f..a384ab891 100644 --- a/examples/gnn_fraud_detection_pipeline/README.md +++ b/examples/gnn_fraud_detection_pipeline/README.md @@ -25,6 +25,12 @@ All environments require additional Conda packages which can be installed with e | Morpheus Release Container | ✔ | | | Dev Container | ✔ | | +### Supported Architectures +| Architecture | Supported | Issue | +|--------------|-----------|-------| +| x86_64 | ✔ | | +| aarch64 | ✘ | [#2123](https://github.com/nv-morpheus/Morpheus/issues/2123) | + ## Requirements Prior to running the GNN fraud detection pipeline, additional requirements must be installed in to your Conda environment. From 8326d28ecd22166fde44028060d7f0d3d93adb7b Mon Sep 17 00:00:00 2001 From: David Gardner Date: Wed, 22 Jan 2025 10:59:04 -0800 Subject: [PATCH 5/9] Building the release container no longer nescesary, document needing to be in the dfp prod dir for the compose step --- .../production/grafana/README.md | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/examples/digital_fingerprinting/production/grafana/README.md b/examples/digital_fingerprinting/production/grafana/README.md index bc6976de9..9ee5ce7ef 100644 --- a/examples/digital_fingerprinting/production/grafana/README.md +++ b/examples/digital_fingerprinting/production/grafana/README.md @@ -63,20 +63,6 @@ configure_logging(loki_handler, log_level=log_level) More information about Loki Python logging can be found [here](https://pypi.org/project/python-logging-loki/). -## Build the Morpheus container: -From the root of the Morpheus repo: -```bash -./docker/build_container_release.sh -``` - -Build `docker compose` services: - -``` -cd examples/digital_fingerprinting/production -export MORPHEUS_CONTAINER_VERSION="$(git describe --tags --abbrev=0)-runtime" -docker compose build -``` - ## Start Grafana and Loki services: To start Grafana and Loki, run the following command on host in `examples/digital_fingerprinting/production`: @@ -86,7 +72,7 @@ docker compose up grafana ## Run Azure DFP Training -Create `bash` shell in `morpheus_pipeline` container: +Start `bash` shell in `morpheus_pipeline` container, run the following command on host in `examples/digital_fingerprinting/production`: ```bash docker compose run --rm morpheus_pipeline bash From ce7b4ad986af91d11aa2fe5b7e17aa07cd919851 Mon Sep 17 00:00:00 2001 From: David Gardner Date: Wed, 22 Jan 2025 11:00:08 -0800 Subject: [PATCH 6/9] Document that this pipeline isn't supported on Arm64, Remove instructions for performing the release build, no longer needed --- .../digital_fingerprinting/visualization/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/digital_fingerprinting/visualization/README.md b/examples/digital_fingerprinting/visualization/README.md index 65806dfed..d6ffbfb0b 100644 --- a/examples/digital_fingerprinting/visualization/README.md +++ b/examples/digital_fingerprinting/visualization/README.md @@ -18,6 +18,13 @@ We show here how to set up and run the Production DFP pipeline on Azure and Duo log data to generate input files for the DFP visualization UI. You can find more information about the Production DFP pipeline in this [README](../production/README.md) and the [DFP Developer Guide](../../../docs/source/developer_guide/guides/5_digital_fingerprinting.md). +## Supported Architectures +| Architecture | Supported | Issue | +|--------------|-----------|-------| +| x86_64 | ✔ | | +| aarch64 | ✘ | [#2125](https://github.com/nv-morpheus/Morpheus/issues/2125) | + + ## Prerequisites To run the demo you will need the following: @@ -30,17 +37,10 @@ To run the demo you will need the following: git submodule update --init --recursive ``` -## Build the Morpheus container -This is necessary to get the latest changes needed for DFP. From the root of the Morpheus repo: -```bash -./docker/build_container_release.sh -``` - ## Building Services via `docker compose` ```bash cd examples/digital_fingerprinting/production -export MORPHEUS_CONTAINER_VERSION="$(git describe --tags --abbrev=0)-runtime" docker compose build ``` From c06a77dd645dac0b79a02e7ad33c88069ad6eeb9 Mon Sep 17 00:00:00 2001 From: David Gardner Date: Wed, 22 Jan 2025 11:32:33 -0800 Subject: [PATCH 7/9] Match the default DOCKER_IMAGE_TAG for both the build and run scripts --- docker/build_container.sh | 1 - docker/build_container_dev.sh | 3 ++- docker/build_container_release.sh | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docker/build_container.sh b/docker/build_container.sh index 8bf70c2a4..07b3fb831 100755 --- a/docker/build_container.sh +++ b/docker/build_container.sh @@ -24,7 +24,6 @@ popd &> /dev/null DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:?"Must set \$DOCKER_IMAGE_NAME to build. Use the dev/release scripts to set these automatically"} DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG:?"Must set \DOCKER_IMAGE_TAG to build. Use the dev/release scripts to set these automatically"} DOCKER_TARGET=${DOCKER_TARGET:-"runtime"} -DOCKER_TARGET_ARCH=${DOCKER_TARGET_ARCH:-$(dpkg --print-architecture)} if [ "${DOCKER_TARGET_ARCH}" == "amd64" ]; then REAL_ARCH="x86_64" diff --git a/docker/build_container_dev.sh b/docker/build_container_dev.sh index a2f52053b..643b07009 100755 --- a/docker/build_container_dev.sh +++ b/docker/build_container_dev.sh @@ -18,7 +18,8 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" export DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-"morpheus"} -export DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG:-"dev-$(date +'%y%m%d')"} +export DOCKER_TARGET_ARCH=${DOCKER_TARGET_ARCH:-$(dpkg --print-architecture)} +export DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG:-"dev-$(date +'%y%m%d')-${DOCKER_TARGET_ARCH}"} export DOCKER_TARGET=${DOCKER_TARGET:-"development"} # Call the general build script diff --git a/docker/build_container_release.sh b/docker/build_container_release.sh index 4016c1d80..3bf3a2b4a 100755 --- a/docker/build_container_release.sh +++ b/docker/build_container_release.sh @@ -21,7 +21,8 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" pushd ${SCRIPT_DIR} &> /dev/null export DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-"nvcr.io/nvidia/morpheus/morpheus"} -export DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG:-"$(git describe --tags --abbrev=0)-runtime"} +export DOCKER_TARGET_ARCH=${DOCKER_TARGET_ARCH:-$(dpkg --print-architecture)} +export DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG:-"$(git describe --tags --abbrev=0)-runtime-${DOCKER_TARGET_ARCH}"} export DOCKER_TARGET=${DOCKER_TARGET:-"runtime"} popd &> /dev/null From 4449df6db2116f6b736d72b40129aa9c65bf8c4c Mon Sep 17 00:00:00 2001 From: David Gardner Date: Wed, 22 Jan 2025 12:26:29 -0800 Subject: [PATCH 8/9] Remove redundant append of the arch --- docker/build_container.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/build_container.sh b/docker/build_container.sh index 07b3fb831..f7323ab5c 100755 --- a/docker/build_container.sh +++ b/docker/build_container.sh @@ -57,7 +57,7 @@ PYTHON_VER=${PYTHON_VER:-3.10} MORPHEUS_ROOT_HOST=${MORPHEUS_ROOT_HOST:-"$(realpath --relative-to=${PWD} ${MORPHEUS_ROOT})"} # Build the docker arguments -DOCKER_ARGS="-t ${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}-${DOCKER_TARGET_ARCH}" +DOCKER_ARGS="-t ${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}" DOCKER_ARGS="${DOCKER_ARGS} --target ${DOCKER_TARGET}" DOCKER_ARGS="${DOCKER_ARGS} --build-arg CUDA_MAJOR_VER=${CUDA_MAJOR_VER}" DOCKER_ARGS="${DOCKER_ARGS} --build-arg CUDA_MINOR_VER=${CUDA_MINOR_VER}" From 54a508963a295434d62fac632763999c68057e0e Mon Sep 17 00:00:00 2001 From: David Gardner Date: Wed, 22 Jan 2025 16:27:33 -0800 Subject: [PATCH 9/9] Document current known issues --- docs/source/extra_info/known_issues.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/source/extra_info/known_issues.md b/docs/source/extra_info/known_issues.md index 96a5f9dd6..6c73fecfd 100644 --- a/docs/source/extra_info/known_issues.md +++ b/docs/source/extra_info/known_issues.md @@ -19,5 +19,10 @@ limitations under the License. - `vdb_upload` example pipeline triggers an internal error in Triton ([#1649](https://github.com/nv-morpheus/Morpheus/issues/1649)) - `ransomware_detection` example pipeline occasionally logs a `distributed.comm.core.CommClosedError` error during shutdown ([#2026](https://github.com/nv-morpheus/Morpheus/issues/2026)). +- `abp_pcap_detection` pipeline running slowly on AArch64 ([#2120](https://github.com/nv-morpheus/Morpheus/issues/2120)) +- LLM `vdb_upload` and `rag` pipelines not supported on AArch64 ([#2122](https://github.com/nv-morpheus/Morpheus/issues/2122)) +- `gnn_fraud_detection_pipeline` not working on AArch64 ([#2123](https://github.com/nv-morpheus/Morpheus/issues/2123)) +- `ransomware_detection` pipeline running slowly on AArch64 ([#2124](https://github.com/nv-morpheus/Morpheus/issues/2124)) +- DFP visualization fails to install on AArch64 ([#2125](https://github.com/nv-morpheus/Morpheus/issues/2125)) Refer to [open issues in the Morpheus project](https://github.com/nv-morpheus/Morpheus/issues)