【LLM】在PAI-DSW上使用 vLLM + Open-WebUI 部署Qwen2.5

最近在玩LLM,听闻PAI-DSW有三个月免费试用,试了一下感觉还不错,就是有一些学习成本。刚通过vllm+open-webui成功部署了Qwen2.5-7B-Instruct,也是摸索了一段时间,记录一下以便需要使用同样方案的朋友们节省时间,迅速上手。
简便起见,本文所有安装均使用pip工具,不使用docker。

总体思路

从modelscope下载模型,运行vllm serve构建服务器,然后通过Open-WebUI连接并开始对话。

PAI-DSW部署的难点

主要有两个:

  1. 不是本机,没法方便地科学上网。特别是无法直连hugging face;
  2. 镜像不能完全涵盖所需要的环境。
  3. 不是本机,不能直接用浏览器打开localhost(即0.0.0.0)

展开说一下第二点:vllm需要cuda 12以上才能使用,11.8会提示过旧;open-webui需要使用python 3.11才可以使用pip安装。然而,PAI-DSW的镜像中要么是py310+cu121,要么是py311+cu118,欲哭无泪。最后建议大家选择py310+cu121的方案,我们可以通过安装Anaconda,使用虚拟环境来部署Open-WebUI。
对于第三点,原来我以为是不能直接打开的,还专门用了cpolar做透传,结果发现阿里已经想到这一点了,直接点击终端里的链接就能访问,太贴心了。

具体安装流程

模型下载

这里建议通过modelscope下载,非常快,平均速度在300MB/s左右。

自动下载(略)

据我所知,你可以直接使用vllm通过modelscope下载模型,如果默认用的是hugging face可以通过在终端输入

export VLLM_USE_MODELSCOPE=True

然后运行vllm serve,输入模型地址即可下载。但是我在vllm v0.6.1.post2没有成功,故采取手动下载方式,这样其实也不错,不麻烦。

手动下载(推荐)

首先安装modelscope包。由于DSW是有预装的镜像文件的,故建议使用裸py

### 关于vLLMOpenWebUI的技术信息与项目详情 #### vLLM概述 vLLM 是一个致力于提供大规模语言模型推理服务的开源项目[^1]。该项目旨在通过优化大模型部署过程中的资源利用效率,降低运行成本并提高响应速度。 对于开发者而言,vLLM 提供了一套完整的工具链来支持从训练到上线的大规模预训练模型操作流程。其核心功能包括但不限于: - **高效加载**:实现了多线程异步读取机制,能够快速初始化大型神经网络参数。 - **分布式执行**:借助集群计算能力实现跨节点的任务调度与数据传输管理。 - **灵活配置**:允许用户自定义硬件环境设置以及性能调优选项。 #### OpenWebUI简介 虽然未直接提及具体的`OpenWebUI`项目名称,但从上下文中推测这可能是指基于网页界面的应用程序框架或者是特定平台上的图形化交互组件集合。考虑到关联性,在此假设讨论的是类似于 `ChatGPT-Next-Web` 的前端展示层解决方案。 这类应用通常具备如下特点: - **易于集成**:可以方便地嵌入现有网站或独立作为微服务存在。 - **实时通信**:采用WebSocket等协议保持客户端和服务端之间的持续连接状态。 - **用户体验友好**:注重视觉效果设计的同时兼顾易用性和可访问性原则。 #### 使用指南 为了更好地理解如何结合这两个项目的特性来进行开发工作,下面给出一段简单的 Python 脚本示例,用于模拟向已部署好的 vLLM API 发送请求,并将返回的结果渲染成 HTML 页面显示给最终用户查看。 ```python import requests from flask import Flask, render_template_string app = Flask(__name__) @app.route('/') def index(): response = requests.post('http://localhost:8000/api/generate', json={"prompt": "Once upon a time"}) text_output = response.json()['text'] html_content = f""" <!DOCTYPE html> <html lang="en"> <body> <h1>Generated Story</h1> <p>{text_output}</p> </body> </html> """ return render_template_string(html_content) if __name__ == '__main__': app.run(debug=True) ``` 这段代码创建了一个小型 Web 应用服务器,它会接收来自用户的输入并通过 POST 请求传递至后台处理逻辑;之后再把生成的内容格式化为标准HTML文档结构呈现出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值