Как лучше всего загрузить ML-модель в Django
Я разворачиваю модель машинного обучения (распознавание именованных сущностей) с помощью Django. Вкратце, пользователь выбирает область (например, Политика или Наука) и пишет текст в области поиска. Затем модель идентифицирует именованные сущности в тексте.
Моя проблема заключается в том, что ML-модель (кодер) загружается каждый раз при запуске представления, что замедляет процесс. Есть идеи, как оптимизировать это и загружать ее только один раз?
Мой views.py :
def search_view(request):
if request.POST:
field = request.POST['field']
query = request.POST['query']
encoder = load_encoder(field)
results = Ner_model(query,encoder)
context['result'] = results
return render(request,'ner/results.html', context)
Спасибо!
Сначала лучше загрузить все возможные кодеры и модели. затем для каждого условия вызывать соответствующую модель. например, если у вас есть 2 поля:
encoders = {}
fields = [field1, field2]
for field in fields:
path_encoder = os.path.join(field,'field_encoder')
encoder = AutoTokenizer.from_pretrained(path_encoder)
encoders[field] = encoder
def load_encoder(field):
encoder = encoders.get(field)
return encoder
Вдохновленный предложением @Masoud, я определил 2 глобальные переменные: одну для хранения загруженного кодера и одну для отслеживания выбранного поля... несмотря на то, что глобальные переменные обычно не рекомендуются...
Таким образом, получается что-то вроде этого :
encoder = None
old_field = ''
def search_view(request):
global encoder
global old_field
if request.POST:
field = request.POST['field']
query = request.POST['query']
if (not encoder) or (old_field!=field):
encoder = load_encoder(field)
results = Ner_model(query,encoder)
context['result'] = results
return render(request,'ner/results.html', context)