重要提示

您正在查看 NeMo 2.0 文档。此版本引入了对 API 和新库 NeMo Run 的重大更改。我们目前正在将 NeMo 1.0 中的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档

向 NVIDIA Triton 服务器发送 NeMo LLM 查询#

在使用 TensorRT-LLM、vLLM 和框架内部部分提供的脚本启动服务后,该服务将处于待机模式,准备接收传入的请求。有多种方法可用于向此服务发送查询。

  • 使用查询脚本:在当前运行的容器中执行查询脚本。

  • PyTriton:使用 PyTriton 直接发送请求。

  • HTTP 请求:使用各种工具或库发出 HTTP 请求。

使用脚本发送查询#

以下示例展示了如何在当前运行的容器中执行查询脚本。

  1. 要使用查询脚本,请运行以下命令

    python scripts/deploy/nlp/query.py --url "http://127.0.0.1:8000" --model_name nemotron --prompt "What is the capital of United States?"
    
  2. 根据您的服务器和服务模型名称更改 url 和 model_name。脚本中的代码也可以用作客户端代码的基础。

  3. 如果存在提示嵌入表,请运行以下命令发送查询

    python scripts/deploy/nlp/query.py --url "http://127.0.0.1:8000" --model_name nemotron --prompt "What is the capital of United States?" --task_id "task 1"
    
  4. 以下参数在 deploy_triton.py 脚本中定义

    • --url:Triton 服务器的 url。默认值=”0.0.0.0”。

    • --model_name:要查询的 triton 模型名称。

    • --prompt:用户提示。

    • --max_output_len:最大输出令牌长度。默认值=128。

    • --top_k:在每一步仅考虑前 N 个最有可能的令牌。

    • --top_p:确定用于在生成的响应中对下一个令牌进行采样的累积概率分布。控制输出的多样性。

    • --temperature:控制生成输出的随机性。较高的值(例如 1.0)会导致生成的文本具有更高的随机性和多样性,较低的值(例如 0.2)会产生更集中和确定性的响应。

    • --task_id:如果启用 ptuning,则为任务 ID。

使用 NeMo API 发送查询#

NeMo 框架提供 NemoQueryLLM API,为了方便起见,可以向 Triton 服务器发送查询。这些 API 只能从 NeMo 框架容器访问。

  1. 要使用 NeMo API 运行请求示例,请运行以下命令

    from nemo.deploy.nlp import NemoQueryLLM
    
    nq = NemoQueryLLM(url="localhost:8000", model_name="nemotron")
    output = nq.query_llm(prompts=["What is the capital of United States?"], max_output_len=10, top_k=1, top_p=0.0, temperature=1.0)
    print(output)
    
  2. 根据您的服务器和服务模型名称更改 url 和 model_name。有关详细信息,请查看 NeMoQuery 文档字符串。

  3. 如果存在提示嵌入表,请运行以下命令发送查询

    output = nq.query_llm(prompts=["What is the capital of United States?"], max_output_len=10, top_k=1, top_p=0.0, temperature=1.0, task_id="0")