部署小模型all-miniLM-L6-V2来提供计算文本相似度接口,部署的过程中遇到很多问题,目前都已解决,记录一下。
配置
容器配置:16核10G
gunicorn配置:5个worker
小模型包:sentence-transformer
遇到的问题
1.gunicorn worker频繁重启
查看worker日志,报错是可能因为内存原因导致worker重启。加大内存,并发量为1,worker还是频繁重启。
尝试解决问题:
a. 在接口上加一个装饰器,记录接口请求前后使用的内存,发现内存仅用了1/10,可以排除不是内存不足
b.执行top命令,观察数据,发现cpu使用率高,容器的负载很高,很快都达到60多,worker会重启。查了一下,发现可能是torch使用的cpu过高导致的。在加载小模型之前,设置torch.set_num_threads(4),重启服务,发现问题解决了
代码:
torch.set_num_threads(4) # 在模型加载前设置PyTorch线程
model = SentenceTransformer(model_name_or_path=text_similar_model_path,
device="cpu")
model.eval() # 把模型设置为评估模式,减少内存使用
2.数据量大的时候,每次处理一条数据,整个过程耗时很长
看了一下sentence-transformer的文档,发现可以批量处理数据,设置model.encode(texts, batch_size=16) 发现处理时间缩短了很多
代码:
embeddings = model.encode(sentences, batch_size=16)

6071

被折叠的 条评论
为什么被折叠?



