conda环境下部署阿里大模型“通义千问”页面应答无法正常显示问题解决

发布时间:2024年01月04日

1 问题描述

“通义千问”部署:https://blog.csdn.net/lsb2002/article/details/135084490

部署完成后,运行web程序测试python web_demo.py

19983cc07cbc492fb489348ece360ada.png

输入问题提交后,并没有显示答案,但通过日志查看,答案已经返回,如下所示:

(qwen) [root@localhost Qwen]# python web_demo.py 
The model is automatically converting to fp16 for faster inference. If you want to disable the automatic precision, please manually add bf16/fp16/fp32=True to "AutoModelForCausalLM.from_pretrained".
Try importing flash-attention for faster inference...
Warning: import flash_attn rotary fail, please install FlashAttention rotary to get higher efficiency https://github.com/Dao-AILab/flash-attention/tree/main/csrc/rotary
Warning: import flash_attn rms_norm fail, please install FlashAttention layer_norm to get higher efficiency https://github.com/Dao-AILab/flash-attention/tree/main/csrc/layer_norm
Warning: import flash_attn fail, please install FlashAttention to get higher efficiency https://github.com/Dao-AILab/flash-attention
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 8/8 [00:05<00:00,  1.44it/s]
Running on local URL:  http://192.168.1.150:8000

To create a public link, set `share=True` in `launch()`.
User: 肿瘤患者居家注意什么
History: []
Qwen-Chat: 1. 避免接触烟雾和有害气体;<br>2. 保持室内空气新鲜,避免尘埃、花粉等刺激性物质;<br>3. 定期复查和评估病情,及时调整治疗方案。

2 问题分析

查看源码,没有发现问题:

 chatbot = gr.Chatbot(label='Qwen-Chat', elem_classes="control-height")
        query = gr.Textbox(lines=2, label='Input')
        task_history = gr.State([])

        with gr.Row():
            empty_btn = gr.Button("🧹 Clear History (清除历史)")
            submit_btn = gr.Button("🚀 Submit (发送)")
            regen_btn = gr.Button("🤔? Regenerate (重试)")

        submit_btn.click(predict, [query, chatbot, task_history], [chatbot], show_progress=True)
        submit_btn.click(reset_user_input, [], [query])
        empty_btn.click(reset_state, [chatbot, task_history], outputs=[chatbot], show_progress=True)
        regen_btn.click(regenerate, [chatbot, task_history], [chatbot], show_progress=True)

此问题应该与gradio版本有关,通过查看本地gradio版本:

(qwen) [root@localhost Qwen]# pip list
Package                       Version
----------------------------- ------------
accelerate                    0.25.0
aiofiles                      23.2.1
aiohttp                       3.9.1
aiosignal                     1.3.1
altair                        5.2.0
annotated-types               0.6.0
anyio                         3.7.1
async-timeout                 4.0.3
attrs                         23.1.0
certifi                       2023.11.17
charset-normalizer            3.3.2
click                         8.1.7
colorama                      0.4.6
contourpy                     1.2.0
cycler                        0.12.1
einops                        0.7.0
exceptiongroup                1.2.0
fastapi                       0.105.0
ffmpeg-python                 0.2.0
ffmpy                         0.3.1
filelock                      3.13.1
fonttools                     4.47.0
frozenlist                    1.4.1
fsspec                        2023.12.2
gradio                        4.10.0
gradio_client                 0.7.3
h11                           0.14.0
httpcore                      1.0.2
httpx                         0.25.2
huggingface-hub               0.19.4
idna                          3.6
importlib-metadata            7.0.0
importlib-resources           6.1.1
Jinja2                        3.1.2
jsonschema                    4.20.0
jsonschema-specifications     2023.11.2
kiwisolver                    1.4.5
latex2mathml                  3.77.0
linkify-it-py                 2.0.2
Markdown                      3.5.1
markdown-it-py                2.2.0
MarkupSafe                    2.1.3
matplotlib                    3.8.2
mdit-py-plugins               0.3.3
mdtex2html                    1.2.0
mdurl                         0.1.2
mpmath                        1.3.0
multidict                     6.0.4
networkx                      3.2.1
numpy                         1.26.2
nvidia-cublas-cu12            12.1.3.1
nvidia-cuda-cupti-cu12        12.1.105
nvidia-cuda-nvrtc-cu12        12.1.105
nvidia-cuda-runtime-cu12      12.1.105
nvidia-cudnn-cu12             8.9.2.26
nvidia-cufft-cu12             11.0.2.54
nvidia-curand-cu12            10.3.2.106
nvidia-cusolver-cu12          11.4.5.107
nvidia-cusparse-cu12          12.1.0.106
nvidia-nccl-cu12              2.18.1
nvidia-nvjitlink-cu12         12.3.101
nvidia-nvtx-cu12              12.1.105
orjson                        3.9.10
packaging                     23.2
pandas                        2.1.4
Pillow                        10.1.0
pip                           23.3.2
psutil                        5.9.7
pydantic                      2.5.2
pydantic_core                 2.14.5
pydub                         0.25.1
Pygments                      2.17.2
pyparsing                     3.1.1
python-dateutil               2.8.2
python-multipart              0.0.6
pytz                          2023.3.post1
PyYAML                        6.0.1
referencing                   0.32.0
regex                         2023.10.3
requests                      2.31.0
rich                          13.7.0
rpds-py                       0.15.2
safetensors                   0.4.1
scipy                         1.11.4
semantic-version              2.10.0
setuptools                    68.2.2
shellingham                   1.5.4
six                           1.16.0
sniffio                       1.3.0
starlette                     0.27.0
sympy                         1.12
tiktoken                      0.5.2
tokenizers                    0.13.3
tomlkit                       0.12.0
toolz                         0.12.0
torch                         2.1.2
tqdm                          4.66.1
transformers                  4.32.0
transformers-stream-generator 0.0.4
triton                        2.1.0
typer                         0.9.0
typing_extensions             4.9.0
tzdata                        2023.3
uc-micro-py                   1.0.2
urllib3                       2.1.0
uvicorn                       0.24.0.post1
websockets                    11.0.3
wheel                         0.42.0
yarl                          1.9.4
zipp                          3.17.0

本地gradio版本为4.10.0。

3 问题解决

降低gradio版本

pip install gradio==3.40.0

再次运行python web_demo.py,如下所示:

027ee1a303994fbf80c37625871ed6a9.png

页面正常显示应答,问题解决。

??4 conda环境介绍

Conda是一个开源的包管理器和环境管理系统,用于安装、运行和更新包和其依赖项。它是由Anaconda, Inc.(以前称为Continuum Analytics)创建,用于支持Python程序开发,但它也可以用来管理来自其他语言的包。Conda使得包管理和环境隔离变得简单,对于处理多个项目中的依赖关系和版本控制尤其有用。

7fe216bee95143b88dd373480ba452ee.webp

Conda是一个强大的工具,对于管理复杂的Python项目和环境至关重要。它简化了包管理和环境设置,使得Python开发更加容易和高效。通过使用Conda,开发者可以确保他们的项目在不同机器和操作系统上都能以相同的方式运行,大大提高了项目的可移植性和可复现性。

4.1 Conda的核心概念

  • 包管理:Conda作为包管理器,能够安装、更新和卸载软件包。这些包可能包含Python或其他编程语言的库和应用程序。Conda通过包含所有依赖性的方式来解决包之间的依赖关系问题。

  • 环境管理:Conda允许用户创建隔离的环境,以便在不同的项目之间切换,而不会导致依赖项或版本的冲突。每个环境都有自己的一套独立的安装的软件包。

  • 跨平台:Conda是跨平台的,可以在Windows、macOS和Linux操作系统上运行。这使得在不同操作系统上保持一致的开发和部署环境成为可能。

  • 语言无关性:虽然Conda最初是为Python生态系统设计的,但它实际上是语言无关的,可以管理多种编程语言的软件包。

  • 通道(Channels):Conda软件包可以从所谓的“通道”中获得。这些通道是包存储库,可以是公共的或私有的。Anaconda Cloud提供了许多预建的包,而用户也可以创建自己的通道来托管和分享包。

  • 依赖和兼容性管理:Conda在安装软件包时会自动处理依赖关系和版本控制,确保所有依赖项都兼容,并且不会发生冲突。

4.2 使用Conda的优势

  • 解决依赖性问题:Conda可以自动解决包之间的依赖关系,简化了安装过程。

  • 环境隔离:创建独立的环境可以避免包之间的版本冲突,使得项目更稳定。

  • 易于使用:Conda的命令行界面简单直观,易于学习和使用。

  • 广泛的包支持:Conda支持Python的许多流行库和应用程序。

  • 社区支持:作为一个流行的工具,Conda拥有一个活跃的社区,用户可以从中找到支持和资源。

4.3 Conda环境的创建和管理

  • 创建新环境:使用conda create命令创建一个新环境,可以指定Python版本和所需的包。

  • 激活环境:使用conda activate命令来激活环境。

  • 安装包:在激活的环境中使用conda install命令来安装新的包。

  • 环境列表:使用conda env list来查看所有可用的Conda环境。

  • 移除环境:使用conda env remove命令来移除不再需要的环境。

4.4 应用场景

Conda作为一个强大的包和环境管理工具,广泛应用于需要精确控制依赖和环境的各种软件开发和科学计算领域,主要包括:

  • 数据科学和机器学习项目:由于Conda可以轻松安装和管理各种数据科学和机器学习的库(如NumPy, Pandas, Scikit-learn, TensorFlow, PyTorch等),它成为了这些领域专家的首选工具。

  • 多语言项目:对于涉及Python、R、Ruby、Lua、Scala等多种编程语言的项目,Conda能够有效管理不同语言的依赖和环境,使项目维护变得更加简单。

  • 环境隔离:在需要为不同项目创建隔离的运行环境时,Conda可以创建独立的环境,每个环境具有不同的库和版本,这有助于防止依赖冲突。

  • 跨平台开发:由于Conda支持Windows、macOS和Linux,它允许开发者在不同的操作系统上以一致的方式设置和维护他们的开发环境。

  • 科学研究:在科学研究中,需要使用特定版本的软件和库来重现实验结果。Conda可以确保这些环境的一致性和可复制性。

  • 软件开发:对于需要确保应用程序在特定版本的库上正常运行的开发场景,Conda可以帮助管理和锁定这些依赖。

  • 教育和培训:在教育场景中,Conda可以帮助创建统一的学习环境,确保所有学生都在相同的软件设置下学习。

  • 持续集成/持续部署(CI/CD):在自动化构建和部署流程中,Conda可以用于创建和管理构建环境,确保软件在不同环境中的一致性和可靠性。

4.5 常用命令

Conda 是一个开源的包管理器和环境管理器,广泛用于管理Python环境和包。以下是一些常用的 Conda 命令:

  • 安装 Conda 包:

    • conda install [package-name]: 安装指定的包。
  • 创建和管理环境:

    • conda create --name [env-name]: 创建一个新的环境。
    • conda activate [env-name]: 激活指定环境。
    • conda deactivate: 退出当前环境。
    • conda env list: 列出所有可用的环境。
  • 管理包:

    • conda list: 在当前环境中列出所有已安装的包。
    • conda update [package-name]: 更新指定的包。
    • conda remove [package-name]: 移除指定的包。
  • 搜索包:

    • conda search [package-name]: 搜索可用的包版本。
  • 环境导出和导入:

    • conda env export > environment.yml: 导出当前环境的配置到一个YAML文件。
    • conda env create -f environment.yml: 使用YAML文件创建一个新环境。
  • 更新 Conda:

    • conda update conda: 更新 Conda 到最新版本。
  • 查看 Conda 信息:

    • conda info: 显示关于 Conda 的信息。

?

文章来源:https://blog.csdn.net/lsb2002/article/details/135367180
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。