modelscope-funasr的online模型的 triton部署,有client端的代码吗?

modelscope-funasr的online模型的 triton部署,有client端的代码吗?https://github.com/zhu-gu-an/FunASR/blob/main/runtime/triton_gpu/README_ONLINE.md

展开
收起
三分钟热度的鱼 2024-01-24 16:27:55 133 分享 版权
阿里云 AI 助理回答

在部署 ModelScope-FunASR 的在线模型时,使用 Triton Inference Server 进行推理服务的客户端代码可以通过参考知识库中的内容进行构建。以下是详细的解答和步骤说明:


1. Triton Inference Server 客户端代码示例

根据知识库中提供的信息,Triton 支持通过 HTTP 或 gRPC 协议发送推理请求。以下是一个基于 HTTP 的客户端代码示例,用于调用 FunASR 的在线模型服务:

HTTP 请求示例

import numpy as np
import tritonclient.http as httpclient

# 配置服务访问地址
url = 'your_triton_server_address'  # 替换为实际的 Triton 服务地址
triton_client = httpclient.InferenceServerClient(url=url)

# 准备输入数据(假设输入为音频特征)
audio_features = np.random.rand(1, 80, 300).astype(np.float32)  # 示例音频特征数据
inputs = []
inputs.append(httpclient.InferInput('INPUT__0', audio_features.shape, "FP32"))
inputs[0].set_data_from_numpy(audio_features, binary_data=False)

# 配置输出
outputs = []
outputs.append(httpclient.InferRequestedOutput('OUTPUT__0', binary_data=False))

# 发送推理请求
results = triton_client.infer(
    model_name="funasr_online_model",  # 替换为实际的模型名称
    model_version="1",                # 替换为实际的模型版本
    inputs=inputs,
    outputs=outputs,
    headers={"Authorization": "your_token"}  # 替换为实际的服务 Token
)

# 获取推理结果
output_data = results.as_numpy('OUTPUT__0')
print("推理结果:", output_data)

gRPC 请求示例

如果使用 gRPC 协议,可以参考以下代码:

import grpc
from tritonclient.grpc import service_pb2, service_pb2_grpc
import numpy as np

# 配置服务访问地址
host = "your_triton_server_address:8001"  # 替换为实际的 Triton 服务地址
token = "your_token"                      # 替换为实际的服务 Token
model_name = "funasr_online_model"        # 替换为实际的模型名称
model_version = "1"                       # 替换为实际的模型版本

# 创建 gRPC 元数据
metadata = (("authorization", token),)

# 创建 gRPC 通道
channel = grpc.insecure_channel(host)
stub = service_pb2_grpc.GRPCInferenceServiceStub(channel)

# 构造推理请求
request = service_pb2.ModelInferRequest()
request.model_name = model_name
request.model_version = model_version

# 添加输入数据
input_data = np.random.rand(1, 80, 300).astype(np.float32)  # 示例音频特征数据
input_tensor = request.inputs.add()
input_tensor.name = "INPUT__0"
input_tensor.datatype = "FP32"
input_tensor.shape.extend(input_data.shape)
input_tensor.contents.raw_contents = input_data.tobytes()

# 添加输出配置
output_tensor = request.outputs.add()
output_tensor.name = "OUTPUT__0"

# 发送推理请求
response = stub.ModelInfer(request, metadata=metadata)

# 解析推理结果
output_data = np.frombuffer(response.raw_output_contents[0], dtype=np.float32)
print("推理结果:", output_data)

2. 关键参数说明

在上述代码中,以下参数需要特别注意并正确配置: - url / host: Triton 服务的访问地址,需替换为实际的服务地址。 - model_name: 模型名称,例如 funasr_online_model,需与部署时的模型名称一致。 - model_version: 模型版本号,通常为 1 或其他指定版本。 - headers / metadata: 包含服务 Token 的认证信息,需替换为实际的 Token。 - INPUT__0OUTPUT__0: 输入和输出张量的名称,需与模型配置文件(如 config.pbtxt)中的定义一致。


3. FunASR 在线模型的 Triton 部署注意事项

根据知识库中的信息,在部署 FunASR 的在线模型时,需要注意以下几点: 1. 模型存储位置: - Triton 需要从 OSS 或 NAS 中加载模型文件。请确保模型已上传至 OSS,并正确配置存储卷 PV 和 PVC。 - 示例路径:oss://your-bucket/models/funasr_online_model。 2. 模型配置文件: - 确保模型目录中包含 config.pbtxt 文件,用于定义模型的输入输出格式和后端类型。 - 示例配置: plaintext name: "funasr_online_model" platform: "pytorch_libtorch" max_batch_size: 0 input [ { name: "INPUT__0" data_type: TYPE_FP32 dims: [80, -1] } ] output [ { name: "OUTPUT__0" data_type: TYPE_FP32 dims: [-1] } ] instance_group [ { kind: KIND_GPU count: 1 } ] 3. 动态批处理支持: - 如果需要提升吞吐量,可以启用 Triton 的 Dynamic Batching 功能,优化批量推理性能。


4. 验证部署是否成功

在完成部署后,可以通过以下方式验证服务是否正常运行: 1. 使用上述客户端代码发送测试请求,检查返回结果是否符合预期。 2. 查看 Triton 服务日志,确认模型加载和推理过程无错误。


5. 重要提醒

  • Token 配置: 如果服务启用了认证机制,请确保客户端请求中包含正确的 Token。
  • 模型兼容性: 确保 FunASR 的在线模型与 Triton 的后端(如 PyTorch 或 TensorRT)兼容。
  • 资源需求: FunASR 的在线模型对 GPU 资源要求较高,建议选择高性能 GPU 实例(如 A10 或 V100)。

以上是关于 ModelScope-FunASR 的在线模型在 Triton 上部署的客户端代码及相关配置说明。如果有进一步的问题,请随时补充说明!

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

包含命名实体识别、文本分类、分词、关系抽取、问答、推理、文本摘要、情感分析、机器翻译等多个领域

热门讨论

热门文章

还有其他疑问?
咨询AI助理