政安晨的AI大模型训练实践 六 - open-webui vLLM 运行
政安晨的个人主页:政安晨
欢迎 👍点赞✍评论⭐收藏
希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!
简单微调出来一个大语言模型后,需要运行它,虽然ollama很方便,也适合部署。但本地测试的话,还可以使用open-webui 和 vLLM这两个工具。
为了不取悦读者,请自己去查这两个工具是干啥用的,我这里只记录一些命令,做个自己运行的备忘即可。
创建一个虚拟环境方便安装:
conda create -n webtools python=3.11.5 -y
激活环境:
conda activate webtools
安装 vLLM:
pip install vllm
安装完毕,运行。
还是简单介绍一下vLLM:
vLLM 是一款专为大语言模型(LLMs)推理设计的高效开源库,由 UC Berkeley 的研究人员开发。它致力于在保证推理质量的同时,显著提升推理速度,以下从多方面对其进行简单介绍:
核心特性
- 高速推理
- vLLM 通过采用 PagedAttention 算法,有效解决了传统注意力机制中的内存碎片化问题。该算法将注意力计算过程进行分页处理,使得 GPU 内存的使用更加高效,从而在推理速度上取得了显著提升。与传统推理方式相比,vLLM 能够将推理速度提高 20 倍以上,大大缩短了模型响应时间。
- 服务优化
- 支持连续 batching 技术,能够动态地对输入请求进行批处理。在处理多个用户请求时,vLLM 可以实时将这些请求组合成一个批次进行处理,充分利用 GPU 的并行计算能力,提高系统的整体吞吐量。
- 提供了高效的推理服务接口,方便用户将其集成到各种应用中。无论是构建聊天机器人、智能客服还是其他基于大语言模型的应用,都可以借助 vLLM 快速搭建高性能的推理服务。
- 广泛的模型支持
- vLLM 支持多种主流的大语言模型,如 LLaMA、LLaMA 2、Falcon、GPT - NeoX 等。这使得用户可以根据自己的需求选择合适的模型,并使用 vLLM 进行高效推理。
工作原理
- PagedAttention 算法:传统的注意力计算在处理变长序列时会产生大量的内存碎片化,导致 GPU 内存利用率低下。PagedAttention 算法将输入序列和注意力计算过程进行分页管理,使得每个页面可以独立地进行内存分配和计算,避免了内存碎片化问题,提高了 GPU 内存的使用效率。
- 连续批处理:vLLM 在运行时会不断监控输入请求队列,当有新的请求到来时,会动态地将其加入到当前正在处理的批次中。通过实时调整批次大小,充分利用 GPU 的计算资源,提高推理效率。
使用方式
- 安装:可以使用 pip 命令进行安装,具体命令为
pip install vllm
。- 推理示例:以下是一个简单的使用示例,展示了如何使用 vLLM 进行文本生成:
python
from vllm import LLM, SamplingParams # 创建 LLM 实例,指定要使用的模型 llm = LLM(model="facebook/opt - 125m") # 定义采样参数,如温度、最大生成长度等 sampling_params = SamplingParams(temperature=0.8, top_p=0.95, max_tokens=100) # 输入文本列表 prompts = ["Once upon a time", "In a far - away land"] # 生成文本 outputs = llm.generate(prompts, sampling_params) # 输出结果 for output in outputs: prompt = output.prompt generated_text = output.outputs[0].text print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
应用场景
- 聊天机器人:能够快速响应用户的提问,提供流畅的对话体验。
- 智能写作辅助:在写作过程中,实时为用户生成相关的文本内容,提高写作效率。
- 信息检索与问答系统:快速从大量文本中提取相关信息,回答用户的问题。
工具安装好之后,可以加载运行我上面文章训练的本地模型,并提供api服务:
vllm serve /home/tongyuzhou/aigc2/LlamaWork/DS-R1-1.5B-train
接着,使用该接口进行测试:
curl http://localhost:8000/v1/models
可以看到数据,也可在浏览器里进行(把自己的主机地址放上):
http://xxx.xxx.xx.x:8000/v1/models
可以得到模型数据。
接下来,我们安装 open-webui
pip install open-webui
安装之后,你会发现,两个工具装在一个虚拟环境中,会有库存在冲突。
所以,重新建立虚拟环境,然后安装open-webui工具。
conda create -n openwebui python=3.12.6 -y
好,至此,安装完毕,没有报库的兼容错误了。
尝试把这两个工具组合起来使用:
1. 启动vllm(参照我上面的操作)
2. 启动open-webui
open-webui serve
深入玩法大家自己尝试吧。