NVIDIA Morpheus (24.10.01)

补全管道

所有环境都需要额外的 Conda 包,这些包可以使用 conda/environments/all_cuda-125_arch-x86_64.yamlconda/environments/examples_cuda-125_arch-x86_64.yaml 环境文件安装。有关更多信息,请参阅安装依赖项部分。

环境

支持

注释

Conda

Morpheus Docker 容器

Morpheus 发布容器

Dev 容器

目的

此示例的主要目标是展示如何创建一个将 LLM 服务与 Morpheus 集成的管道。尽管此示例仅展示了一个实现,但该管道及其组件是通用的,可以适应具有独特需求的各种场景。以下重点介绍了管道中的不同自定义点以及此示例的特定选择

LLM 服务

  • 该管道旨在支持任何符合我们 LLMService 接口的 LLM 服务。兼容的服务包括 OpenAI、NeMo,甚至可以使用 llama-cpp-python 进行本地执行。在此演示中,我们专注于使用 NeMo 作为 LLM 服务,重点介绍它相对于其他 LLM 服务的优势以及与 NeMo 生态系统的无缝集成。此外,该管道可以容纳使用 NeMo + Inform 的更复杂配置,而无需更改核心管道。

下游任务

  • 在 LLM 执行之后,模型的输出可以用于各种任务,包括模型训练、分析或模拟攻击。在此特定示例中,我们简化了实现,仅专注于 LLMEngine。

管道实施

此示例 Morpheus 管道使用以下组件构建

  • InMemorySourceStage:在 DataFrame 中管理 LLM 查询。

  • DeserializationStage:将 MessageMeta 对象转换为 LLMEngine 所需的 ControlMessage。

  • LLMEngineStage:包含核心 LLMEngine 功能。

    • 一个 ExtracterNode 从 DataFrame 中提取问题。

    • 一个 PromptTemplateNode 将数据和模板转换为 LLM 的最终输入。

    • LLM 使用 LLMGenerateNode 执行,以运行 LLM 查询。

    • 最后,使用 SimpleTaskHandler 将响应合并回 ControlMessage。

  • InMemorySinkStage:存储结果。

先决条件

在运行管道之前,请确保已设置 NGC_API_KEY 环境变量。

安装依赖项

安装所需的依赖项。

复制
已复制!
            

conda env update --solver=libmamba \ -n ${CONDA_DEFAULT_ENV} \ --file ./conda/environments/examples_cuda-125_arch-x86_64.yaml

设置 NGC API 密钥

对于此示例,我们使用 NGC 内的 NeMo 服务。要获得访问权限,需要 NGC API 密钥。请按照此处概述的说明生成您的 NGC API 密钥。

配置以下环境变量,其中 NGC_ORG_ID 是可选的

复制
已复制!
            

export NGC_API_KEY=<YOUR_API_KEY> export NGC_ORG_ID=<YOUR_NGC_ORG_ID>

运行 Morpheus 管道

每个 LLM 示例管道的顶层入口点是 examples/llm/main.py。此脚本接受一组选项和一个要运行的管道。基线选项如下,并且为了本文档的目的,我们将假定管道选项为 completion

运行示例

复制
已复制!
            

python examples/llm/main.py completion [OPTIONS] COMMAND [ARGS]...

命令

  • pipeline

选项
  • --use_cpu_only

    • 描述:以仅 CPU 模式运行

    • 默认值False

  • --num_threads INTEGER RANGE

    • 描述:要使用的内部管道线程数。

    • 默认值12

  • --pipeline_batch_size INTEGER RANGE

    • 描述:管道的内部批处理大小。可以远大于模型批处理大小。也用于 Kafka 消费者。

    • 默认值1024

  • --model_max_batch_size INTEGER RANGE

    • 描述:模型要使用的最大批处理大小。

    • 默认值64

  • --repeat_count INTEGER RANGE

    • 描述:重复输入查询的次数。用于测试性能很有用。

    • 默认值64

  • --llm_service [NemoLLM|OpenAI]

    • 描述:要向其发出请求的 LLM 服务。

    • 默认值NemoLLM

  • --help

    • 描述:显示带有选项和命令详细信息的帮助消息。

使用 OpenAI LLM 服务运行 Morpheus 管道

复制
已复制!
            

python examples/llm/main.py completion pipeline --llm_service OpenAI

上一个 LLM
下一个 向量数据库上传 (VDB 上传) 管道
© 版权所有 2024, NVIDIA。 上次更新于 2024 年 12 月 3 日。