VLLM部署DeepSeek-LLM-7B-Chat 模型

一、部署环境准备

1. 基础环境要求

  • 操作系统:Linux(推荐欧拉系统、Ubuntu 等)
  • Python 版本:3.8 及以上
  • 依赖工具pipgitcurl
  • 可选依赖
    • GPU 环境:NVIDIA GPU(支持 CUDA 11.7+)、nvidia-smi

2. 依赖安装脚本 install_vllm.sh

#!/bin/bash# 创建并激活虚拟环境
python3 -m venv vllm_env
source vllm_env/bin/activate# 安装vLLM及其依赖
pip install vllm fastapi uvicorn huggingface_hub requestsecho "依赖安装完成,请使用以下命令激活环境:"
echo "source vllm_env/bin/activate"

二、模型获取与部署流程

1. 模型下载方法

方法 1:通过huggingface-cli直接下载(推荐)
# 临时设置国内镜像加速(解决网络限制)
export HF_ENDPOINT=https://hf-mirror.com# 下载模型到指定目录
huggingface-cli download --resume-download \deepseek-ai/deepseek-llm-7b-chat \--local-dir /data/VLLM_MODE/deepseek-llm-7b-chat
方法 2:手动下载(网络严格受限场景)
  1. 在可联网机器下载模型:
    # 本地机器执行
    huggingface-cli download --resume-download \deepseek-ai/deepseek-llm-7b-chat \--local-dir ./deepseek-llm-7b-chat
    
  2. 通过scp上传到服务器:
    # 本地机器执行,上传到目标服务器
    scp -r ./deepseek-llm-7b-chat root@服务器IP:/data/storage/data/VLLM_MODE/
    

2. 部署脚本准备(deploy_model.py

# deploy_model.py
import argparse
import os
import torch
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List, Dict, Any
from vllm import LLM, SamplingParamsapp = FastAPI(title="LLM Inference Service")# 全局 LLM 实例
llm = Noneclass InferenceRequest(BaseModel):prompt: strtemperature: float = 0.7max_tokens: int = 1024def main():global llmparser = argparse.ArgumentParser(description='Deploy LLM with vLLM')# 核心参数parser.add_argument('--model', type=str, required=True, help="模型本地路径或Hugging Face仓库ID")parser.add_argument('--port', type=int, default=8000, help="服务端口")parser.add_argument('--host', type=str, default='0.0.0.0', help="绑定主机地址(0.0.0.0允许外部访问)")# 可选参数parser.add_argument('--cache-dir', type=str, default=None, help="模型缓存目录")parser.add_argument('--tensor-parallel-size', type=int, default=1, help="GPU并行数量")parser.add_argument('--gpu-memory-utilization', type=float, default=0.9, help="GPU内存利用率(0.0-1.0)")parser.add_argument('--max-model-len', type=int, default=4096, help="模型最大序列长度")parser.add_argument('--use-cpu', action='store_true', help="强制使用CPU运行")parser.add_argument('--quantization', type=str, default=None, help="量化方式(如awq、gptq-4bit)")args = parser.parse_args()# 设置GPUif args.gpu:os.environ["CUDA_VISIBLE_DEVICES"] = args.gpuprint(f"Using GPUs: {args.gpu}")# 设置设备if args.use_cpu:device = "cpu"kwargs = {"dtype": torch.float32,  # CPU不支持半精度}print("Running model on CPU")else:device = "cuda"kwargs = {}print(f"Running model on GPU with {args.tensor_parallel_size} devices")# 初始化LLMllm = LLM(model=args.model,tensor_parallel_size=args.tensor_parallel_size,trust_remote_code=args.trust_remote_code,download_dir=args.cache_dir,  # 指定模型下载路径**kwargs)# 启动API服务print(f"Model {args.model} loaded. Serving on port {args.port}")import uvicornuvicorn.run(app, host="0.0.0.0", port=args.port)@app.post("/generate")
async def generate(request: InferenceRequest):try:sampling_params = SamplingParams(temperature=request.temperature,max_tokens=request.max_tokens,)outputs = llm.generate(request.prompt,sampling_params,)return {"prompt": request.prompt,"generated_text": outputs[0].outputs[0].text,}except Exception as e:raise HTTPException(status_code=500, detail=str(e))if __name__ == "__main__":main()

3. 启动服务命令

python deploy_model.py \--model /VLLM_MODE/deepseek-llm-7b-chat \--cache-dir /VLLM_MODE \--port 8000 \

 启动脚本:run deepseek-llm-7b-chat 脚本 可下载多个模型运行 只需修改端口和GPU(GPU内容有限)

#!/bin/bash# 激活虚拟环境cd /vllm_env上级目录
source vllm_env/bin/activate# 启动API服务器
python deploy_model.py \--model /VLLM_MODE/deepseek-llm-7b-chat \--cache-dir /VLLM_MODE \--port 8000 \

三、常见问题与解决方案

1. 网络连接问题

错误表现
  • 提示 “Failed to establish a new connection: Network is unreachable”
  • 模型下载停滞或无法克隆 GitHub 仓库
解决方案
  • 使用国内镜像

    bash

    # 永久设置Hugging Face镜像(欧拉系统)
    echo 'export HF_ENDPOINT=https://hf-mirror.com' >> ~/.bashrc
    source ~/.bashrc  # 立即生效
    
  • GitHub 仓库镜像克隆

    bash

    git clone https://gitclone.com/github.com/deepseek-ai/DeepSeek-VL
    
  • 检查防火墙

    bash

    # 开放8000端口(允许外部访问服务)
    firewall-cmd --add-port=8000/tcp --permanent
    firewall-cmd --reload
    

2. 模型下载相关问题

问题 1:模型未出现在指定目录
  • 原因huggingface_hub默认将模型移动到~/.cache/huggingface/hub
  • 解决:使用local_dir参数强制指定路径(见 “模型下载方法 1”)
问题 2:下载中断或文件损坏
  • 解决:使用--resume-download断点续传:

    bash

    huggingface-cli download --resume-download \deepseek-ai/deepseek-llm-7b-chat \--local-dir /data/storage/data/VLLM_MODE/deepseek-llm-7b-chat
    

3. GPU 相关错误

错误 1:CUDA 内存不足(CUDA out of memory)
  • 表现:日志出现 “torch.OutOfMemoryError: CUDA out of memory”
  • 解决

    bash

    # 1. 释放占用GPU的进程
    nvidia-smi  # 查看进程ID(PID)
    kill -9 <PID>  # 终止占用进程# 2. 降低内存占用(可选)
    python deploy_model.py ... \--quantization awq \  # 使用量化--gpu-memory-utilization 0.95  # 提高内存利用率
    
错误 2:KV 缓存容量不足
  • 表现:提示 “The model's max seq len is larger than KV cache”
  • 解决

    bash

    # 方法1:增加KV缓存容量
    python deploy_model.py ... --gpu-memory-utilization 0.95# 方法2:降低最大序列长度
    python deploy_model.py ... --max-model-len 1952
    

4. 服务启动问题

问题 1:端口未启动或无法访问
  • 原因:端口被占用、未指定--host 0.0.0.0或防火墙拦截
  • 解决

    bash

    # 检查端口占用
    netstat -tulpn | grep 8000# 更换端口或终止占用进程
    python deploy_model.py ... --port 8001
    
问题 2:参数不识别(如 --host)
  • 原因:脚本未定义该参数
  • 解决:在deploy_model.pyargparse部分添加参数(见脚本示例)

5. CPU 运行配置

  • 适用场景:无 GPU 或 GPU 内存不足
  • 启动命令

    bash

    python deploy_model.py \--model /data/storage/data/VLLM_MODE/deepseek-llm-7b-chat \--port 8000 \--use-cpu
    
  • 注意:7B 模型需 32GB 以上内存,生成速度较慢

四、服务验证与测试

  1. 检查服务状态

    bash

    netstat -tulpn | grep 8000  # 确认端口监听
    
  2. 发送测试请求

    bash

    curl -X POST "http://localhost:8000/generate" \-H "Content-Type: application/json" \-d '{"prompt": "你好,请介绍一下自己", "temperature": 0.7, "max_tokens": 200}'
    
  3. 预期响应

    json

    {"prompt": "你好,请介绍一下自己","generated_text": "我是DeepSeek-LLM-7B-Chat,是一款由深度求索(DeepSeek)开发的对话模型..."
    }
    

五、扩展说明

  • 模型存储路径:建议将模型统一存储在/data/storage/data/VLLM_MODE等大容量目录
  • 多模型部署:不同模型使用不同端口(如 8000、8001)避免冲突
  • 性能优化:GPU 环境下优先使用量化(AWQ/INT4)和合理设置gpu-memory-utilization
  • 日志排查:启动时添加--log-level debug查看详细日志,便于定位问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88402.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

翱翔的智慧之翼:Deepoc具身智能如何赋能巡检无人机“读懂”工业现场

翱翔的智慧之翼&#xff1a;Deepoc具身智能如何赋能巡检无人机“读懂”工业现场在百米高的风力发电机叶片顶端&#xff0c;在蜿蜒数十公里的高压输电线旁&#xff0c;在油气管道穿越的崇山峻岭之上&#xff0c;一架四旋翼无人机正精准地悬停着&#xff0c;它的“眼睛”&#xf…

Java大厂面试实录:谢飞机的电商场景技术问答(Spring Cloud、MyBatis、Redis、Kafka、AI等)

Java大厂面试实录&#xff1a;谢飞机的电商场景技术问答&#xff08;Spring Cloud、MyBatis、Redis、Kafka、AI等&#xff09;本文模拟知名互联网大厂Java后端岗位面试流程&#xff0c;以电商业务为主线&#xff0c;由严肃面试官与“水货”程序员谢飞机展开有趣的对话&#xff…

Kotlin基础

前言 Decrement&#xff08;递减&#xff09; → 将一个值减 1 的操作 Predicate&#xff08;谓词&#xff09; → 返回布尔值&#xff08;逻辑值&#xff09;的函数 Reference&#xff08;引用&#xff09; → 允许使用自定义名称与对象交互 Runtime&#xff08;运行时&…

预防DNS 解析器安全威胁

DNS 是互联网的重要基础&#xff0c;例如 Web 访问、email 服务在内的众多网络服务都和 DNS 息息相关&#xff0c;DNS 的安全则直接关系到整个互联网应用能否正常使用。 DNS 解析器的作用是将用户输入的域名转换为对应的 IP 地址&#xff0c;以便计算机能够准确地定位并连接到…

Windows下VScode配置FFmpeg开发环境保姆级教程

相关准备 提前在本地开发环境中配置好mingw64或者msys2开发工具集。 安装VScode软件。 下载Windows版本的FFmpeg相关库 下载地址&#xff1a;https://ffmpeg.org/download.html 下载步骤&#xff1a;如下图。 下载后的文件&#xff1a;包含了可执行文件ffmpeg、ffpl…

Lecture #19 : Multi-Version Concurrency Control

CMU15445课程笔记多版本并发控制 多版本并发控制讲的是Mvcc。 即维护单个逻辑对象的多个物理版本&#xff0c; 这样当一个事务读取某个对象的时候不会阻塞其他事务写入该对象&#xff1b; 反之亦然。 但是Mvcc不保护写写冲突&#xff0c; 对于这种情况&#xff0c; 可能需要其两…

imx6ul Qt运行qml报错This plugin does not support createPlatformOpenGLContext!

imx6ul运行qml的Qt程序报错This plugin does not support createPlatformOpenGLContext!1、开发环境2、问题复现3、解决办法第一种方法第二种方法4、结论1、开发环境 主板&#xff1a;imx6ul Qt版本&#xff1a;5.9.6 文件系统&#xff1a;buildroot 问题描述&#xff1a;现需…

软考中项系统集成第 5 章:软件工程全流程考点拆解,备考逻辑清晰

备考系统集成项目管理工程师的小伙伴们&#xff0c;福利来啦&#xff01;今天开始为大家带来《系统集成项目管理工程师&#xff08;第 3 版&#xff09;》考点的思维导图&#xff0c;今天带来的是第5章。第 5 章聚焦软件工程&#xff0c;涵盖软件工程定义、软件需求、软件设计、…

ICLR 2025 | InterpGN:时间序列分类的透明革命,Shapelet+DNN双引擎驱动!

在Rensselaer理工学院、Stony Brook大学与IBM Research的合作下&#xff0c;本文聚焦于如何在时间序列分类任务中兼顾性能与可解释性。传统深度学习模型虽然准确率高&#xff0c;却常被诟病为“黑盒”&#xff0c;难以赢得如医疗等高风险领域的信任。为此&#xff0c;作者提出了…

使用ENO将您的JSON对象生成HTML显示

ENO 是简单易用&#xff0c;性能卓越&#xff0c;自由灵活开源的 WEB 前端组件&#xff1b;实现 JSON 与 HTML 互操作的 JavaScript 函数库。没有任何其它依赖&#xff0c;足够轻量。 WEBPack NPM 工程安装。 npm install joyzl/eno 然后在JS中引用 import "joyzl/eno…

7.12 卷积 | 最小生成树 prim

lc1900.模拟比赛算出两个指定选手最早和最晚能在第几轮碰到。还是建议dfs捏模拟比赛&#xff0c;找出两个特定选手&#xff08;firstPlayer和secondPlayer&#xff09;最早和最晚相遇的轮次。1. 定义了一个“选手”结构体&#xff0c;包含两个属性a&#xff08;战斗力&#xff…

LVS-NAT模式配置

目录 1、负载调度器配置 配置IP地址 安装ipvsadm 开启路由转发功能 加载ip_vs模块 启动ipvsadm服务 配置负载分配策略 查看验证 2、web节点配置 3、测试 1、负载调度器配置 配置IP地址 增加一块网卡 cd /etc/sysconfig/network-scripts/ cp ifcfg-ens192 ifcfg-ens…

中国银联豪掷1亿采购海光C86架构服务器

近日&#xff0c;中国银联国产服务器采购大单正式敲定&#xff0c;基于海光C86架构的服务器产品中标&#xff0c;项目金额超过1亿元。接下来&#xff0c;C86服务器将用于支撑中国银联的虚拟化、大数据、人工智能、研发测试等技术场景&#xff0c;进一步提升其业务处理能力、用户…

web网页,在线%食谱推荐系统%分析系统demo,基于vscode,uniapp,vue,java,jdk,springboot,mysql数据库

经验心得两业务单,项目前端在VSCode、HBuilder环境下整合Uniapp、Vue。后端使用Java、SpringBoot和MySQL&#xff0c;使用这些技术栈咱们就可以搭建在线食谱推荐与分析功能的系统&#xff0c;技术栈虽涉及前后端及数据库跨度不小&#xff0c;但咱们拆分模块去开发它难度就会变小…

MCP架构:AI时代的标准化上下文交互协议

本文深入解析Model Context Protocol&#xff08;MCP&#xff09;架构的创新设计&#xff0c;这是一种由Anthropic提出的标准化协议&#xff0c;旨在解决大型语言模型&#xff08;LLM&#xff09;与外部工具和数据源交互的碎片化问题。MCP采用客户端-服务器架构&#xff0c;通过…

机器学习数据集加载全攻略:从本地到网络

目录 一、加载内置数据集 1.1 Iris鸢尾花数据集 1.2 其他常用内置数据集 二、加载网络数据集 2.1 20 Newsgroups数据集 三、加载本地数据集 3.1 使用pandas加载CSV文件 3.2 处理常见问题 四、数据加载最佳实践 五、总结 在机器学习项目中&#xff0c;数据的加载是第一…

【操作系统】进程(二)内存管理、通信

JavaEE—进程(二)内存管理、通信 一、内存管理 1.映射访问 2.独立分布 防崩溃 二、通信 1.独立性保障 2.方式 2.1管道 2.1.2特点 2.1.2.1进程条件 2.1.2.2方向 2.1.2.3同步性 2.1.2.4性能 2.2消息队列 2.2.1特点 2.2.1.1方向 2.2.1.2同步性 2.2.1.3性能 2.3…

windows 装了 python2 和 python3 如何切换默认版本

现在执行 python --version 是Python 3.11.3怎么让 python 默认是 python2&#xff0c;而 python3 --version 是执行 pyhon3 呢cmd 执行 where pythonC:\Users\huyun\AppData\Local\Programs\Python\Python311-32\python.exe C:\Users\huyun\AppData\Local\Microsoft\WindowsAp…

二次封装element ui pagination组件

vue2中二次封装element ui pagination组件 html部分 <template><div class"table-pagination"><el-pagination:current-page.sync"currentPage":page-sizes"pageSizes":page-size"pageSize":layout"paginationLay…

SAP学习笔记 - 开发39 - RAP开发 BTP /DMO 官方既存测试数据的使用

上一章讲了 RAP开发流程的具体步骤&#xff0c;建表 》建Data Model View 》建 Projection View 》建Service Definition 》 建Service Binding 》Publish 服务。 SAP学习笔记 - 开发37 - RAP开发流程的具体步骤&#xff0c; 建表&#xff0c;Data Model View&#xff0c;Proj…