Skip to content

Commit

Permalink
Document known ARM64 issues (#2128)
Browse files Browse the repository at this point in the history
* Document examples which don't work on Arm64
* Lazily import `milvus` libs allowing users to run the LLM `completion` and `agent` pipelines on Arm64 systems.
* Fix handling of `DOCKER_TARGET_ARCH` in docker build scripts.

Closes #2096


## By Submitting this PR I confirm:
- I am familiar with the [Contributing Guidelines](https://github.com/nv-morpheus/Morpheus/blob/main/docs/source/developer_guide/contributing.md).
- When the PR is ready for review, new or existing tests cover these changes.
- When the PR is ready for review, the documentation is up to date with these changes.

Authors:
  - David Gardner (https://github.com/dagardner-nv)

Approvers:
  - Yuchen Zhang (https://github.com/yczhang-nv)

URL: #2128
  • Loading branch information
dagardner-nv authored Jan 27, 2025
1 parent ad68109 commit 8cc9ab7
Show file tree
Hide file tree
Showing 10 changed files with 39 additions and 28 deletions.
3 changes: 1 addition & 2 deletions docker/build_container.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -58,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}"
Expand Down
3 changes: 2 additions & 1 deletion docker/build_container_dev.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion docker/build_container_release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 5 additions & 0 deletions docs/source/extra_info/known_issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
16 changes: 1 addition & 15 deletions examples/digital_fingerprinting/production/grafana/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`:
Expand All @@ -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
Expand Down
14 changes: 7 additions & 7 deletions examples/digital_fingerprinting/visualization/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
```

Expand Down
6 changes: 6 additions & 0 deletions examples/gnn_fraud_detection_pipeline/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
6 changes: 6 additions & 0 deletions examples/llm/rag/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 5 additions & 0 deletions examples/llm/vdb_upload/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
6 changes: 4 additions & 2 deletions examples/llm/vdb_upload/vdb_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,10 @@
import logging
import typing

import pymilvus
import yaml

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__)

Expand Down Expand Up @@ -147,6 +145,10 @@


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"])
Expand Down

0 comments on commit 8cc9ab7

Please sign in to comment.