一个推理框架,目标是最精简的技术实现,开发中。
更新地址1: https://github.com/lyffly/tinyinfer
更新地址2: https://gitee.com/yunfeiliu/tinyinfer
长期计划如下,现在还比较早期,晚上和周末才有时间更新
- 使用Python实现前端接口
- 支持FP32推理
- 支持FP16推理
- 支持INT8推理
- 支持PPQ量化
- 算子融合
- 使用C++实现自定义CUDA算子
- 使用C++实现tensor类
- 实现显存池,减少显存使用
- 使用cublas的gemm
- 使用cudnn的conv2d
- 使用cudnn的pooling
- cutlass实现gemm
- cutlass实现conv2d
- 支持ONNX模型(CV模型)
- 支持GGUF的模型(大模型)
- 引入triton生成后端算子
- stablehlo,使用mlir生成cubin然后调用
cuda version: 12.4 cudnn version: 9.1
git clone https://github.com/lyffly/tinyinfer
# or https://gitee.com/yunfeiliu/tinyinfer
cd tinyinfer
git submodule update --init --recursive
# build wheel
python3 setup.py bdist_wheel
# install
pip install dist/*.whl
python3 test_resnet18_fp32.py
python3 test_resnet18_fp16.py
不求速度多快,不求技术多高级,只做技术积累,把一个推理引擎所需要的内容整合完毕。
cuda kernel的实现目前先实现最naive的版本,后续再优化
1、https://github.com/OpenPPL/ppl.kernel.cuda
2、https://github.com/OpenPPL/ppl.llm.kernel.cuda
3、https://github.com/alibaba/MNN
4、https://github.com/Tencent/TNN
5、https://github.com/ggerganov/llama.cpp
6、https://github.com/karpathy/llm.c
7、https://github.com/triton-lang/triton
8、https://github.com/NVIDIA/cutlass
9、https://github.com/NVIDIA/TensorRT
10、https://github.com/OpenPPL/ppq
11、https://github.com/vllm-project/vllm