Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reorg docs #522

Merged
38 commits merged into from
Dec 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
a608298
Remove exclamation, and morpheus owns the docs
dagardner-nv Dec 2, 2022
74648f9
Include readme's from examples in the source
dagardner-nv Dec 2, 2022
fcb6e9c
Non-owning
dagardner-nv Dec 2, 2022
296e5cd
Replace usage of words like 'see' and 'look' in documentation
dagardner-nv Dec 6, 2022
254126b
Remove explcit calls to pipeline.build, this is no longer needed
dagardner-nv Dec 6, 2022
6fbeda7
Replace unseen with previously undetected
dagardner-nv Dec 6, 2022
9dedfb8
The logs are anonymized
dagardner-nv Dec 6, 2022
530b40e
Merge branch 'branch-23.01' into david-23.01-docs
dagardner-nv Dec 6, 2022
94da28d
Update the github url for Morpheus
dagardner-nv Dec 6, 2022
20b8651
Use main branch
dagardner-nv Dec 6, 2022
5b4080b
Add a toc link to the code of conduct
dagardner-nv Dec 7, 2022
12f2008
Shorten the title
dagardner-nv Dec 7, 2022
2363ee0
Merge branch 'branch-23.01' into david-23.01-docs-reorg
dagardner-nv Dec 7, 2022
8619f53
Merge branch 'branch-23.01' into david-23.01-docs
dagardner-nv Dec 7, 2022
9b40ad2
Move most of the contents of README to a new file under docs/source
dagardner-nv Dec 7, 2022
1c9cc13
Add getting_started & contributing guides
dagardner-nv Dec 7, 2022
c76a083
Link to developer guides from readme, guides doc converted from rst t…
dagardner-nv Dec 7, 2022
73507f6
Merge branch 'branch-23.01' into david-23.01-docs
dagardner-nv Dec 7, 2022
e4f7ddc
Merge branch 'david-23.01-docs' of github.com:dagardner-nv/Morpheus i…
dagardner-nv Dec 7, 2022
9781e58
Merge branch 'david-23.01-docs' into david-23.01-docs-reorg
dagardner-nv Dec 7, 2022
56502e7
Replace NGC intro with a list of getting started docs
dagardner-nv Dec 7, 2022
d5b9310
wip
dagardner-nv Dec 7, 2022
f37ee41
Move the contributing symlink
dagardner-nv Dec 7, 2022
9b0a9d9
wip
dagardner-nv Dec 7, 2022
4cd561d
wip
dagardner-nv Dec 7, 2022
e1602a7
Replace smart quotes
dagardner-nv Dec 7, 2022
c96429a
Sphinx wants the section to be named 'Examples' and it wants the inte…
dagardner-nv Dec 8, 2022
dac60f7
The myst parser doesn't like 'yml' as an alias for 'yaml'
dagardner-nv Dec 8, 2022
e653d64
Fix links
dagardner-nv Dec 8, 2022
c5ac203
TODO was causing a parse error in sphinx
dagardner-nv Dec 8, 2022
764e01f
Fix formatting for docstrings
dagardner-nv Dec 8, 2022
2d66cd5
Fix what appears to be a cut-off docstring
dagardner-nv Dec 8, 2022
3266860
Merge branch 'branch-23.01' into david-23.01-docs-reorg
dagardner-nv Dec 8, 2022
0f52edf
Misc docstring fixes
dagardner-nv Dec 8, 2022
19b2ef0
Restructure symlinks for examples, preventing name conflicts and addi…
dagardner-nv Dec 8, 2022
3f1e456
Update link to options reference
dagardner-nv Dec 8, 2022
38b56b6
Update docs list
dagardner-nv Dec 8, 2022
a9d9393
Merge branch 'branch-23.01' into david-23.01-docs-reorg
dagardner-nv Dec 13, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
# Refer to the following link for the explanation of each params:
# http://releases.llvm.org/8.0.0/tools/clang/docs/ClangFormatStyleOptions.html
# https://releases.llvm.org/14.0.0/tools/clang/docs/ClangFormatStyleOptions.html
Language: Cpp
# BasedOnStyle: Google
AccessModifierOffset: -2
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,14 +234,14 @@ Launching a full production Kafka cluster is outside the scope of this project.
```
5. Update the `kafka-docker/docker-compose.yml`, performing two changes:
1. Update the `ports` entry to:
```yml
```yaml
ports:
- "0.0.0.0::9092"
```
This will prevent the containers from attempting to map IPv6 ports.
1. Change the value of `KAFKA_ADVERTISED_HOST_NAME` to match the value of the `KAFKA_ADVERTISED_HOST_NAME` environment variable from the previous step. For example, the line should look like:

```yml
```yaml
environment:
KAFKA_ADVERTISED_HOST_NAME: 172.17.0.1
```
Expand Down
317 changes: 5 additions & 312 deletions README.md

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions docs/source/cloud_deployment_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ This quick start guide provides the necessary instructions to set up the minimum

Morpheus makes it easy to build and scale cybersecurity applications that harness adaptive pipelines supporting a wider range of model complexity than previously feasible. Morpheus makes it possible to analyze up to 100% of your data in real-time, for more accurate detection and faster remediation of threats as they occur. Morpheus also provides the ability to leverage AI to adjust to threats and compensate on the fly, at line rate.

NVIDIA Morpheus enables organizations to attack the issue of cybersecurity head on. Rather than continuously chasing the cybersecurity problem, Morpheus provides the ability to propel you ahead of the breach and address the cybersecurity issue. With the world in a "discover and respond" state, where companies are finding breaches much too late, in a way that is way behind the curve, NVIDIAs Morpheus cybersecurity AI framework enables any organization to warp to the present and begin to defend itself in real time.
NVIDIA Morpheus enables organizations to attack the issue of cybersecurity head on. Rather than continuously chasing the cybersecurity problem, Morpheus provides the ability to propel you ahead of the breach and address the cybersecurity issue. With the world in a "discover and respond" state, where companies are finding breaches much too late, in a way that is way behind the curve, NVIDIA's Morpheus cybersecurity AI framework enables any organization to warp to the present and begin to defend itself in real time.

The Morpheus Developer Kit allows developers to quickly and easily set up example pipelines to run inference on different sample models provided by NVIDIA and experiment with the features and capabilities available within the Morpheus framework to address their cybersecurity and information security use cases.

Expand All @@ -97,11 +97,11 @@ The Morpheus Developer Kit allows developers to quickly and easily set up exampl

- **Real-time Telemetry**

The Morpheus native graph streaming engine can receive rich, real-time network telemetry from every NVIDIA BlueField DPU-accelerated server or NVIDIA AppShield in the data center without impacting performance. Integrating the framework into a third-party cybersecurity offering brings the worlds best AI computing to communication networks. 
The Morpheus native graph streaming engine can receive rich, real-time network telemetry from every NVIDIA BlueField DPU-accelerated server or NVIDIA AppShield in the data center without impacting performance. Integrating the framework into a third-party cybersecurity offering brings the world's best AI computing to communication networks. 

- **AI Cybersecurity Capabilities**

Deploy your own models using common deep learning frameworks. Or get a jump-start in building applications to identify leaked sensitive information, detect malware or fraud, do network mapping, flag user behavior changes, and identify errors via logs by using one of NVIDIAs pre-trained and tested models.
Deploy your own models using common deep learning frameworks. Or get a jump-start in building applications to identify leaked sensitive information, detect malware or fraud, do network mapping, flag user behavior changes, and identify errors via logs by using one of NVIDIA's pre-trained and tested models.

## Setup

Expand All @@ -115,7 +115,7 @@ Continue with the setup steps below once the host system is installed, configure

First, you will need to set up your NGC API Key to access all the Morpheus components, using the linked instructions from the [NGC Registry CLI User Guide].

Once youve created your API key, create an environment variable containing your API key for use by the commands used further in this document:
Once you've created your API key, create an environment variable containing your API key for use by the commands used further in this document:

```bash
export API_KEY="<NGC_API_KEY>"
Expand Down Expand Up @@ -726,7 +726,7 @@ kubectl -n $NAMESPACE exec -it deploy/broker -c broker -- kafka-console-producer
**Note**: This should be used for development purposes only via this developer kit. Loading from the file into Kafka should not be used in production deployments of Morpheus.

### Verify Running Pipeline
Once youve deployed the SDK client to run a pipeline, you can check the status of the pod using the following command:
Once you've deployed the SDK client to run a pipeline, you can check the status of the pod using the following command:

```bash
kubectl -n $NAMESPACE get pods sdk-cli-<RELEASE_NAME>
Expand Down Expand Up @@ -758,7 +758,7 @@ Inference rate: 7051messages [00:04, 4639.40messages/s]
2. AWS EC2 G4 instance with T4 or V100 GPU, at least 64GB RAM, 8 cores CPU, and 100 GB storage.

#### Install Cloud Native Core Stack for AWS
On your AWS EC2 G4 instance, follow the instructions in the linked document to install [NVIDIAs Cloud Native Core Stack for AWS][NVIDIAs Cloud Native Core Stack].
On your AWS EC2 G4 instance, follow the instructions in the linked document to install [NVIDIA's Cloud Native Core Stack for AWS][NVIDIA's Cloud Native Core Stack].

### Prerequisites and Installation for Ubuntu

Expand All @@ -768,7 +768,7 @@ On your AWS EC2 G4 instance, follow the instructions in the linked document to i
3. Ubuntu 20.04 LTS or newer

### Installing Cloud Native Core Stack on NVIDIA Certified Systems
On your NVIDIA-Certified System, follow the instructions in the linked document to install [NVIDIAs Cloud Native Core Stack].
On your NVIDIA-Certified System, follow the instructions in the linked document to install [NVIDIA's Cloud Native Core Stack].

## Appendix B

Expand Down Expand Up @@ -1089,5 +1089,5 @@ The Drop Null Attributes stage (dropna) requires the specification of a column n
[Morpheus Contribution]: https://github.com/nv-morpheus/Morpheus/blob/main/CONTRIBUTING.md
[Morpheus Developer Guide]: https://github.com/nv-morpheus/Morpheus/tree/main/docs/source/developer_guide/guides
[Triton Inference Server Model Configuration]: https://github.com/triton-inference-server/server/blob/main/docs/model_configuration.md
[NVIDIAs Cloud Native Core Stack]: https://github.com/NVIDIA/cloud-native-core
[NVIDIA's Cloud Native Core Stack]: https://github.com/NVIDIA/cloud-native-core
[NGC Registry CLI User Guide]: https://docs.nvidia.com/dgx/ngc-registry-cli-user-guide/index.html#topic_4_1
1 change: 1 addition & 0 deletions docs/source/developer_guide/contributing.md

This file was deleted.

This file was deleted.

This file was deleted.

16 changes: 8 additions & 8 deletions docs/source/developer_guide/examples/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ Examples
.. toctree::
:maxdepth: 20

abp_nvsmi_detection.md
abp_pcap_detection.md
gnn_fraud_detection_pipeline.md
log_parsing.md
nlp_si_detection.md
ransomware_detection.md
root_cause_analysis.md
sid_visualization.md
abp_nvsmi_detection/README.md
abp_pcap_detection/README.md
gnn_fraud_detection_pipeline/README.md
log_parsing/README.md
nlp_si_detection/README.md
ransomware_detection/README.md
root_cause_analysis/README.md
sid_visualization/README.md
1 change: 0 additions & 1 deletion docs/source/developer_guide/examples/log_parsing.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/source/developer_guide/examples/nlp_si_detection.md

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

26 changes: 26 additions & 0 deletions docs/source/developer_guide/guides.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!--
SPDX-FileCopyrightText: Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: Apache-2.0

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

# Guides

Morpheus includes several stages to choose from when building a custom pipeline, which can be included and configured to suit your needs. However, there are likely going to be situations that require writing a custom stage. Morpheus stages are written in Python and optionally may include a C++ implementation. The following guides outline how to create your own stages in both Python and C++.

## [Simple Python Stage](./guides/1_simple_python_stage.md)
## [Real-World Application: Phishing Detection](./guides/2_real_world_phishing.md)
## [Simple C++ Stage](./guides/3_simple_cpp_stage.md).
## [Creating a C++ Source Stage](./guides/4_source_cpp_stage.md).
## [Digital Fingerprinting (DFP)](./guides/5_digital_fingerprinting.md).
28 changes: 0 additions & 28 deletions docs/source/developer_guide/guides.rst

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License.
-->

# 1. A Simple Python Stage
# Simple Python Stage

## Background

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License.
-->

# 2. A Real-World Application: Phishing Detection
# Real-World Application: Phishing Detection

## Data Preprocessing

Expand Down
2 changes: 1 addition & 1 deletion docs/source/developer_guide/guides/3_simple_cpp_stage.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License.
-->

# 3. A Simple C++ Stage
# Simple C++ Stage

Morpheus offers the choice of writing pipeline stages in either Python or C++. For many use cases, a Python stage is perfectly fine. However, in the event that a Python stage becomes a bottleneck for the pipeline, then writing a C++ implementation for the stage becomes advantageous. The C++ implementations of Morpheus stages and messages utilize the [pybind11](https://pybind11.readthedocs.io/en/stable/index.html) library to provide Python bindings.

Expand Down
2 changes: 1 addition & 1 deletion docs/source/developer_guide/guides/4_source_cpp_stage.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License.
-->

# 4. Creating a C++ Source Stage
# Creating a C++ Source Stage

For this example, we are going to add a C++ implementation for the `RabbitMQSourceStage` we designed in the Python examples. The Python implementation of this stage emits messages of the type `MessageMeta`; as such, our C++ implementation must do the same.

Expand Down
10 changes: 5 additions & 5 deletions docs/source/developer_guide/guides/5_digital_fingerprinting.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License.
-->

# 5. Digital Fingerprinting (DFP)
# Digital Fingerprinting (DFP)

## Overview
Every account, user, service and machine has a digital fingerprint​, which represents the typical actions performed and not performed over a given period of time. Understanding every entity's day-to-day, moment-by-moment work helps us identify anomalous behavior and uncover potential threats in the environment​.
Expand All @@ -28,7 +28,7 @@ The data we will want to use for the training and inference will be any sensitiv
The location of these logs could be either local to the machine running Morpheus, a shared file system like NFS or on a remote store such as [Amazon S3](https://aws.amazon.com/s3/).

### Defining a New Data Source
Additional data sources and remote stores can easily be added using the Morpheus SDK. The key to applying DFP to a new data source is through the process of feature selection. Any data source can be fed into DFP after some preprocessing to get a feature vector per log/data point​. In order to build a targeted model for each entity (user/service/machine... etc.), the chosen data source needs a field that uniquely identifies the entity were trying to model.
Additional data sources and remote stores can easily be added using the Morpheus SDK. The key to applying DFP to a new data source is through the process of feature selection. Any data source can be fed into DFP after some preprocessing to get a feature vector per log/data point​. In order to build a targeted model for each entity (user/service/machine... etc.), the chosen data source needs a field that uniquely identifies the entity we're trying to model.

Adding a new source for the DFP pipeline requires defining five critical pieces:
1. The user_id column in the Morpheus config attribute `ae.userid_column_name`. This can be any column which uniquely identifies the user, account or service being fingerprinted. Examples of possible user_ids could be:
Expand Down Expand Up @@ -108,8 +108,8 @@ This example is described in [`examples/digital_fingerprinting/production/README
| Feature | Description |
| ------- | ----------- |
| logcount | tracks the number of logs generated by a user within that day (increments with every log)​ |
| locincrement | increments every time we observe a new city (location.city) in a users logs within that day​ |
| appincrement | increments every time we observe a new app (appDisplayName) in a users logs within that day​ |
| locincrement | increments every time we observe a new city (location.city) in a user's logs within that day​ |
| appincrement | increments every time we observe a new app (appDisplayName) in a user's logs within that day​ |

#### Duo Authentication
| Feature | Description |
Expand All @@ -125,7 +125,7 @@ This example is described in [`examples/digital_fingerprinting/production/README
| Feature | Description |
| ------- | ----------- |
| logcount | tracks the number of logs generated by a user within that day (increments with every log)​ |
| locincrement | increments every time we observe a new city (location.city) in a users logs within that day​ |
| locincrement | increments every time we observe a new city (location.city) in a user's logs within that day​ |


## High Level Architecture
Expand Down
2 changes: 1 addition & 1 deletion docs/source/extra_info/known_issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ limitations under the License.

# Known Issues

There are no known issues at this time.
Refer to [open issues in the Morpheus project](https://github.com/nv-morpheus/Morpheus/issues)
Loading