Как лучше всего загрузить 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)
  
Вернуться на верх