Лучшая практика при загрузке и прогнозировании модели keras с использованием колбы - PullRequest
0 голосов
/ 05 июля 2019

Я развернул небольшую веб-службу (флягу) в Google AppEngine с этой конфигурацией app.yaml

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

У меня есть конечная точка для прогнозирования, является ли предложение токсичным, к сожалению, вызов конечной точки иногда очень медленныйи иногда быстро.

Конечно, я загружаю модель только один раз, а не при каждом запросе.При запуске колбы с резьбой это False.

    list_classes = ["toxic", "severe_toxic", "obscene", "threat", "insult", "identity_hate"]

    with open('tokenizer.pkl', 'rb') as handler:
        tokenizer = pickle.load(handler)

    model = load_model('m.hdf5')

    app = Flask(__name__)

    def prediction(sentence):
        list_tokenized_train = tokenizer.texts_to_sequences([sentence])
        maxlen = 200
        X_t = pad_sequences(list_tokenized_train, maxlen=maxlen)

        pred = model.predict(X_t)[0]

        dic = {}
        for idx, prob  in enumerate(pred):
            dic[list_classes[idx]] = float(prob) 
        return dict(sorted(dic.items(), reverse=True, key=lambda x: x[1]))


 @app.route('/api/v1/predict/<comment>', methods=['GET'])
 def predict(comment):
     result = prediction(comment)
     return make_response(jsonify({'Comment': comment, 'Result': result}), 200)

if __name__ == '__main__':
    app.run(threaded=False)

Есть ли какие-то детали, которые я могу улучшить для улучшения производительности?

1 Ответ

0 голосов
/ 05 июля 2019

С моей точки зрения, ваш main.py код выглядит нормально, я вижу только возможные улучшения в файле app.yaml.

Выбор manual_scaling и установка количества экземпляров равным 1 могут ограничивать время ответа на ваши запросы. В зависимости от количества запросов, отправленных экземпляру, он может не справиться с ними достаточно быстро. Поэтому, почему есть такая разница между запросами.

Чтобы улучшить время отклика, я бы предложил вам вместо этого использовать автоматическое масштабирование , а также попытаться сделать ваш экземпляр немного более мощным, предоставив ему больше ресурсов на тот случай, если автоматическое масштабирование не решит вашу проблему. выпуск.

...