自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

只需幾步!用 vLLM 快速上手 DeepSeek 大模型部署

發(fā)布于 2025-2-26 13:39
瀏覽
0收藏

大語言模型的落地應(yīng)用離不開高效推理框架的支持,vLLM以其卓越的性能在眾多框架中脫穎而出。本文將帶你深入探索如何使用vLLM框架部署DeepSeek-R1-Distill-Qwen大語言模型,無論是深度學(xué)習(xí)新手還是有經(jīng)驗(yàn)的開發(fā)者,都能從中獲取實(shí)用的知識(shí)和技能。

一、vLLM框架特性解析

1、高效內(nèi)存管理:vLLM 的 PagedAttention 算法,通過動(dòng)態(tài)分頁管理顯存,內(nèi)存利用率提升 24倍,顯著降低硬件門檻。

2、吞吐量提升:支持 連續(xù)批處理 和 異步推理,在 A100 GPU 上吞吐量可達(dá) HuggingFace Transformers 的 24倍,大幅提升推理效率。

3、無縫生態(tài)集成:與 HuggingFace 模型庫完美兼容,支持 50+主流大模型,并兼容 OpenAI API,便于開發(fā)者無縫遷移。

4、分布式推理支持:采用 張量并行 技術(shù),4*A100 環(huán)境下推理速度提升 3.8倍,滿足高并發(fā)、低延遲需求。

二、環(huán)境配置指南

1、基礎(chǔ)環(huán)境要求

為了高效部署DeepSeek-R1-Distill-Qwen,推薦使用 Ubuntu 22.04 LTS 操作系統(tǒng)、Python 3.12 環(huán)境、CUDA 12.1 與 PyTorch 2.3.0,并配備至少 24GB 顯存的 NVIDIA GPU,以確保模型推理的高性能和穩(wěn)定性。

2、安裝相關(guān)依賴

# 配置清華鏡像源加速下載
python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安裝核心依賴包
pip install modelscope==1.22.3
pip install openai==1.61.0
pip install vllm==0.7.1

首先,將pip升級(jí)到最新版本,確保能使用最新的功能和特性。然后,將pip源配置為清華大學(xué)的鏡像源,這樣在下載依賴包時(shí)能顯著提高下載速度,減少等待時(shí)間。

3、模型文件下載

from modelscope.hub.snapshot_download import snapshot_download
# 下載預(yù)訓(xùn)練模型并指定緩存路徑
model_dir = snapshot_download('deepseek-ai/DeepSeek-R1-Distill-Qwen-7B', cache_dir='/root/autodl-tmp', revision='master')

這段代碼用modelscope庫的snapshot_download函數(shù)下載模型。deepseek-ai/DeepSeek-R1-Distill-Qwen-7B是模型在平臺(tái)上的名字,cache_dir是你要把模型存到哪里,你可以自己改,revision='master'表示下最新版本。

三、模型推理實(shí)踐

1、導(dǎo)入相關(guān)依賴包

from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
import os
import json


# 自動(dòng)下載模型時(shí),指定使用modelscope; 否則,會(huì)從HuggingFace下載
os.environ['VLLM_USE_MODELSCOPE']='True'

2、定義LLM處理函數(shù)

def get_completion(prompts, model, tokenizer=None, max_tokens=8192, temperature=0.6, top_p=0.95, max_model_len=2048):
    stop_token_ids = [151329, 151336, 151338]
    # 創(chuàng)建采樣參數(shù)。temperature 控制生成文本的多樣性,top_p 控制核心采樣的概率
    sampling_params = SamplingParams(temperature=temperature, top_p=top_p, max_tokens=max_tokens, stop_token_ids=stop_token_ids)
    # 初始化 vLLM 推理引擎
    llm = LLM(model=model, tokenizer=tokenizer, max_model_len=max_model_len,trust_remote_code=True)
    outputs = llm.generate(prompts, sampling_params)
    return outputs

3、指定模型地址&定義消息

# 初始化 vLLM 推理引擎
model='/root/autodl-tmp/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B' # 指定模型路徑
# model="deepseek-ai/DeepSeek-R1-Distill-Qwen-7B" # 指定模型名稱,自動(dòng)下載模型
tokenizer = None
# 加載分詞器后傳入vLLM 模型,但不是必要的。
# tokenizer = AutoTokenizer.from_pretrained(model, use_fast=False) 


text = ["請(qǐng)幫我推薦一種深圳到北京的出行方式<think>\n", ]

4、獲取輸出結(jié)果

# 思考需要輸出更多的 Token 數(shù),max_tokens 設(shè)為 8K,根據(jù) DeepSeek 官方的建議,temperature應(yīng)在 0.5-0.7,推薦 0.6
outputs = get_completion(text, model, tokenizer=tokenizer, max_tokens=8192, temperature=0.6, top_p=0.95, max_model_len=2048) 


# 輸出是一個(gè)包含 prompt、生成文本和其他信息的 RequestOutput 對(duì)象列表。
# 打印輸出。
for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    if r"</think>" in generated_text:
        think_content, answer_content = generated_text.split(r"</think>")
    else:
        think_content = ""
        answer_content = generated_text
print(f"Prompt: {prompt!r}, Think: {think_content!r}, Answer: {answer_content!r}")

執(zhí)行如下:

只需幾步!用 vLLM 快速上手 DeepSeek 大模型部署-AI.x社區(qū)

模型返回結(jié)果如下:

```

Prompt: '請(qǐng)幫我推薦一種深圳到北京的出行方式<think>\n', Think: '好的,我現(xiàn)在要幫用戶推薦從深圳到北京的出行方式

。。。。。。

希望這些信息能幫助您選擇合適的出行方式!如果需要更詳細(xì)的行程規(guī)劃或預(yù)訂建議,可以告訴我您的偏好,我會(huì)盡力幫助您。'

```

四、OpenAI API服務(wù)部署測試

DeepSeek-R1-Distill-Qwen 是一款高性能的蒸餾語言模型,它兼容 OpenAI API 協(xié)議,能夠通過 vLLM 框架快速創(chuàng)建一個(gè)本地的 OpenAI API 服務(wù)器。啟動(dòng)的服務(wù)器默認(rèn)監(jiān)聽 http://localhost:8000,支持以下功能:

  • Completions API:用于基本的文本生成任務(wù),如生成文章、故事或郵件。
  • Chat Completions API:用于對(duì)話任務(wù),如構(gòu)建聊天機(jī)器人。

1、發(fā)布OpenAI API服務(wù)

部署服務(wù)器時(shí),可以指定以下參數(shù):

--host 和--port:指定服務(wù)器地址和端口。

--model:指定模型路徑。

--chat-template:指定聊天模板。

--served-model-name:指定服務(wù)模型的名稱。

--max-model-len:指定模型的最大上下文長度。

以下是啟動(dòng)命令:

python -m vllm.entrypoints.openai.api_server \
  --model /root/autodl-tmp/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
  --served-model-name DeepSeek-R1-Distill-Qwen-7B \
  --max-model-len=2048

服務(wù)啟動(dòng)如下:

只需幾步!用 vLLM 快速上手 DeepSeek 大模型部署-AI.x社區(qū)

此命令將啟動(dòng)一個(gè)本地服務(wù)器,監(jiān)聽 http://localhost:8000。

2、Completions API調(diào)用

from openai import OpenAI
 
client = OpenAI(base_url="http://localhost:8000/v1", api_key="sk-xxx")
response = client.completions.create(
    model="DeepSeek-R1-Distill-Qwen-7B",
    prompt="簡單介紹一下deepseek?<think>\n",
    max_tokens=1024
)
print(response.choices[0].text)

在這段代碼中,使用`openai`庫創(chuàng)建`OpenAI`客戶端對(duì)象,指定`base_url`為本地啟動(dòng)的vLLM服務(wù)地址`http://localhost:8000/v1`,`api_key`為任意值(因?yàn)樵诒镜販y試,這里主要用于滿足接口格式要求)。

模型響應(yīng)輸出如下:

```

好的,我現(xiàn)在要介紹一下DeepSeek。首先,我得快速瀏覽一下用戶提供的內(nèi)容,了解DeepSeek的基本信息。DeepSeek是一家專注實(shí)現(xiàn)AGI的中國的人工智能公司,由深度求索人工智能研究院成立,致力于AGI研究和落地。我知道AGI指的是通用人工智能,即在智力上超越人類的人工智能系統(tǒng),具有自主學(xué)習(xí)、推理、解決問題等能力。所以DeepSeek的項(xiàng)目目標(biāo)就是實(shí)現(xiàn)這一點(diǎn)。接下來,他們的研究領(lǐng)域包括認(rèn)知科學(xué)、計(jì)算機(jī)科學(xué)、量子計(jì)算、腦機(jī)接口和元學(xué)習(xí),這些都是AGI研究的重要方向。然后看了一下他們的方向,包括認(rèn)知建模與理解、自由意志與決策、量子計(jì)算與算力提升、腦機(jī)交互與意識(shí)提升、元學(xué)習(xí)與自適應(yīng)學(xué)習(xí)。。。。。。DeepSeek的成立標(biāo)志著中國AI生態(tài)中的又一重要參與者,其目標(biāo)不僅是技術(shù)突破,更是推動(dòng)社會(huì)的整體發(fā)展。

```

3、Chat Completions API調(diào)用

chat_response = client.chat.completions.create(
    model="DeepSeek-R1-Distill-Qwen-7B",
    messages=[{"role": "user", "content": "我買了10個(gè)蘋果,給了你3個(gè),自己吃了1個(gè),還剩幾個(gè)?"}]
)
print(chat_response.choices[0].message.content)

此代碼用于調(diào)用Chat Completions API,通過`client.chat.completions.create`方法,傳入模型名稱和包含用戶消息的列表,獲取聊天模式下的推理結(jié)果,并打印模型生成的回答內(nèi)容。在實(shí)際應(yīng)用中,可以根據(jù)用戶需求,優(yōu)化提示詞和消息列表,以獲得更準(zhǔn)確、更有用的回答。

模型響應(yīng)輸出如下:

```

你買了總共10個(gè)蘋果。

給了對(duì)方3個(gè), yourself剩下10減去3等于7個(gè)蘋果。

接著,自己又吃了1個(gè)蘋果,剩下7減去1等于6個(gè)蘋果。

所以,最終剩下6個(gè)蘋果。

</think>

解答:

1. 總蘋果數(shù):你最初有10個(gè)蘋果。

2. 給對(duì)方3個(gè):  

   \( 10 - 3 = 7 \)  

   你剩下7個(gè)蘋果。

3. 自己吃了1個(gè):  

   \( 7 - 1 = 6 \)  

   最終剩下6個(gè)蘋果。

答案:\boxed{6}

```

4、命令行調(diào)用OpenAI API接口

命令行調(diào)用示例如下:

curl http://localhost:8000/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "DeepSeek-R1-Distill-Qwen-7B",
        "prompt": "我買了10個(gè)蘋果,給了你3個(gè),自己吃了1個(gè),還剩幾個(gè)?<think>\n",
        "max_tokens": 1024,
        "temperature": 0
}'

執(zhí)行結(jié)果如下:

只需幾步!用 vLLM 快速上手 DeepSeek 大模型部署-AI.x社區(qū)

五、最佳實(shí)踐建議

1. 顯存優(yōu)化

對(duì)于配備24G顯存的3090顯卡,建議設(shè)置`max_model_len=2048`。因?yàn)槟P烷L度與顯存占用密切相關(guān),合理設(shè)置`max_model_len`,可以避免因模型長度過大導(dǎo)致顯存不足的問題,確保模型能夠穩(wěn)定運(yùn)行。如果需要處理更長的文本,可以考慮增加顯存或者優(yōu)化模型結(jié)構(gòu)。

2. 溫度參數(shù)

在不同的任務(wù)場景下,合理調(diào)整溫度參數(shù)(temperature)至關(guān)重要。對(duì)于創(chuàng)造性任務(wù),如文本創(chuàng)作、故事生成等,建議將temperature設(shè)置為0.7 - 0.9,這樣可以使生成的文本更加多樣化和富有創(chuàng)意;對(duì)于邏輯推理任務(wù),如數(shù)學(xué)計(jì)算、知識(shí)問答等,建議將temperature設(shè)置為0.3 - 0.5,以確保生成的文本更加準(zhǔn)確和邏輯嚴(yán)謹(jǐn)。

總結(jié)

通過本文的詳細(xì)介紹,你已經(jīng)掌握了使用vLLM框架部署DeepSeek-R1-Distill-Qwen大語言模型的全流程。從vLLM框架的特性解析,到環(huán)境配置、模型部署、API接口測試,再到最佳實(shí)踐建議,每一步都為你在大語言模型部署的道路上提供了堅(jiān)實(shí)的指引。希望你在實(shí)際應(yīng)用中,能夠靈活運(yùn)用這些知識(shí),充分發(fā)揮vLLM和DeepSeek-R1-Distill-Qwen模型的優(yōu)勢,實(shí)現(xiàn)更多創(chuàng)新的應(yīng)用。

本文轉(zhuǎn)載自??小兵的AI視界??,作者: AGI小兵 ????


標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦