Bereitstellung von Open LLMs mit LLAMA-CPP-Server: Eine Schritt-für-Schritt-Anleitung

Bereitstellung von Open LLMs mit LLAMA-CPP-Server: Eine Schritt-für-Schritt-Anleitung. Erfahren Sie, wie Sie den LLAMA-CPP-Server installieren und einrichten, um Open-Source-Sprachmodelle bereitzustellen, und Anfragen über cURL, den OpenAI-Client und das Python-Requests-Paket stellen. Optimieren Sie für lokale und Remote-Bereitstellung.

18. Oktober 2024

party-gif

Erschließen Sie die Kraft von Open-Source-Großsprachmodellen (LLMs) mit diesem umfassenden Leitfaden zur Bereitstellung des LLAMA-CPP-Servers. Entdecken Sie, wie Sie mehrere Benutzer mit einem einzigen LLM effizient bedienen und die Leistung und Zugänglichkeit für Ihre KI-gestützten Anwendungen optimieren können.

LLAMA-CPP installieren

Der einfachste Weg, um mit LLAMA-CPP zu beginnen, ist die Verwendung des Homebrew-Paketmanagers zur Installation. Dies funktioniert nativ sowohl auf macOS- als auch auf Linux-Maschinen. Um LLAMA-CPP auf einem Windows-Rechner zu installieren, müssen Sie das Windows Subsystem für Linux (WSL) verwenden.

Um LLAMA-CPP mit Homebrew zu installieren, führen Sie den folgenden Befehl in Ihrem Terminal aus:

brew install llama-cpp

Dieser Befehl lädt und installiert das LLAMA-CPP-Paket auf Ihrem System. Sobald die Installation abgeschlossen ist, können Sie den Befehl llama-server verwenden, um Ihre LLM-Modelle bereitzustellen.

Den LLAMA-CPP-Server starten

Um den LLAMA-CPP-Server zu starten, führen Sie diese Schritte aus:

  1. Installieren Sie LLAMA-CPP mit dem Homebrew-Paketmanager:

    brew install llama.cpp
    

    Dieser Befehl installiert LLAMA-CPP auf Ihrem Mac oder Linux-Rechner. Für Windows-Nutzer müssen Sie WSL (Windows Subsystem für Linux) verwenden, um LLAMA-CPP zu installieren.

  2. Starten Sie den LLAMA-CPP-Server, indem Sie den folgenden Befehl ausführen:

    llama-server --model <hugging-face-repo-id> --model-file <quantization-file>
    

    Ersetzen Sie <hugging-face-repo-id> durch die Hugging Face-Repository-ID des Modells, das Sie bereitstellen möchten, und <quantization-file> durch die spezifische Quantisierungsdatei, die Sie verwenden möchten (z.B. die 4-Bit-quantisierte Version im GGML-Format).

  3. Der LLAMA-CPP-Server beginnt standardmäßig, auf localhost:8080 auf eingehende Anfragen zu lauschen. Sie können die Host-Adresse und den Port mit den verfügbaren Optionen wie --host und --port anpassen.

  4. Der Server unterstützt verschiedene Konfigurationsoptionen, darunter das Setzen des maximalen Kontextfensters, der Batch-Größe und mehr. Sie können diese Optionen durch Ausführen von llama-server --help erkunden.

  5. Sobald der Server läuft, können Sie mit ihm über verschiedene Methoden wie cURL, den OpenAI-Client oder das Python requests-Paket interagieren, wie in den vorherigen Abschnitten gezeigt.

Anfragen an den LLAMA-CPP-Server senden

Es gibt mehrere Möglichkeiten, mit dem LLAMA-CPP-Server zu interagieren und Anfragen an das bereitgestellte Modell zu senden:

  1. Verwendung des cURL-Befehls:

    curl -X POST -H "Content-Type: application/json" -d '{"prompt": "Hello, how are you?", "max_tokens": 50}' http://localhost:8080/v1/chat/completions
    

    Damit wird eine POST-Anfrage an den Chat-Completion-Endpunkt gesendet, der auf dem lokalen Host auf Port 8080 läuft.

  2. Verwendung des OpenAI-Clients:

    1import openai 2 3openai.api_base = "http://localhost:8080/v1" 4openai.Model.list() 5 6response = openai.ChatCompletion.create( 7 model="chat-gpt-3.5", 8 messages=[ 9 {"role": "system", "content": "You are a helpful assistant."}, 10 {"role": "user", "content": "Hello, how are you?"} 11 ] 12) 13 14print(response.choices[0].message.content)

    Hier wird der OpenAI-Client verwendet, um mit dem LLAMA-CPP-Server zu interagieren, der mit der OpenAI-API kompatibel ist.

  3. Verwendung des Python-Requests-Pakets:

    1import requests 2 3url = "http://localhost:8080/v1/chat/completions" 4headers = {"Content-Type": "application/json"} 5data = { 6 "prompt": "Hello, how are you?", 7 "max_tokens": 50 8} 9 10response = requests.post(url, headers=headers, json=data) 11print(response.json())

    Hier wird das Python-Requests-Paket verwendet, um eine POST-Anfrage an den Chat-Completion-Endpunkt zu senden.

Den LLAMA-CPP-Server anpassen

LLAMA-CPP bietet einen hochgradig anpassbaren Server, mit dem Sie das Verhalten Ihrer LLM-Bereitstellung fein abstimmen können. Hier sind einige der wichtigsten Optionen, die Sie konfigurieren können:

  1. Max Context Window: Sie können die maximale Größe des Kontextfensters für das LLM definieren, die die maximale Länge der Eingabesequenz bestimmt, die das Modell verarbeiten kann.

  2. Batch-Größe: LLAMA-CPP unterstützt das Batchverarbeiten von Prompts, was es ermöglicht, mehrere Eingaben gleichzeitig für eine verbesserte Durchsatzleistung zu verarbeiten. Sie können die Batch-Größe konfigurieren, um die Leistung zu optimieren.

  3. Host-Adresse: Standardmäßig lauscht der LLAMA-CPP-Server auf localhost, aber Sie können die Host-Adresse ändern, um den Server von anderen Maschinen in Ihrem Netzwerk aus zugänglich zu machen.

  4. Port: Der Server lauscht standardmäßig auf Port 8080, aber Sie können einen anderen Port angeben, wenn nötig.

  5. Modellpfad: LLAMA-CPP ermöglicht es Ihnen, den Pfad anzupassen, von dem es die LLM-Modelldateien lädt, was Ihnen Flexibilität bei der Organisation Ihrer Modelldaten gibt.

  6. Embedding-Modelle: Zusätzlich zu Sprachmodellen kann LLAMA-CPP auch Embedding-Modelle bereitstellen, was es Ihnen ermöglicht, sowohl Text-Generierungs- als auch Text-Encoding-Funktionen in Ihre Anwendungen zu integrieren.

  7. Metriken-Tracking: Der LLAMA-CPP-Server kann verschiedene Metriken wie Anfrage-Latenz und Durchsatz verfolgen, um Ihnen bei der Überwachung und Optimierung der Leistung Ihrer Bereitstellung zu helfen.

Mit dem LLAMA-CPP-Server auf verschiedene Arten interagieren

Um mit dem LLAMA-CPP-Server zu interagieren, können wir verschiedene Methoden verwenden:

  1. Verwendung des cURL-Befehls:

    • Senden Sie eine POST-Anfrage an den Chat-Completion-Endpunkt, der auf localhost läuft.
    • Stellen Sie die erforderlichen Header und das Datenobjekt mit dem Prompt und der gewünschten Anzahl der zu generierenden Token bereit.
    • Die Antwort enthält den generierten Text sowie Informationen zum Generierungsprozess wie Temperatur, Top-P, Top-K und vorhergesagte Token pro Sekunde.
  2. Verwendung des OpenAI-Clients:

    • Erstellen Sie einen OpenAI-Client mit der Basis-URL auf die URL des lokalen LLAMA-CPP-Servers eingestellt.
    • Verwenden Sie den Chat-Completion-Endpunkt-Client und geben Sie den Modellnamen (z.B. chat-gpt-3.5) an.
    • Legen Sie den System-Prompt und den Benutzer-Prompt fest und senden Sie die Anfrage an den Server.
    • Die Antwort wird im gleichen Format wie die OpenAI-API zurückgegeben.
  3. Verwendung des Requests-Pakets (Python):

    • Definieren Sie die URL und Header für die POST-Anfrage.
    • Übergeben Sie mehrere verschiedene Nachrichten an den Server und beobachten Sie, wie er die Anfragen parallel verarbeitet.
    • Der Server wird die Anfragen in einer Warteschlange verarbeiten und nacheinander abarbeiten, ohne überlastet zu werden.

Schlussfolgerung

In diesem Video haben wir die Installation und Verwendung von LlamaCPP, einem leistungsfähigen Open-Source-Projekt zum Bereitstellen von Open-Source-Sprachmodellen, erkundet. Wir haben gelernt, wie wir LlamaCPP auf unserem lokalen Rechner installieren, den Server starten und mit ihm über verschiedene Methoden wie cURL, den OpenAI-Client und das Python-Requests-Paket interagieren.

Wir haben auch die verschiedenen Konfigurationsoptionen in LlamaCPP besprochen, die es uns ermöglichen, den Server an unsere spezifischen Bedürfnisse anzupassen, wie das Setzen des maximalen Kontextfensters, der Batch-Größe und der Host-Adresse. Außerdem haben wir gesehen, wie LlamaCPP Metriken verfolgen kann, was es zu einer geeigneten Wahl für Produktionsumgebungen macht.

Schließlich haben wir die praktischen Anwendungen von LlamaCPP, insbesondere im Kontext der Bereitstellung von Sprachmodellen für verschiedene Anwendungsfälle, angesprochen. Wir haben das Rasa-Framework als mögliche Anwendung erwähnt und einen Link zu einem verwandten Kurs in der Videobeschreibung bereitgestellt.

Insgesamt hat dieses Video eine umfassende Einführung in LlamaCPP und seine Fähigkeiten gegeben und Sie mit dem Wissen ausgestattet, um Open-Source-Sprachmodelle auf Ihrem lokalen Rechner oder in einer Produktionsumgebung bereitzustellen.

FAQ