DeepSpeed-MII FastAPI non-persistent wrapper

xxe27gdn  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(70)

为了获得更多的控制权,我想将Mii Package 在FastAPI中。因此,我决定使用管道。
作为参考,我想运行类似以下内容的操作:

pipe = mii.pipeline("llama-2-7b-chat-hf")

@app.post("/generate")
async def generate(req):
    return {"outputs": pipe(**(req.model_dump()))}

在这个过程中,我希望能够"释放"或"释放"管道中的资源。假设我想通过FastAPI中的端点替换正在运行的llama 2 7b为mistral 7b,并在启动mistral 7b之前释放GPU内存,可以实现这样的操作吗?类似于以下方式:

@app.post("/swap")
async def swap(req):
    pipe.terminate()
    pipe = mii.pipeline(req.model)
  • tensor_parallelismnum_replicas是否支持非持久化的管道?
yiytaume

yiytaume1#

遗憾的是,我们目前没有简单易行的方法来拆除管道。这是我一直困扰的问题,也在我的待办事项列表中。我会看看这周是否能解决这个问题!

我们确实支持使用管道部署 tensor_parallelism,但您需要使用 deepspeed --num_gpus 2 启动命令进行部署。我想这在 fastapi 中会是个问题。

我会尝试用 fastapi 进行测试,但在此期间,请查看我们如何使用 flask 在持久部署下搭建类似的端点:https://github.com/microsoft/DeepSpeed-MII/blob/main/mii/grpc_related/restful_gateway.py

相关问题