You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Django APIView调用Python ML库:重复加载模型优化问询

优化方案

你的推测完全正确,问题根源就是每次请求都会重新初始化KeyPhraseTransformer实例,而模型加载属于高耗时操作。以下是几种可行的优化方法:

方法一:全局作用域初始化模型

直接将模型实例化放在services.py的全局范围内,Django启动时就会完成模型加载,后续所有请求复用同一个实例:

修改后的services.py

from keyphrasetransformer import KeyPhraseTransformer

# 全局初始化模型,仅在Django启动时执行一次
kp_model = KeyPhraseTransformer() 

def extract_keyword(text):
    keyphrases = kp_model.get_key_phrases(text)
    return keyphrases

方法二:使用Django AppConfig加载模型(生产环境推荐)

如果需要更严谨的模型加载时机(避免Django初始化流程未完成时加载模型),可以通过AppConfig控制加载逻辑:

  1. 在你的应用目录下创建apps.py(无则新建):
from django.apps import AppConfig

class YourAppConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'your_app_name'
    kp_model = None

    def ready(self):
        from keyphrasetransformer import KeyPhraseTransformer
        # 应用就绪时加载模型
        self.kp_model = KeyPhraseTransformer()
  1. 修改settings.py中的INSTALLED_APPS,替换原应用名为AppConfig路径:
INSTALLED_APPS = [
    # ...其他应用
    'your_app_name.apps.YourAppConfig',
]
  1. 更新services.py调用模型的方式:
from django.apps import apps

def extract_keyword(text):
    app_config = apps.get_app_config('your_app_name')
    keyphrases = app_config.kp_model.get_key_phrases(text)
    return keyphrases

方法三:单例模式封装模型

如果需要更灵活的实例管理逻辑,可以用单例模式确保全局只有一个模型实例:

修改后的services.py

from keyphrasetransformer import KeyPhraseTransformer

class SingletonKeyPhraseTransformer:
    _instance = None

    @classmethod
    def get_instance(cls):
        if cls._instance is None:
            cls._instance = KeyPhraseTransformer()
        return cls._instance

def extract_keyword(text):
    kp_model = SingletonKeyPhraseTransformer.get_instance()
    keyphrases = kp_model.get_key_phrases(text)
    return keyphrases

注意事项

  • 以上方法均能实现模型仅加载一次,后续请求响应时间会降至1-2秒,与HuggingFace的表现一致。
  • 生产环境部署时,需确保Django进程(如Gunicorn Worker)启动时模型已完成加载,可通过配置Worker数量和预热机制避免重复加载。

内容的提问来源于stack exchange,提问作者Tyler Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 04:33:37