本地部署大模型

声明:我是引用的 付费文章,文章搬过来只是为了自己学习方便,不用每次输入验证口令。如果侵权,第一时间删除。 原文链接:gxlbvdk4ilp.feishu.cn/wiki/Ye0bwg...

本文讨论了2025年初一意内部评估通过的VLM技术在财务审计项目中的应用,以及如何在本地部署高并发、服务化的推理模型,包括大语言模型和多模态模型。关键要点包括:​

  1. VLM技术优势:在财务审计项目中,准确结果达95%以上,源于OCR技术沉淀,微调用于数据识别处理任务,成本骤降。​

  2. 课程目的与定位:呈现一意当时接入数据处理范式的过程,定位"生产",聚焦应用,不深入算法。​

  3. 推理框架选择:用vLLM推理大语言模型,SGLang推理多模态模型,也可用纯API方案(无足够算力时)。​

  4. 推理过程:先推1个LLM + 1个VLM,VLM负责非结构化数据识别、提取,LLM负责结构化处理或入库,推理后成为本地openai API。​

  5. 安装与推理:分别创建conda环境,安装依赖,按指令推理大模型和多模态模型,介绍推理参数作用。​

  6. 算力计算:给出计算模型使用显存的公式,以SGLang推理olmOCR-7B-0225-preview为例说明。​

  7. 实践代码汇总:汇总推理大模型和多模态模型的指令,方便逐步操作。

前言

VLM是在2025年初,通过一意内部评估,加入达到生产要求清单的

一意发现,在财务审计项目中,准确结果达到95%以上,源于OC·R技术多年的技术、数据沉淀,原本VLM微调用于数据识别处理任务,成本骤降,也是2025年,一意认为最值得跟进的技术领域;

课程目的,就是把大家,拉到2025年初,把一意当时接入数据处理范式的过程,呈现出来;

课程定位"生产",实现如何在自己的设备上推理,目前市面上主流推理模型框架有很多,篇幅有限,一意会聚焦应用,不会深入算法,如果你是算法工程师,建议你深入到这些推理框架中,可以帮助你拥有更多方法,接入生产

本次,选择用vLLM、SGLang推理models集群,后面我们要围绕他,做生产应用;

推理分布是这样的

vLLM:推理大语言模型(LLM)

SGLang:推理多模态模型(VLM)

SGLang对于多模态模型来说,拥有更多支持,vLLM则在大模型管理方面,更加合适;

当然,你也可以使用纯API方案实现(对于没有足够算力的朋友),如果你准备使用纯API方案,你就不需要在本地推理模型了,跳过本课;


一、推理过程

生产环境,计算资源非常珍贵,models,不太可能仅为一个任务而推理

我们要想,如何充分压榨硬件的计算资源,达到均衡的吞吐与延迟

比较通用的集群结构是这样的:

序号 模型类型 英文 功能 场景
1 大语言模型 LLM 文本生成、问答、翻译等 自然语言处理、对话系统、内容生成
2 多模态模型 VLM 图文理解、视觉问答、跨模态检索等 图文分析、内容创作、智能推荐
3 向量模型 Embedding 文本/图像向量化表示 搜索引擎、推荐系统、相似度计算
4 重排模型 Reranker 结果排序优化、提升检索相关性 搜索引擎、推荐系统、信息检索

每一个应用,背后都是一个大模型集群,看任务,可能还会有更多的专用模型,LLM是每个应用的基础,本次应用目的,就是讲VLM如何接入生产?与当下LLM组合成更强大系统的;

这是一个models的集群,是单独模块化设计的,同时,也是应用的基础!

我们会先推1个LLM+1个VLM,稍后跟着推理起来,之后分工是:

VLM-->负责非结构化数据的识别、提取

LLM-->负责承接VLM提取出来的数据,将它结构化处理或入库

以上两个模型,推理起来后,是一个本地的openai API,任何的应用,都可以接入!

1.1 推理大模型

这个过程,我们在会员圈里都发过很多资料,目前用得比较广的是:vLLM,生产场景,也推荐用它;

注意,这里我们聚焦应用,不会深入算法,如果你是算法工程师,你一定要深入去研究vLLM;

本地部署以及推理模型

在我们之前部署好的基本环境之后,就可以正式部署推理框架

先看conda版本,确保环境正常使用

css 复制代码
conda --version

创建conda环境

下方指令,Vllm是命名,可以输入自己想好的命名,注意,1个model,1个环境,便于管理,避免依赖冲突

ini 复制代码
conda create -n Vllm python==3.10

出现Proceed我们输入Y ,让他继续安装

命令行出现上面,代表成功安装

激活环境!

复制代码
conda activate Vllm

安装依赖!

我们用的是12.4的cuda,这里我们直接安装vLLM最新版

注意,如果是11.8的话,要根据vllm文档方法编译;

这里将到清华源下载,避免部分朋友无法翻墙;

arduino 复制代码
pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple

推理大模型!

运行下方指令,就可以推理了!

每个人环境不同,稍后把下方参数展开,你也可以根据自己的算力,推理起来

scss 复制代码
CUDA_VISIBLE_DEVICES=0 vllm serve /media/ubu/文档/大模型/qwen-2.5-14B-GPTQ-int8 \
    --served-model-name qwen-2.5-14B-GPTQ-int8 \
    --dtype auto \
    --port 8001 \
    --max-model-len 4096 \
    --gpu-memory-utilization 0.9
bash 复制代码
#新开一个终端,测试模型端口
curl http://0.0.0.0:8003/v1/models

讲讲推理参数!

我们演示的设备是有多张卡的,举例:

假设你的机器有 4 张 GPU,编号为 0, 1, 2, 3,你希望使用第二张卡(即编号为 1 的 GPU)进行推理

scss 复制代码
CUDA_VISIBLE_DEVICES=0 vllm serve /media/ubu/文档/大模型/qwen-2.5-14B-GPTQ-int8 \
    --served-model-name Qwen2.5-14B-Instruct-GPTQ-Int8 \
    --dtype auto \
    --port 8001 \
    --max-model-len 4096 \
    --gpu-memory-utilization 0.9

各部分作用:

  1. CUDA_VISIBLE_DEVICES=0

    1. 这个环境变量限制只能用编号为 0 的 GPU,如果需要多张卡,就将它填上去,0, 1这是两张卡
  2. vllm serve

    1. 使用 vLLM 提供的服务模式启动模型推理服务
  3. /root/model/Qwen2.5-14B-Instruct-GPTQ-Int8

    1. 指定模型的绝对路径,这里是 Qwen2.5-14B-Instruct-GPTQ-Int8 模型
  4. --served-model-name Qwen2.5-14B-Instruct-GPTQ-Int8

    1. 指定对外暴露的服务名称,客户端可以通过这个名称访问模型,这个名称不能错,否则程序找不到
  5. --dtype auto

    1. 自动选择模型的数据类型(例如 float16bfloat16),以优化推理性能
  6. --port 8001

    1. 指定服务监听的端口号为 8001,不能冲突,因为是模型集群,每个模型都要指定端口
  7. --max-model-len 4096

    1. 设置模型支持的最大上下文长度为 4096,长度越长,需要的显存资源就越多
  8. --gpu-memory-utilization 0.9

    1. 设置 GPU 显存利用率上限为 90%,防止显存溢出,不管多大模型,只要是指定了这个参数,就会使用90%显存

更多的参数,到这里看:

docs.vllm.com.cn/en/latest/s...

1.2 推理多模态模型

优势:

RadixAttention 优化:通过共享前缀请求和高效缓存策略,SGLang 能在理论上实现十万级 token/s 的超高吞吐量,同时显著降低响应延迟。

高效结构化输出:内置高性能 JSON 解析模块,便于构建面向结构化数据查询的 API 服务,适合复杂自动化工作流。

轻量模块化架构:采用灵活的模块化设计,便于快速集成新技术(如 FlashInfer 内核),不断优化推理效率。

安装的过程也非常简单

先创建每一个新的conda环境,以免依赖冲突

创建conda环境并激活!

ini 复制代码
#虚拟环境安装方式与上面安装VLLM方式一样
conda create -n SGLANG python==3.10
conda activate SGLANG
pip install --upgrade pip

安装sglang!

arduino 复制代码
pip install uv
uv pip install "sglang[all]>=0.4.5.post3"

推理大模型!

css 复制代码
#SGLANG启动指令 --model-path 是模型所在路径 --port是端口号
CUDA_VISIBLE_DEVICES=1
python -m sglang.launch_server \
    --model-path /media/ubu/文档/大模型/olmOCR-7B-0225-preview \
    --port 30000
    --chat-template=qwen2-vl

可以新开一个终端发送验证请求

bash 复制代码
curl http://127.0.0.1:30000/v1/models

讲讲推理参数!

ini 复制代码
CUDA_VISIBLE_DEVICES=1
python -m sglang.launch_server \
    --model-path /media/ubu/文档/大模型/olmOCR-7B-0225-preview \
    --port 30000
    --chat-template=qwen2-vl

各部分作用:

  1. CUDA_VISIBLE_DEVICES=1

    1. 设置环境变量,告诉程序只使用编号为 1 的 GPU
    2. 在程序中,这张 GPU 会被映射为逻辑上的 GPU 0
  2. python -m sglang.launch_server

    1. 启动 sglang 的服务模块
  3. --model-path /home/ubu/jun/olmOCR-7B-0225-preview

    1. 指定模型绝对路径
  4. --port 30000

    1. 指定服务监听的端口号为 30000
  5. --chat-template=qwen2-vl

    1. 使用 Qwen2-VL 的视觉聊天模板,必需参数以支持图像输入

更多参数,看这里:

docs.sglang.ai/backend/ser...


二、需要多少算力

在群里,大家经常会问,自己的显卡中的显存够不够跑模型。这次课程教给大家一个计算模型使用显存的简单公式。

字母 含义
M GPU 内存
P 模型中的参数数量。例如,一个 7B 模型有 7 亿参数。
4B 4 字节,即每个参数使用的字节数
32 4 字节中有 32 位
Q 加载模型时应使用的位数,例如 16 位、8 位或 4 位。比如FP16、INT8、INT4
1.2-1.4 表示在 GPU 内存中加载额外内容的 20%-40% 开销

就拿我们用SGLang推理olmOCR-7B-0225-preview为例。

olmOCR-7B-0225-preview是基于qwen2进行微调得到的模型,qwen2使用的是FP16精度。所以我们得到:

该模型的参数为

P 7B
Q 16

根据公式可以得到大概占用显存16.8-19.6之间


三、实践代码逐步合集

将指令汇总一下,你按照步骤,一步步粘贴复制,就能推理了

ini 复制代码
第一部分:推理大模型指令合集
# 创建conda环境
conda create -n Vllm python==3.10

# 激活环境
conda activate Vllm

# 安装vllm,指定清华源
pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple

# 推理模型,下方全部复制
CUDA_VISIBLE_DEVICES=0 vllm serve /root/model/Qwen2.5-14B-Instruct-GPTQ-Int8 \
    --served-model-name Qwen2.5-14B-Instruct-GPTQ-Int8 \
    --dtype auto \
    --port 8001 \
    --max-model-len 4096 \
    --gpu-memory-utilization 0.9



第二部分:推理多模态指令合集
# 创建conda环境
conda create -n SGLANG python==3.10

# 激活环境
conda activate SGLANG

# 升级pip
pip install --upgrade pip

pip install uv
uv pip install "sglang[all]>=0.4.5.post3"

# 推理模型
CUDA_VISIBLE_DEVICES=1
python -m sglang.launch_server \
    --model-path /media/ubu/文档/大模型/olmOCR-7B-0225-preview \
    --port 30000
相关推荐
一颗橘子宣布成为星球9 分钟前
Unity AI-使用Ollama本地大语言模型运行框架运行本地Deepseek等模型实现聊天对话(一)
人工智能·unity·语言模型·游戏引擎
南 阳27 分钟前
从微服务到AI服务:Nacos 3.0如何重构下一代动态治理体系?
人工智能·微服务·云原生·重构
fmingzh38 分钟前
NVIDIA高级辅助驾驶安全与技术读后感
人工智能·安全·自动驾驶
qsmyhsgcs1 小时前
Java程序员转人工智能入门学习路线图(2025版)
java·人工智能·学习·机器学习·算法工程师·人工智能入门·ai算法工程师
A林玖1 小时前
【机器学习】朴素贝叶斯
人工智能·算法·机器学习
六边形战士DONK1 小时前
神经网络基础[损失函数,bp算法,梯度下降算法 ]
人工智能·神经网络·算法
IT从业者张某某2 小时前
机器学习-08-时序数据分析预测
人工智能·机器学习·数据分析
袁煦丞2 小时前
AI视频生成神器Wan 2.1:cpolar内网穿透实验室第596个成功挑战
人工智能·程序员·远程工作
xMathematics2 小时前
深度学习与SLAM特征提取融合:技术突破与应用前景
人工智能·深度学习
墨顿2 小时前
Transformer数学推导——Q29 推导语音识别中流式注意力(Streaming Attention)的延迟约束优化
人工智能·深度学习·transformer·注意力机制·跨模态与多模态