2

我下载了一个 python 脚本,它使用 BERT 和 GPT 进行问答,不幸的是,这个脚本需要一个 GPU 来进行预测,使用 GPU 运行时每个问题只需要 1 秒,但是使用 CPU 运行时,每个问答会话需要 3 分钟以上.

这意味着操作需要 AWS p3.xlarge 机器,这些机器的运行成本很高(超过 700 美元/月)。

所以我想知道是否存在一个不是 AllenNLP 的 BIDAF 的问答系统,它可以在较小的 t2.micro AWS 实例上仅使用 CPU 时相对较好地回答问题。

这存在吗?

当前代码使用 Flask。

这是当前版本代码的摘录。我怎样才能提高性能?

#import all dependencies
import json
from flask import jsonify, Flask, request #import main Flask class and request object
app = Flask(__name__)
import os
from main import *


# @app.route('/', methods=['GET', 'POST'])
# def question_generation():
#     if request.method != 'POST':
#         return "Welcome !"

#     # Data to be written 
#     meta_data = {
#             "input_text": "",
#             "key": "quac_869",
#             "timestamp": "2019-07-12 11:35:12.201741",
#             "settings": {
#                 "top_p": 0.9,
#                 "gen_frac": 0.5,
#                 "spec_frac": 0.8
#             }
#     }
#     # print(request.form.get('passage'))

#     #add passage into meta data
#     meta_data['input_text']=request.args.get('passage')

    
#     # dump the metadata into json object
#     metadata_json = json.dumps(meta_data, indent = 4)
#     qna_data=qa_generator(tokenizer_gpt2,model_gpt2,tokenizer_bert_p,model_bert_p,metadata_json)  
#     qna_data=json.loads(qna_data)

#     #return question answer
#     return jsonify(qna_data)

@app.route('/', methods=['GET', 'POST'])
def question_generation_1():
    if request.method != 'POST':
        return "Welcome !"
    try:
        get_dict = request.get_json()
        
        
        # Data to be written 
        meta_data = {
                "input_text": "",
                "key": "quac_869",
                "timestamp": "2019-07-12 11:35:12.201741",
                "settings": {
                    "top_p": 0.9,
                    "gen_frac": 0.5,
                    "spec_frac": 0.8
                }
        }

        #add passage into meta data
        meta_data['input_text']=get_dict["passage"]

        
        # dump the metadata into json object
        metadata_json = json.dumps(meta_data, indent = 4)
        qna_data=qa_generator(tokenizer_gpt2,model_gpt2,tokenizer_bert_p,model_bert_p,metadata_json)  
        qna_data=json.loads(qna_data)
        
        #return question answer
        return jsonify(qna_data)
    except:
        
        # Data to be written 
        meta_data = {
                "input_text": "",
                "key": "quac_869",
                "timestamp": "2019-07-12 11:35:12.201741",
                "settings": {
                    "top_p": 0.9,
                    "gen_frac": 0.5,
                    "spec_frac": 0.8
                }
        }

        #add passage into meta data
        meta_data['input_text']=request.args.get('passage')

        
        # dump the metadata into json object
        metadata_json = json.dumps(meta_data, indent = 4)
        qna_data=qa_generator(tokenizer_gpt2,model_gpt2,tokenizer_bert_p,model_bert_p,metadata_json)  
        qna_data=json.loads(qna_data)
        
        #return question answer
        return jsonify(qna_data)

#app.run()
#start the server  
# if you want to use flask server then enable folowing line 
#app.run(host="167.99.108.238",port="")

4

0 回答 0