系列篇章💥
No. | 文章 |
---|---|
1 | Qwen2.5-Omni 大模型部署实践(一):环境搭建与模型下载 |
2 | Qwen2.5-Omni 大模型部署实践(二):使用transformers推理实践 |
3 | Qwen2.5-Omni 大模型部署实践(三):5 分钟搭建本地 Web UI,体验多模态智能助手 |
目录
一、前言
前两篇文章中,我们已经完成了 Qwen2.5-Omni 大模型部署的关键前期工作,包括搭建适配的运行环境、成功下载模型以及运用 transformers 库实现模型推理。到这里,我们距离全方位体验 Qwen2.5-Omni 强大的多模态对话能力仅一步之遥。本文将带领大家进入本地 Web UI 演示的启动环节,通过这一可视化交互界面,用户能够借助 Web 浏览器与模型展开便捷、直观的对话,深入感受其多模态处理的魅力。
二、安装相关依赖
在正式开启本地 Web UI 演示之前,我们需要确保系统中已安装好所有必要的依赖项,我们可以借助以下命令来完成安装:
git clone https://github.com/QwenLM/Qwen2.5-Omni.git
cd Qwen2.5-Omni
pip install -r requirements_web_demo.txt
先通过git clone https://github.com/QwenLM/Qwen2.5-Omni.git
这条命令,从 GitHub 的指定仓库中 “搬运” Qwen2.5-Omni 的相关代码到本地,为后续的操作提供基础。进入到代码根目录,安装Web应用所需要的相关依赖;
pip install -r requirements_web_demo.txt
命令则按照 requirements_web_demo.txt 文件中列出的清单,自动安装运行 Web 演示所需的各类 Python 库。这个文件详细记录了诸如特定版本的前端框架、后端交互库以及模型适配工具等依赖信息,确保我们安装的每个库版本都能与 Qwen2.5-Omni 的 Web UI 演示完美兼容。
安装完成后,效果如下图所示:
从图中可以看到,安装过程中,各个依赖库依次被下载、解压并安装到系统环境中,终端不断输出安装进度和相关信息,最终显示安装成功,意味着我们已经成功搭建好了 Web UI 演示的基础环境。
三、修改模型路径
当依赖安装完成后,我们需要对 Web UI 演示的配置进行一处关键修改,即把模型地址从默认的远程仓库地址切换为我们之前本地下载的模型权重文件地址。打开根目录下的 web_demo.py 文件,在众多代码中找到如下这行:
修改前:
DEFAULT_CKPT_PATH = "Qwen/Qwen2.5-Omni-7B"
这行代码默认指定了模型从远程的 Qwen/Qwen2.5-Omni-7B 仓库路径加载。而我们已经在本地 /root/autodl-tmp/Qwen/Qwen2.5-Omni-7B 路径下成功下载并保存了模型权重文件,所以需要将这行代码修改为:
修改后:
DEFAULT_CKPT_PATH = "/root/autodl-tmp/Qwen/Qwen2.5-Omni-7B"
通过这一简单修改,Web UI 演示程序在启动时就会优先从本地指定路径加载模型,不仅避免了重复从远程下载可能带来的网络不稳定和时间成本,还能确保使用的是我们之前精心部署和验证过的本地模型版本,提升了模型调用的稳定性和效率。
四、运行启动 Web 服务
(一)启用 FlashAttention-2
为了提高性能和效率,尤其是在多图像和视频处理场景中,强烈建议使用 FlashAttention-2。FlashAttention-2 在内存使用和运算速度方面进行了深度优化,能够显著减少模型推理过程中的内存占用,同时大幅提升计算速度,使得模型在处理大规模数据时能够更加流畅、高效地运行。
为了充分发挥 FlashAttention-2 的优势,我们使用以下命令启动 Web 服务:
python web_demo.py --flash-attn2
当执行这条命令后,Web 服务会以启用 FlashAttention-2 的模式启动。在启动过程中,程序会进行一系列初始化操作,包括加载模型、配置服务器、初始化前端交互环境等。
启动完成后,效果如下图所示:
从图中可以看到,终端输出了 Web 服务启动的相关信息,包括启动时间、服务运行的地址和端口等关键信息,表明 Web 服务已成功启动并等待用户访问。
(二)默认用法(不启用 FlashAttention-2)
如果出于某些特殊原因,比如对模型性能要求相对较低,或者硬件环境不支持 FlashAttention-2 的高效运行,用户也可以选择在不启用该技术的情况下运行演示。此时,只需简单执行以下命令:
python web_demo.py
当执行这条命令时,演示程序将按照默认配置加载模型,即使用标准的注意力实现方式。虽然这种方式在性能上可能略逊于启用 FlashAttention-2 的模式,但在一些资源有限或对实时性要求不高的场景下,也能满足基本的模型交互需求。不过,在处理多图像、长视频等复杂多模态数据时,可能会出现响应速度变慢、内存占用增加等情况,所以在实际应用中,建议根据具体场景和硬件条件合理选择是否启用 FlashAttention-2。
五、访问 UI 对话界面
无论选择哪种方式启动 Web 服务,当命令执行成功后,用户都会在终端中看到生成的一个链接,类似于以下内容:
Running on local: http://127.0.0.1:7860/
只需复制此链接,并将其粘贴到浏览器的地址栏中,按下回车键,就能快速访问到 Web UI 界面。
从图中可以清晰地看到 Web UI 界面的布局,输入区域、功能按钮以及模型回复展示区域一目了然,用户能够轻松上手,与 Qwen2.5-Omni 模型展开自然流畅的多模态对话。
六、语音对话聊天
Web UI 界面的一大特色就是支持语音对话聊天功能,这进一步提升了交互的便捷性和自然度。用户只需点击界面中的录制按钮,对着麦克风说出语音指令,例如 “你好,请介绍一下自己”,模型便会迅速捕捉语音信息,并自动进行处理和回复。
模型的回复内容不仅包括详细的文本介绍,还会生成与之对应的语音文件。
在界面上,用户可以直观地看到模型输出的文本内容,同时点击播放按钮就能收听模型生成的语音回复,真正实现了语音与文本的无缝交互。效果如下图所示:
从图中可以看到,模型准确理解了用户的语音指令,并生成了详细且准确的回复文本,同时对应的语音文件也准备就绪,等待用户收听。
在模型运行过程中,服务器的资源消耗情况也是我们关注的重点。通过nvidia-smi
,我们可以获取服务器在处理用户请求时的资源使用数据,例如 GPU 使用率、内存占用等。以下是服务器资源消耗的示意图:
七、总结
通过本文全面且细致的介绍,我们成功跨越了启动 Qwen2.5-Omni 本地 Web UI 演示的关键一步,并通过实际操作深度体验了其强大的多模态对话能力。借助 Web UI 演示这一直观的交互界面,用户能够轻松与模型进行交流,无论是输入文本、上传多模态文件,还是进行语音对话,Qwen2.5-Omni 都能给出令人满意的回复,充分展现了其在多模态处理领域的卓越性能。
到这里,我们对 Qwen2.5-Omni 的探索仅仅是冰山一角。在后续的文章中,我们将继续深入挖掘其潜力,探索更多丰富多样的应用场景,以及如何对模型进行优化,进一步提升其性能和表现。敬请持续关注,让我们一同继续探索前行。
🎯🔖更多专栏系列文章:AI大模型提示工程完全指南、AI大模型探索之路(零基础入门)、AI大模型预训练微调进阶、AI大模型开源精选实践、AI大模型RAG应用探索实践🔥🔥🔥 其他专栏可以查看博客主页📑
😎 作者介绍:资深程序老猿,从业10年+、互联网系统架构师,目前专注于AIGC的探索(CSDN博客之星|AIGC领域优质创作者)
📖专属社群:欢迎关注【小兵的AI视界】公众号或扫描下方👇二维码,回复‘入群’ 即刻上车,获取邀请链接。
💘领取三大专属福利:1️⃣免费赠送AI+编程📚500本,2️⃣AI技术教程副业资料1套,3️⃣DeepSeek资料教程1套🔥(限前500人)
如果文章内容对您有所触动,别忘了点赞、⭐关注,收藏!加入我们,一起携手同行AI的探索之旅,开启智能时代的大门!