Я создал рабочий процесс, когда просил пользователя опубликовать вопрос, чтобы сделать прогноз для этого вопроса.Я использую модель нейронной сети BERT для прогнозирования и использую SQUAD 2.0 для обучения с использованием TPU.Когда я загружаю параграф или два в контексте в следующей структуре JSON:
{
"data": [
{
"paragraphs": [
{
"qas": [
{
"question": "question",
"id": "65432sd54654dadaad"
}
],
"context": "paragraph"
}
]
}
]
}
и отправляю это, чтобы предсказать ответ, это занимает минуту для каждого отдельного вопроса.Следующее - это то, что я заметил: Контекст и вопрос преобразуются в 1 0 или True False. Затем начинается предсказание.Прогнозирование занимает около 20 секунд или меньше.
Если я попытаюсь добавить 5 МБ текста в контекст, для преобразования в 1 0 или true-false потребуется два полных часа, а затем произойдет предсказание ответа.
Можно ли один раз загрузить контекст и динамически предсказать ответ на вопрос?Я использую run_squad.py .Вот флаги, которые я использовал:
python run_squad.py \
--vocab_file=$BERT_LARGE_DIR/vocab.txt \
--bert_config_file=$BERT_LARGE_DIR/bert_config.json \
--init_checkpoint=$BERT_LARGE_DIR/model.ckpt \
--do_train=False \
--train_file=$SQUAD_DIR/train-v2.0.json \
--do_predict=True \
--predict_file=$SQUAD_DIR/dev-v2.0.json \
--train_batch_size=24 \
--learning_rate=3e-5 \
--num_train_epochs=2.0 \
--max_seq_length=384 \
--doc_stride=128 \
--output_dir=gs://some_bucket/squad_large/ \
--use_tpu=True \
--tpu_name=$TPU_NAME \
--version_2_with_negative=True