Решить разницу в скорости в предсказании ktrain Predictor и Learner?
Я использую библиотеку ktrain huggingface для построения языковой модели. Я заметил, что при внедрении его в производство существует огромная разница в скорости «предсказания обучаемого» и «предсказания предсказателя». Как получилось и есть ли способ ускорить предсказание предсказателя?
%timeit test = learner.predict(val) # takes 10s
%timeit test = predictor.predict(x_val,return_proba = True) # takes 25s
1 ответ
Второй вызов выполняет предварительную обработку данных (например, токенизацию), тогда как первый вызов делает прогноз на основе данных, которые уже предварительно обработаны. Итак, разница во времени, вероятно, связана со временем, которое требуется на предварительную обработку необработанных данных:
%%time
tst = predictor.preproc.preprocess_test(x_test)
# Wall time: 5.65 s
%%time
preds = learner.predict(val)
# Wall time: 10.5 s
%%time
preds = predictor.predict(x_test)
# Wall time: 16.1 s
При предоставлении списка текстов
predict
, вы также можете использовать более крупный
batch_size
это также может помочь увеличить скорость (по умолчанию 32):
predictor.batch_size = 128
preds = predictor.predict(x_test)
Наконец, если вы хотите делать более быстрые прогнозы в сценарии развертывания, вы можете посмотреть часто задаваемые вопросы о ktrain , где показано, как делать квантованные прогнозы и прогнозы с помощью ONNX.