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
英文地址,請注明出處:http://en.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…