SapienzaNLP / ewiser

A Word Sense Disambiguation system integrating implicit and explicit external knowledge.
Other
66 stars 17 forks source link

Memory Issue while running model as REST service #10

Closed Rohit8y closed 3 years ago

Rohit8y commented 3 years ago

I'm using a REST service to run WSD model. But it's RAM keeps on increasing as I the number of hits increase. I was testing how much RAM will be enough for this, so at last I used a 64GB server, and it consumed all of it.

This is the code for rest service:-

import requests import re import os import time import json from flask import jsonify from time import sleep from json import dumps from flask import Flask, request from ewiser.spacy.disambiguate import Disambiguator import spacy

nlp = spacy.load("en_core_web_sm", disable=['parser', 'ner']) wsd = Disambiguator("/content/ewiser.semcor+wngt.pt", lang="en") nlp.add_pipe(wsd, last=True) app = Flask(name) @app.route("/wsd", methods=['POST']) def wsd():

print('service ---------------(( + _ + ))----------------- started')
item = {}
x = request.get_json()
print('+++++++++++++++++++++++++++++++++', x)
sent = x['text'] 
doc = nlp(sent)
List = []
for w in doc:
    if w._.offset:
        print(w.text, w.lemma_, w.pos_, w._.offset, w._.synset.definition())
        itm= {}
        itm['lemma']=w.lemma_
        itm['synset']=w._.offset
        itm['gloss']=w._.synset.definition()
        List.append(itm)
print(List) 
return jsonify(List)

if name == "main":

app.debug = True

app.run(host='localhost', port=7777)
Rohit8y commented 3 years ago

@mbevila

mirfan899 commented 3 years ago

I think you need to run the code in a single process:

app.run(host='localhost', port=7777, threaded=False, processes=1)
mbevila commented 3 years ago

@Valahaar

Valahaar commented 3 years ago

I've encountered this before, I solved it by installing jmalloc ( https://github.com/jemalloc/jmalloc) and using it in place of the standard malloc, then you can launch your python script like this: LD_PRELOAD=/usr/local/lib/libjemalloc.so python ...

More info should be on the jmalloc repo itself. Hope this helps!

Cheers, Niccolò

On Thu, Aug 5, 2021, 18:07 Michele Bevilacqua @.***> wrote:

@Valahaar https://github.com/Valahaar

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/SapienzaNLP/ewiser/issues/10#issuecomment-893580468, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEUS5GZ3WMEYVGUIW3CSZDLT3KZNVANCNFSM5AJFE3BA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .

mirfan899 commented 3 years ago

Does not exist.

https://github.com/jemalloc/jmalloc

This is correct url. https://github.com/jemalloc/jemalloc

Valahaar commented 3 years ago

Sorry, kinda hard to type from the phone, that's the link!

On Thu, Aug 5, 2021, 19:13 Muhammad Irfan @.***> wrote:

Does not exist.

https://github.com/jemalloc/jmalloc

This is correct url. https://github.com/jemalloc/jemalloc

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/SapienzaNLP/ewiser/issues/10#issuecomment-893625442, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEUS5GYOFANMAVNV7LSPCN3T3LBCPANCNFSM5AJFE3BA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .

mbevila commented 3 years ago

@mirfan899 have you solved this?

mirfan899 commented 3 years ago

Yes, I used the single thread, and its working fine for me.