Avocat_dans 2024-05-10 14:32 采纳率: 0%
浏览 10
已结题

chatglm-6b应用到django项目中,模型加载失败

最近在做一个设计,我部署了chatglm-6b模型,使用pycharm顺利运行起来了,也可以对话,然后我就打算将cli_demo_vision.py里的代码用在我的django程序中,我在后端写了一个方法,获取前端的输入的问题,然后加载模型,得到chatglm-6b的回答,在通过ajax返回到前段,现在的问题,就是运行django项目后,每当执行到这个方法的时候,加载模型就会报错,或者不断重启我的django项目,但是我不执行整个django,而是单独执行这个我写的这个py文件,模型又可以成功加载。

加载模型就会报错:

img

不断重启django项目:

img

单独执行成功加载:

img

  • 写回答

27条回答 默认 最新

  • 笑面虎 2024-05-10 14:32
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    您想要解决的问题: 您希望解决的问题是在将chatglm-6b模型集成到Django项目中时遇到的模型加载失败问题。当您尝试在Django项目中运行模型以处理前端输入并返回响应时,模型无法加载,导致Django项目不断重启或报错。然而,当您独立运行包含模型加载代码的Python文件时,模型却能成功加载。

    图片内容

    1. 第一张图片显示了Django开发服务器的启动日志,包括Django版本、服务器地址、以及一些GET和POST请求的响应状态。同时,包含了一些警告信息,建议在加载带有自定义代码的模型或配置时明确传递'revision'参数。
    2. 第二张图片显示了一个系统错误(SystemError),指出在Python关闭时无法添加挂起调用(cannot add pending calls),以及一个greenlet库的警告,提示可能存在内存泄漏。
    3. 第三张图片显示了模型加载的日志信息,包括鼓励传递'revision'参数的警告,以及加载检查点分片的进度信息。

    问题出现原因: 问题可能出现的原因有几个:

    • 多线程环境冲突:Django运行在一个多线程的服务器环境中,而某些模型可能不支持在这种环境中加载或运行。
    • 资源限制:Django服务器可能没有足够的资源来加载大型模型,如内存限制或处理器限制。
    • 代码执行上下文:在Django项目中执行模型加载代码的上下文可能与独立运行Python文件时不同,这可能导致不同的行为或错误。
    • Python关闭时的挂起调用:第二张图片中的系统错误表明在Python关闭过程中尝试添加挂起调用,这可能是由于Django服务器的重启或关闭。

    问题解决方案

    1. 确保线程安全:检查chatglm-6b模型是否支持在多线程环境中运行,如果不兼容,考虑使用Django的同步处理或锁定机制。
    2. 资源分配:确保Django服务器有足够的资源来加载模型,可能需要增加内存分配或使用更强大的处理器。
    3. 上下文管理:检查Django项目中的代码执行上下文,确保模型加载所需的环境与独立运行Python文件时相同。
    4. 异常处理:在Django项目中添加异常处理机制,捕获模型加载过程中可能出现的任何错误。

    提供代码: 由于问题的具体解决方案需要根据实际的代码和项目结构来定制,这里提供一个基本的异常处理示例,您可以将其集成到您的Django项目中:

    from django.http import JsonResponse
    from some_model_library import load_model
    
    def get_model_response(request):
        try:
            # 尝试加载模型并获取响应
            model = load_model('path_to_model')
            response = model.get_response(request.GET['input_question'])
            return JsonResponse({'response': response})
        except Exception as e:
            # 如果加载模型时出现错误,返回错误信息
            return JsonResponse({'error': str(e)})
    

    代码运行方式

    • 确保您的Django环境已经设置好,并且所有依赖库都已安装。
    • 将上述代码集成到您的Django项目中的适当视图函数中。
    • 运行Django开发服务器,并通过浏览器或Postman等工具测试您的接口。

    代码预期运行结果: 如果模型加载成功,前端将收到一个包含模型回答的JSON响应。如果模型加载失败,前端将收到一个包含错误信息的JSON响应。

    推荐相关链接

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月18日
  • 创建了问题 5月10日

悬赏问题

  • ¥15 关于超局变量获取查询的问题
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集
  • ¥15 在启动roslaunch时出现如下问题
  • ¥15 汇编语言实现加减法计算器的功能
  • ¥20 关于多单片机模块化的一些问题
  • ¥30 seata使用出现报错,其他服务找不到seata
  • ¥35 引用csv数据文件(4列1800行),通过高斯-赛德尔法拟合曲线,在选取(每五十点取1点)数据,求该数据点的曲率中心。
  • ¥20 程序只发送0X01,串口助手显示不正确,配置看了没有问题115200-8-1-no,如何解决?