TorchServe部署模型-index_to_name.json
在TorchServe部署模型时,若要将模型输出结果映射到指定标签(如分类任务的类别名称),需通过index_to_name.json文件定义索引与标签的映射关系,并在打包模型时将其作为额外文件包含。以下是完整流程和命令示例:
1. 准备index_to_name.json文件
文件内容需为JSON格式,键为模型输出的类别索引(字符串类型),值为对应的标签名称。例如:
{
"0": "people",
"1": "car"
}
保存为index_to_name.json,并确保路径正确。
2. 打包模型时包含映射文件
使用torch-model-archiver打包模型时,通过–extra-files参数指定index_to_name.json:
torch-model-archiver \
--model-name 模型名 \
--version 1.0 \
--model-file model.py \ # 模型结构文件
--serialized-file model.pth \ # 模型权重文件
--handler image_classifier \ # 使用内置图像分类处理器
--extra-files index_to_name.json \ # 包含标签映射文件
--export-path model_store # 输出目录
关键参数说明:
–handler:根据任务类型选择内置处理器(如image_classifier、text_classifier等),这些处理器会自动加载index_to_name.json 。
–extra-files:可包含多个文件,用逗号分隔(如–extra-files file1.json,file2.txt)。
3. 启动TorchServe并加载模型
启动服务时,指定模型存储路径和模型文件:
torchserve --start \
--model-store model_store \ # 模型存储目录
--models 模型名=模型名.mar # 加载指定模型
4. 验证映射是否生效
发送请求后,若使用内置处理器(如image_classifier),返回结果会自动将数字索引替换为index_to_name.json中的标签。例如:
curl http://localhost:8080/predictions/模型名 -T input.jpg
输出示例:
{
"prediction": "car",
"confidence": 0.95
}
注意事项
自定义处理器:若使用自定义处理器(继承BaseHandler),需在代码中手动加载index_to_name.json并处理映射逻辑 。
文件路径:确保index_to_name.json在打包时路径正确,否则会导致加载失败 。
多模型支持:每个模型的.mar文件需包含独立的index_to_name.json,避免冲突 。
通过以上步骤,TorchServe会将模型输出的数字索引自动转换为易读的标签名称,提升结果可读性。