计算后端
在深度学习的服务中,如果仅支持模型加速远远不够。为此,我们内置了一些常用的细粒度后端。
内置后端
- opencv相关图像处理
- pytorch相关后端
名称 | 说明 |
---|---|
DecodeMat | jpg解码 |
cvtColorMat | 颜色空间转换 |
ResizeMat | resize |
PillowResizeMat | 严格保持和pillow的结果一致的resize |
更多... |
名称 | 说明 |
---|---|
DecodeTensor | GPU上jpg解码 |
cvtColorTensor | 颜色空间转换 |
ResizeTensor | resize |
PillowResizeTensor | 严格保持和pillow的结果一致的resize |
更多... |
默认的后端为Identity
:
名称 | 初始化参数 | 输入/类型 | 输出/类型 | 备注 |
---|---|---|---|---|
Identity | 无 | data/any | result/any | 功能为将data 的值赋给result |
使用示例:
- Python
- C++
import torchpipe as tp
import numpy as np
config = {
# 单节点调度器参数:
"instance_num":2,
# 计算后端:
"backend":"DecodeMat",
}
# 初始化
models = tp.pipe(config)
with open("../test/assets/norm_jpg/dog.jpg", "rb") as f:
data = f.read()
## 前向
input = {"data":data}
models(input) # <== 可多线程调用
result : np.ndarray = input["result"]
assert(result.shape == (576, 768, 3))
#include "Interpreter.hpp"
#include "opencv2/core.hpp"
int main(void) {
std::unordered_map<std::string, std::string> config = {// 单节点调度器参数:
{"instance_num", "2"},
// 计算后端:
{"backend", "DecodeMat"}};
// 初始化
ipipe::Interpreter model(config);
// 准备数据
auto input = std::make_shared<std::unordered_map<std::string, ipipe::any>>();
(*input)[ipipe::TASK_DATA_KEY] = std::string(...);
// 前向
model(input); // <== 可多线程调用
cv::Mat result = ipipe::any_cast<cv::Mat>(input->at(ipipe::TASK_RESULT_KEY));
return 0;
};