vLLM-Tutorial: Eine Schritt-für-Schritt-Anleitung Für Anfänger
Bereitstellen von vLLM: Eine Schritt-für-Schritt-Anleitung

Greifen Sie auf die chinesische vLLM-Dokumentation zu:https://vllm.hyper.ai/

Einfacher, schneller und günstiger LLM-Service für alle
Inhaltsverzeichnis
- 1. Einführung in das Tutorial
- 2. vLLM installieren
- 3. Beginnen Sie mit der Nutzung
- 4. Starten Sie den vLLM-Server
- 5. Stellen Sie eine Anfrage
1. Einführung in das Tutorial
vLLM (Virtual Large Language Model) ist ein Framework, das speziell für die Beschleunigung der Argumentation großer Sprachmodelle entwickelt wurde. Aufgrund seiner hervorragenden Argumentationseffizienz und Ressourcenoptimierungsfähigkeiten hat es weltweit große Aufmerksamkeit erregt. Im Jahr 2023 schlug ein Forschungsteam der University of California, Berkeley (UC Berkeley) einen bahnbrechenden Aufmerksamkeitsalgorithmus namens PagedAttention vor, der Aufmerksamkeitsschlüssel und -werte effektiv verwalten kann. Auf dieser Grundlage erstellten die Forscher eine verteilte LLM-Service-Engine (vLLM) mit hohem Durchsatz, erreichten eine nahezu null Verschwendung von KV-Cache-Speicher und lösten das Engpassproblem bei der Speicherverwaltung im Zusammenhang mit großen Sprachmodellen. Im Vergleich zu Hugging Face Transformers wird ein 24-mal höherer Durchsatz erreicht, und diese Leistungsverbesserung erfordert keine Änderungen an der Modellarchitektur. Die relevanten Papierergebnisse sindEffizientes Speichermanagement für die Bereitstellung großer Sprachmodelle mit PagedAttention"
In diesem Tutorial zeigen wir Ihnen Schritt für Schritt, wie Sie vLLM konfigurieren und ausführen, und bieten eine vollständige Anleitung von der Installation bis zum Start.
2. vLLM installieren
Diese Plattform wurde fertiggestellt vllm==0.5.4 Installation. Wenn Sie auf einer Plattform arbeiten, überspringen Sie diesen Schritt bitte. Wenn Sie die Bereitstellung lokal durchführen, befolgen Sie zur Installation die nachstehenden Schritte.
Die Installation von vLLM ist sehr einfach:
pip install vllm
Beachten Sie, dass vLLM mit CUDA 12.1 kompiliert wird. Sie müssen daher sicherstellen, dass auf Ihrem Computer diese Version von CUDA ausgeführt wird.
Um die CUDA-Version zu überprüfen, führen Sie Folgendes aus:
nvcc --version
Wenn Ihre CUDA-Version nicht 12.1 ist, können Sie entweder eine Version von vLLM installieren, die mit Ihrer aktuellen CUDA-Version kompatibel ist (weitere Informationen finden Sie in den Installationsanweisungen), oder CUDA 12.1 installieren.
3. Beginnen Sie mit der Nutzung
3.1 Modellvorbereitung
Methode 1: Verwenden des öffentlichen Plattformmodells
Zunächst können wir prüfen, ob das öffentliche Modell der Plattform bereits existiert. Wenn das Modell in ein öffentliches Repository hochgeladen wurde, können Sie es direkt verwenden. Falls nicht gefunden, verwenden Sie zum Herunterladen bitte Methode 2.
Die Plattform hat beispielsweise gespeichert Qwen-1_8B-Chat
Modell. Hier sind die Schritte zum Binden des Modells (dieses Modell ist für dieses Tutorial bereits gebunden).



Methode 2: Laden Sie es von HuggingFace herunter oder wenden Sie sich an den Kundendienst, um beim Hochladen auf die Plattform zu helfen
Die meisten Mainstream-Modelle sind auf HuggingFace zu finden. Eine Liste der von vLLM unterstützten Modelle finden Sie in der offiziellen Dokumentation: vllm-unterstützte-Modelle .
Dieses Tutorial verwendet Qwen-1_8B-Chat
Führen Sie einen Test durch. Bitte befolgen Sie die folgenden Schritte, um das Modell mit Git LFS herunterzuladen:
apt install git-lfs -y
git lfs install
# 下载模型,将模型文件下载到当前文件夹
cd /input0/
git clone https://huggingface.co/Qwen/Qwen-1_8B-Chat
3.2 Offline-Schlussfolgerung
Als Open-Source-Projekt kann vLLM LLM-Argumentation über seine Python-API durchführen. Das Folgende ist ein einfaches Beispiel. Bitte speichern Sie den Code als offline_infer.py
dokumentieren:
from vllm import LLM, SamplingParams
# 输入几个问题
prompts = [
"你好,你是谁?",
"法国的首都在哪里?",
]
# 设置初始化采样参数
sampling_params = SamplingParams(temperature=0.8, top_p=0.95, max_tokens=100)
# 加载模型,确保路径正确
llm = LLM(model="/input0/Qwen-1_8B-Chat/", trust_remote_code=True, max_model_len=4096)
# 展示输出结果
outputs = llm.generate(prompts, sampling_params)
# 打印输出结果
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
Führen Sie dann das Skript aus:
python offline_infer.py
Sobald das Modell geladen ist, sehen Sie die folgende Ausgabe:
Processed prompts: 100%|██████████| 2/2 [00:00<00:00, 10.23it/s, est. speed input: 56.29 toks/s, output: 225.14 toks/s]
Prompt: '你好,你是谁?', Generated text: '我是来自阿里云的大规模语言模型,我叫通义千问。'
Prompt: '法国的首都在哪里?', Generated text: '法国的首都是巴黎。'
4. Starten Sie den vLLM-Server
Um Onlinedienste mit vLLM bereitzustellen, können Sie einen Server starten, der mit der OpenAI-API kompatibel ist. Nach einem erfolgreichen Start können Sie das bereitgestellte Modell genauso verwenden wie mit GPT.
4.1 Hauptparametereinstellungen
Im Folgenden sind einige allgemeine Parameter beim Starten eines vLLM-Servers aufgeführt:
--model
: Zu verwendender HuggingFace-Modellname oder -Pfad (Standard:facebook/opt-125m
).--host
Und--port
: Geben Sie die Serveradresse und den Port an.--dtype
: Der Präzisionstyp der Modellgewichte und -aktivierungen. Mögliche Werte:auto
,half
,float16
,bfloat16
,float
,float32
. Standardwert:auto
.--tokenizer
: Zu verwendender Name oder Pfad des HuggingFace-Tokenizers. Wenn nicht angegeben, wird standardmäßig der Modellname oder Pfad verwendet.--max-num-seqs
: Maximale Anzahl von Sequenzen pro Iteration.--max-model-len
: Die Kontextlänge des Modells. Der Standardwert wird automatisch aus der Modellkonfiguration übernommen.--tensor-parallel-size
,-tp
: Anzahl der parallelen Kopien des Tensors (für GPU). Standardwert:1
.--distributed-executor-backend=ray
: Gibt das Backend des verteilten Dienstes an. Mögliche Werte:ray
,mp
. Standardwert:ray
(Bei Verwendung mehrerer GPUs wird automatisch eingestellt aufray
).
4.2 Starten Sie die Kommandozeile
Erstellen Sie einen Server, der mit der OpenAI-API-Schnittstelle kompatibel ist. Führen Sie den folgenden Befehl aus, um den Server zu starten:
python3 -m vllm.entrypoints.openai.api_server --model /input0/Qwen-1_8B-Chat/ --host 0.0.0.0 --port 8080 --dtype auto --max-num-seqs 32 --max-model-len 4096 --tensor-parallel-size 1 --trust-remote-code
Nach dem erfolgreichen Start wird eine Ausgabe ähnlich der folgenden angezeigt:

vLLM kann nun als Server eingesetzt werden, der das OpenAI API-Protokoll implementiert. Standardmäßig ist es verfügbar in http://localhost:8080
Starten Sie den Server. Du kannst --host
Und --port
Der Parameter gibt eine andere Adresse an.
5. Stellen Sie eine Anfrage
Die in diesem Tutorial verwendete API-Adresse lautet http://localhost:8080
, Sie können die API verwenden, indem Sie diese Adresse besuchen. localhost
Bezieht sich auf die Plattform selbst,8080
Ist die Portnummer, auf der der API-Dienst lauscht.
Auf der rechten Seite des Arbeitsbereichs wird die API-Adresse an den lokalen 8080-Dienst weitergeleitet, und Anforderungen können über den realen Host gestellt werden, wie in der folgenden Abbildung dargestellt:

5.1 Verwenden des OpenAI-Clients
Nachdem Sie den vLLM-Dienst in Schritt 4 gestartet haben, können Sie die API über den OpenAI-Client aufrufen. Hier ist ein einfaches Beispiel:
# 注意:请先安装 openai
# pip install openai
from openai import OpenAI
# 设置 OpenAI API 密钥和 API 基础地址
openai_api_key = "EMPTY" # 请替换为您的 API 密钥
openai_api_base = "http://localhost:8080/v1" # 本地服务地址
client = OpenAI(api_key=openai_api_key, base_url=openai_api_base)
models = client.models.list()
model = models.data[0].id
prompt = "描述一下北京的秋天"
# Completion API 调用
completion
= client.completions.create(model=model, prompt=prompt)
res = completion.choices[0].text.strip()
print(f"Prompt: {prompt}\nResponse: {res}")
Führen Sie den folgenden Befehl aus:
python api_infer.py
Sie erhalten eine Ausgabe ähnlich der folgenden:

5.2 Verwenden der Curl-Befehlsanforderung
Sie können die Anfrage auch direkt mit dem folgenden Befehl senden. Geben Sie beim Zugriff auf die Plattform den folgenden Befehl ein:
curl http://localhost:8080/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/input0/Qwen-1_8B-Chat/",
"prompt": "描述一下北京的秋天",
"max_tokens": 512
}'
Sie erhalten eine Antwort wie diese:

Wenn Sie die OpenBayes-Plattform verwenden, geben Sie den folgenden Befehl ein:
curl https://hyperai-tutorials-****.gear-c1.openbayes.net/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/input0/Qwen-1_8B-Chat/",
"prompt": "描述一下北京的秋天",
"max_tokens": 512
}'
Das Antwortergebnis lautet wie folgt:
