verwenden#

Xinference lokal ausführen#

Lassen Sie uns anhand eines klassischen Large Language Models qwen2.5-instruct zeigen, wie man ein großes Modell lokal mit Xinference ausführt.

Nach dieser Schnelleinführung können Sie lernen, wie Sie Xinference in einer verteilten Cluster-Umgebung bereitstellen.

Starten Sie den lokalen Dienst.#

Folgen Sie zunächst der Anleitung in diesem Dokument, um sicherzustellen, dass Xinference lokal installiert ist. Starten Sie den lokalen Xinference-Dienst mit dem folgenden Befehl:

xinference-local --host 0.0.0.0 --port 9997

Bemerkung

Standardmäßig verwendet Xinference <HOME>/.xinference als Hauptverzeichnis, um einige notwendige Informationen wie Protokolldateien und Modelldateien zu speichern, wobei <HOME> das Hauptverzeichnis des aktuellen Benutzers ist.

Sie können das Hauptverzeichnis ändern, indem Sie die Umgebungsvariable XINFERENCE_HOME konfigurieren, z. B.:

XINFERENCE_HOME=/tmp/xinference xinference-local --host 0.0.0.0 --port 9997

Glückwunsch! Sie haben den Xinference-Dienst lokal gestartet. Sobald der Xinference-Dienst läuft, kann er auf verschiedene Weise genutzt werden, darunter über die Webseite, cURL-Befehle, die Befehlszeile oder das Xinference Python SDK.

Die Benutzeroberfläche kann über http://127.0.0.1:9997/ui aufgerufen werden, die API-Dokumentation über http://127.0.0.1:9997/docs.

Nach der Installation über den folgenden Befehl kann es mit dem Xinference-Befehlszeilentool oder Python-Code verwendet werden:

pip install xinference

Das Befehlszeilen-Tool ist xinference. Mit dem folgenden Befehl können Sie sehen, welche Befehle verfügbar sind:

xinference --help

Wenn nur das Python SDK von Xinference installiert werden muss, kann der folgende Befehl verwendet werden, um die minimalen Abhängigkeiten zu installieren. Beachten Sie, dass die Version mit der Version des Xinference-Dienstes übereinstimmen muss.

pip install xinference-client==${SERVER_VERSION}

Über die Inferenz-Engine des Modells#

Ab Version v0.11.0 müssen Sie vor dem Laden eines LLM-Modells die spezifische Inferenz-Engine angeben. Derzeit unterstützt Xinference die folgenden Inferenz-Engines:

  • vllm

  • sglang

  • llama.cpp

  • transformers

  • MLX

Ausführliche Informationen zu diesen Inferenz-Engines finden Sie unter hier.

Beachten Sie, dass beim Laden eines LLM-Modells die ausführbare Engine eng mit den Parametern model_format und quantization zusammenhängt.

Xinference bietet den Befehl xinference engine, um Ihnen bei der Abfrage relevanter Parameterkombinationen zu helfen.

Zum Beispiel:

  1. Ich möchte die Parameterkombinationen für das qwen-chat-Modell abfragen, um zu bestimmen, wie es auf verschiedenen Inferenz-Engines ausgeführt werden kann.

xinference engine -e <xinference_endpoint> --model-name qwen-chat
  1. Ich möchte qwen-chat auf der VLLM-Inferenz-Engine ausführen, weiß aber nicht, welche anderen Parameter dafür geeignet sind.

xinference engine -e <xinference_endpoint> --model-name qwen-chat --model-engine vllm
  1. Ich möchte das qwen-chat Modell im GGUF Format laden und benötige die restlichen Parameterkombinationen.

xinference engine -e <xinference_endpoint> --model-name qwen-chat -f ggufv2

Zusammenfassend, im Vergleich zu früheren Versionen muss beim Laden eines LLM-Modells zusätzlich der Parameter model_engine übergeben werden. Sie können mit dem Befehl xinference engine die Beziehung zwischen der gewünschten Inference-Engine und anderen Parameterkombinationen abfragen.

Bemerkung

Bezüglich der Frage, wann welche Engine verwendet werden sollte, hier einige Empfehlungen:

  • Linux

    • Verwenden Sie, wenn möglich, bevorzugt vLLM oder SGLang, da diese eine bessere Leistung bieten.

    • Wenn die Ressourcen begrenzt sind, kann die Verwendung von llama.cpp in Betracht gezogen werden, da es mehr Quantisierungsoptionen bietet.

    • Andere Überlegungen zur Nutzung: Verwenden Sie Transformers, das nahezu alle Modelle unterstützt.

  • Windows

    • Es wird empfohlen, WSL zu verwenden. Wählen Sie in diesem Fall die für Linux passende Option.

    • Ansonsten wird llama.cpp empfohlen. Für nicht unterstützte Modelle wählen Sie Transformers.

  • Mac

    • Wenn vom Modell unterstützt, wird die Verwendung der MLX-Engine empfohlen, da sie die beste Leistung bietet.

    • Ansonsten wird llama.cpp empfohlen; für nicht unterstützte Modelle wählen Sie Transformers.

qwen2.5-instruct ausführen#

Lassen Sie uns ein integriertes qwen2.5-instruct-Modell ausführen. Wenn Sie ein Modell zum ersten Mal ausführen, müssen die Modellparameter von HuggingFace heruntergeladen werden. In der Regel dauert dies je nach Modellgröße zwischen 10 und 30 Minuten. Nachdem der Download abgeschlossen ist, wird Xinference die Daten lokal zwischenspeichern, sodass ein erneutes Herunterladen beim nächsten Ausführen desselben Modells nicht erforderlich ist.

Bemerkung

Xinference erlaubt es auch, Modelle von anderen Modell-Hosting-Plattformen herunterzuladen. Dies kann durch die Angabe von Umgebungsvariablen beim Starten von Xinference erfolgen. Wenn Sie beispielsweise ein Modell von ModelScope herunterladen möchten, können Sie den folgenden Befehl verwenden:

XINFERENCE_MODEL_SRC=modelscope xinference-local --host 0.0.0.0 --port 9997

Der Modell-UID kann mit dem Parameter --model-uid oder -u angegeben werden. Wenn keine Angabe erfolgt, generiert Xinference eine zufällige ID. Die Standard-ID entspricht dem Modellnamen.

xinference launch --model-engine <inference_engine> -n qwen2.5-instruct -s 0_5 -f pytorch

Bemerkung

Für einige Inferenz-Engines wie vllm müssen Benutzer enginespezifische Parameter beim Ausführen des Modells angeben. In diesem Fall reicht es aus, den entsprechenden Parameternamen und Wert direkt in der Befehlszeile anzugeben, z. B.:

xinference launch --model-engine vllm -n qwen2.5-instruct -s 0_5 -f pytorch --gpu_memory_utilization 0.9

Beim Ausführen des Modells wird gpu_memory_utilization=0.9 an das vllm-Backend übergeben.

Bemerkung

Weitere Tipps zum Laden von Modellen finden Sie unter Modell-Ladeanleitung.

An diesem Punkt gratuliere ich dir, dass du qwen2.5-instruct erfolgreich über Xinference zum Laufen gebracht hast. Sobald dieses Modell läuft, können wir über die Befehlszeile, cURL oder Python-Code damit interagieren:

curl -X 'POST' \
  'http://127.0.0.1:9997/v1/chat/completions' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "qwen2.5-instruct",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "What is the largest animal?"
        }
    ]
  }'

Xinference bietet eine mit OpenAI kompatible API, sodass das auf Xinference ausgeführte Modell als lokale Alternative zu OpenAI verwendet werden kann. Zum Beispiel:

from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:9997/v1", api_key="not used actually")

response = client.chat.completions.create(
    model="qwen2.5-instruct",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What is the largest animal?"}
    ]
)
print(response)

Folgende OpenAI-APIs werden unterstützt:

Xinference unterstützt auch den Aufruf der Anthropic API über die Basis-URL http://127.0.0.1:9997/anthropic, sodass Sie Xinference in Umgebungen wie Claude Code verwenden können. Weitere Einzelheiten finden Sie unter anthropic client.

Modell verwalten#

Neben dem Starten von Modellen bietet Xinference die Möglichkeit, den gesamten Lebenszyklus eines Modells zu verwalten. Ebenso können Sie dies über die Befehlszeile, cURL und Python-Code tun:

Hier ist die Liste aller von Xinference unterstützten Modelle, kategorisiert nach Typ:

xinference registrations -t LLM

Der folgende Befehl listet alle derzeit ausgeführten Modelle auf:

xinference list

Wenn Sie ein bestimmtes laufendes Modell nicht mehr benötigen, können Sie es wie folgt stoppen und die Ressourcen freigeben:

xinference terminate --model-uid "qwen2.5-instruct"

Hier ist die Übersetzung:#

Um Xinference in einer Cluster-Umgebung bereitzustellen, muss auf einer Maschine ein Supervisor-Knoten gestartet werden, und auf derselben oder anderen Knoten müssen Worker-Knoten gestartet werden.

Befolgen Sie zunächst die Anweisungen in der Dokumentation, um sicherzustellen, dass Xinference auf allen Servern installiert ist. Gehen Sie dann wie folgt vor:

Supervisor starten#

Führen Sie den folgenden Befehl auf dem Server aus, um den Supervisor-Knoten zu starten:

xinference-supervisor -H "${supervisor_host}"

Ersetzen Sie ${supervisor_host} durch die IP-Adresse des aktuellen Knotens.

Die Web-Benutzeroberfläche ist unter http://${supervisor_host}:9997/ui erreichbar, die API-Dokumentation unter http://${supervisor_host}:9997/docs.

Worker starten#

Führen Sie auf dem Rechner, der den Xinference-Worker starten soll, den folgenden Befehl aus:

xinference-worker -e "http://${supervisor_host}:9997" -H "${worker_host}"

Bemerkung

Es ist zu beachten, dass die IP des aktuellen Worker-Knotens verwendet werden muss, um ${worker_host} zu ersetzen.

Bemerkung

Beachten Sie, dass Sie bei der Interaktion mit dem Cluster über die Befehlszeile die Supervisor-Adresse mit dem Parameter -e oder --endpoint angeben sollten, zum Beispiel:

xinference launch -n qwen2.5-instruct -s 0_5 -f pytorch -e "http://${supervisor_host}:9997"

Verwendung von Docker zur Bereitstellung von Xinference#

Führen Sie Xinference mit dem folgenden Befehl im Container aus:

Auf einem Rechner mit NVIDIA-Grafikkarte ausführen.#

Für CUDA 12.4:

docker run -e XINFERENCE_MODEL_SRC=modelscope -p 9998:9997 --gpus all xprobe/xinference:<your_version> xinference-local -H 0.0.0.0 --log-level debug

Für CUDA 12.8:

Added in version v1.8.1: Die CUDA 12.8 Version ist experimentell. Wir freuen uns über Ihr Feedback zur Verbesserung.

Geändert in Version v1.16.0: CUDA 12.8 wurde in v1.16.0 entfernt.

docker run -e XINFERENCE_MODEL_SRC=modelscope -p 9998:9997 --gpus all xprobe/xinference:<your_version>-cu128 xinference-local -H 0.0.0.0 --log-level debug

Für CUDA 12.9:

Added in version v1.16.0: Mit der Veröffentlichung von Xinference v2.0.0 wird CUDA 12.9 zur Standardversion.

docker run -e XINFERENCE_MODEL_SRC=modelscope -p 9998:9997 --gpus all xprobe/xinference:<your_version>-cu129 xinference-local -H 0.0.0.0 --log-level debug

Auf einem Rechner nur mit CPU ausführen.#

docker run -e XINFERENCE_MODEL_SRC=modelscope -p 9998:9997 xprobe/xinference:<your_version>-cpu xinference-local -H 0.0.0.0 --log-level debug

Ersetzen Sie <your_version> durch die Version von Xinference, z. B. v0.10.3. Sie können latest für die neueste Version verwenden.

Weitere Informationen zur Verwendung von Docker finden Sie unter Verwendung des Docker-Images.

Mehr#

Herzlichen Glückwunsch! Du hast bereits grundlegende Kenntnisse in der Verwendung von Xinference erlangt! Um dir die Arbeit mit dem Tool zu erleichtern, findest du hier weitere Dokumentationen und Leitfäden: