补全管道
所有环境都需要额外的 Conda 包,这些包可以使用 conda/environments/all_cuda-125_arch-x86_64.yaml
或 conda/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