yeyupiaoling/AudioClassification-Pytorch

如何提交并发量和减少cpu的资源

tuocheng0824 opened this issue · 1 comments

如下:
from fastapi import FastAPI, File, UploadFile
from macls.predict import MAClsPredictor
from macls.utils.utils import add_arguments, print_arguments
import io

创建 FastAPI 应用

app = FastAPI()

定义全局变量用于存储模型

predictor = None

加载模型和配置

def load_model():
global predictor
#configs = 'configs/resnet_se.yml'
configs = 'configs/cam++.yml'
model_path = 'models/CAMPPlus_Fbank/best_model/'
#model_path = 'models/ResNetSE_Fbank/best_model/'
use_gpu = False
predictor = MAClsPredictor(configs=configs, model_path=model_path, use_gpu=use_gpu)

定义路由接口

@app.post("/predict")
async def predict_audio(file: UploadFile):
global predictor
if predictor is None:
load_model()
audio_data = await file.read()
label, score = predictor.predict(audio_data=audio_data)
return {"label": label, "score": score}

if name == "main":
import uvicorn
load_model() # 启动时加载模型
uvicorn.run(app, host="0.0.0.0", port=8898)

在使用postman调用时 占用的cpu较高 且无法支持多并发

不支持并发的,要并发需要创建多进程去处理。
使用小一些的模型,如cam++,可以减少CPU占用