vLLM部署本地大模型进行在线调用

vLLM部署本地大模型进行在线调用

1.如何加载调用本地下载的大模型文件?

这里指的是如何使用本地大模型的预测功能,在实际项目中模型并不是仅仅作为单机程序运行,而是作为具体业务系统的服务模块。因此需要提供相应API接口为应用程序提供服务。

所以就有两种方式,(1)使用代码(比如python或C++等语言)或平台/工具(Ollama等)直接调用本地模型文件,(2)将大模型文件部署到服务端,使用API接口的方式调用,就像我们在网上使用其他平台的对话大模型一样。显然,第二种方式是部署业务更需要的。

2.使用vLLM部署大模型

软件环境:Ubuntu 22.04下进行相应的环境配置和部署,具体看“Ubuntu 本地化部署与微调开源大模型”部分。下面链接:

使用阿里开源大模型通义千问Qwen进行推理-CSDN博客

阿里开源大模型通义千问Qwen进行训练-CSDN博客

安装使用vLLM部署具体过程。

(1)Anaconda下创建一个新的虚拟环境并激活

conda create -n vllm_env python=3.10

conda activate vllm_env

 

      (2)安装vllm包

pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple

 

(3)安装modelscope包

pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple

 

(4)下载训练好的基座大模型文件或者微调后的模型文件

这里以阿里的通义千问qwen2.0模型为例,执行下面代码会自动下载模型文件到本地。

from modelscope import snapshot_download

model_dir = snapshot_download('Qwen/Qwen2-7B-Instruct')

      下载的qwen2模型文件在系统的下面位置,就当前的home目录下,我的用户名是lyp,每个人有所不同。.cache 是隐藏目录,需要ls -A命令可以显示所有文件和目录

/home/lyp/.cache/modelscope/hub/Qwen

为了下面操作方面,比如可以拷贝到自己指定目录:

/home/lyp/qwen2_0/models/Qwen/

 

      (5)启动vLLM大模型在线服务

命令进入大模型文件所在目录,这里在终端输入,注意控制台需要在vllm_env的虚拟环境下操作。

conda activate vllm_env

cd /home/lyp/qwen2_0/models/Qwen/

python -m vllm.entrypoints.openai.api_server --model Qwen2-7B-Instruct

 

注意Qwen2-7B-Instruct是/home/lyp/qwen2_0/models/Qwen/目录下,当前大模型所在目录的名字。所以命令的执行和Qwen2-7B-Instruct目录同一个层级即可。

670476ee3e7a47699d8b2ed4b044aca6.png

2e179d102d734f828f3cf8af031f2e79.png

缺省host的名字是None,port端口号是8000,可以通过参数—host和--port指定名字和端口。

 

(6)使用客户端代码调用在线大模型服务

我的测试,服务端地址:10.26.23.211,笔记本客户端地址:10.28.32.248,在同一个局域网内。测试代码在笔记本电脑位置:D:\lyp\code\llm_lesson\call_vllm,使用vscode+Anaconda编码。客户端python虚拟环境名llm_lesson_env1,版本3.10.14.

需要在虚拟环境下安装,openai包。

 

pip install openai -i

https://pypi.tuna.tsinghua.edu.cn/simple

 

方式1:openai API接口方式直接调用(简单高效)

核心代码讲解:

client = OpenAI(

        base_url = "http://10.26.23.211:8000/v1",

        api_key="EMPTY"

    )

 

    completion = client.chat.completions.create(

        model="Qwen2-7B-Instruct",

        messages=[

            {"role": "system", "content": "你是一个金牌导游。"},

            {"role": "user", "content": "给出宁波旅游攻略"}

        ]

    )

 

    # 也可以直接这样

       messages=[

                {"role": "user", "content": "你是一个金牌导游, 给出宁波旅游攻略"}

            ]

 

   print(completion.choices[0].message.content)

 

部分结果内容展示:

c6c3fdaa1a5b4551a3d98a270b32201e.png

 

方式2:langchain框架进行调用(可以更好进行结构化的处理)

安装langchain包

pip install langchain -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install langchain_openai -i https://pypi.tuna.tsinghua.edu.cn/simple

 

核心代码讲解:

 test_str = "This is a beautiful world Привет, мир очень большой”‌‌"

 #将英文和俄文分离开

 res = test_langchain(test_str)

   #进一步将json字符串解析为字典格式,方面后面操作

 res = json_data_loads(res)

 print(res)

 

def test_langchain(content: str):

structured_output_parser= StructuredOutputParser.from_response_schemas(

        [

            ResponseSchema(name="en", description="请将文本中的英文内容提取出来,并拼接成完整的语句", type="string"),

            ResponseSchema(name="ru", description="请将文本中的俄文内容提取出来,并拼接成完整的语句", type="string")

        ]

    )

 

    # 获取解析器的输入模板

 output_template= structured_output_parser.get_format_instructions()

   

 # 确保PromptTemplate中使用了正确的输出格式指令

    template = """

    你是一个优秀的翻译大师!以下是我给你的文本内容:\n

    {content} \n

    输入的文本中包含英文和俄文,请将两种语言分离出来,并严格按照以下格式输出:{format_instructions}

    """

 prompt = PromptTemplate(template=template, input_variables=["content"], partial_variables={"format_instructions": output_template})

   

client = OpenAI(

        base_url = "http://10.26.23.211:8000/v1",

        api_key="EMPTY"

        )

response = client.chat.completions.create(

        model="Qwen2-7B-Instruct",

        messages=[{"role": "user",

              "content":prompt.format(content=content)}])

 

    response = response.choices[0].message.content

    return response

 

格式化的字典格式输出结果,方便程序的进一步处理。

{'en': 'This is a beautiful world', 'ru': 'Привет, мир очень большой'}

 

机器学习原理与实践
https://www.bilibili.com/cheese/play/ss27274
优质课程,试听课一定听听,100%好评至今。

C++OpenCV计算机视觉入门精通与项目实践
https://www.bilibili.com/cheese/play/ss14962
优质课程,试听课一定听听,100%好评至今。

 

相关推荐

【MCP工具接入实战】用 Streamable HTTP 发布远程 MCP 工具服务

用 Streamable HTTP 发布远程 MCP 工具服务

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 8

【MCP工具接入实战】为 MCP 调用增加日志与请求追踪

为 MCP 调用增加日志与请求追踪

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 7

【MCP工具接入实战】给 MCP 工具增加超时与取消处理

给 MCP 工具增加超时与取消处理

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 18

【MCP工具接入实战】统一MCP工具异常与错误返回

统一MCP工具异常与错误返回

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 8

【MCP工具接入实战】联调文件网页与数据库工具服务

联调文件网页与数据库工具服务

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 48

【MCP工具接入实战】在 MCP 客户端确认数据库写入

在 MCP 客户端确认数据库写入

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 65

【打造能干活的Agent】记录Agent执行日志定位失败步骤

记录Agent执行日志定位失败步骤

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 67

【打造能干活的Agent】防止Agent重复执行产生重复结果

防止Agent重复执行产生重复结果

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 174

【打造能干活的Agent】给Agent工具调用增加超时与重试

给Agent工具调用增加超时与重试

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 149

【打造能干活的Agent】给 Agent 文件写入增加确认步骤

给 Agent 文件写入增加确认步骤

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 484

【Dify自动化实践】合并批量结果并核对遗漏资料

合并批量结果并核对遗漏资料

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 285

【Dify 自动化实践】 用迭代节点批量处理多份资料

用迭代节点批量处理多份资料

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 401

【Dify自动化实战】 用Agent节点按任务选择查询工具

用Agent节点按任务选择查询工具

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 231

【打造能干活的Agent】管理Agent上下文避免任务遗漏

管理Agent上下文避免任务遗漏

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 133

【打造能干活的Agent】让Agent中断后恢复未完成任务

让Agent中断后恢复未完成任务

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 61

【打造能干活的Agent】用 SQLite 持久保存 Agent 执行进度

用 SQLite 持久保存 Agent 执行进度

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 319

【打造能干活的Agent】用 LangGraph 编排多步任务执行流程

用 LangGraph 编排多步任务执行流程

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 155

【打造能干活的Agent】构建带步数上限的Agent执行循环

构建带步数上线的Agent执行循环

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 65

【打造能干活的Agent】让Agent分析CSV并生成统计图

让Agent分析CSV并生成统计图

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 64

【打造能干活的Agent】让Agent根据工具结果回答问题

让Agent根据工具结果回答问题

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 53

【Dify自动化实战】 用HTTP节点接入外部业务数据

用HTTP节点接入外部业务数据

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 154

【MCP工具接入实战】用MCP参数化查询SQLite业务数据

用MCP参数化查询SQLite业务数据

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 142

【Dify自动化实战】用问题分类器分流文档查询请求

用问题分类器分流文档查询请求

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 295

【Dify自动化实战】用条件分支处理不同文档类型

用条件分支处理不同文档类型

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 71

【MCP工具接入实战】用MCP连接现有业务HTTP接口

用MCP连接现有业务HTTP接口

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 208

【MCP工具接入实战】为网页工具保留来源与抓取时间

为网页工具保留来源与抓取时间

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 232

【打造能干活的Agent】让 Agent 读取本地资料并提取要点

让 Agent 读取本地资料并提取要点

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 55

【打造能干活的Agent】用工具描述提高 Agent 调用准确性

用工具描述提高 Agent 调用准确性

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 77

【打造能干活的Agent】把 Python 函数封装成可调用工具

把 Python 函数封装成可调用工具

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 77

【MCP工具接入实战】用MCP提取公开网页正文内容

用MCP提取公开网页正文内容

人工智能(AI)技术,大模型技术,深度学习,机器学习,计算机视觉,AI工具实践应用等分享 153
上一篇: 阿里开源大模型通义千问Qwen进行训练
下一篇: 中国电子学会助力AIGC人才
云博士的AI课堂
云博士的AI课堂 链元维界 链元维界
博客等级 码龄19年 3万+粉丝 2222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值