我下载了一个 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="")