Kostenlose Bereitstellung Von Llm Kostenlose Bereitstellung Von Llm

Kostenlose Bereitstellung von LLM

Im vorherigen Artikel haben wir das produktionsbereite RAG-System bei Nullkosten gesehen. Dabei haben wir die kostenlose Stufe von Hugging Face Space für die Bereitstellung genutzt.

Wir werden dieselbe Hugging Face Space nutzen, um unser LLM bereitzustellen. Hugging Face bietet kostenlos CPU Basic, 2 vCPU mit 16GB RAM und 50GB Speicherplatz an!

Warten! Was? Kann man LLM auf dieser Ressource bereitstellen? Ist das möglich?

Die Antwort lautet ja! Es ist mit einigen Einschränkungen möglich. Wir können LLM auf dem CPU mit Hilfe von CTransformers ausführen. Die CTransformer-Bibliothek ist ein Python-Paket, das Zugriff auf Transformer-Modelle bietet, die in C/C++ mit der GGML-Bibliothek implementiert wurden.

GGML

GGML ist eine C-Bibliothek für maschinelles Lernen. Sie hilft dabei, große Sprachmodelle (LLMs) auf gewöhnlichen Computerchips (CPUs) auszuführen. Sie verwendet eine spezielle Art der Datenrepräsentation (Binärformat) zum Austausch dieser Modelle. Um eine gute Leistung auf gängiger Hardware zu gewährleisten, verwendet GGML eine Technik namens Quantisierung. Diese Technik ist in verschiedenen Stufen verfügbar, wie z.B. 4-Bit, 5-Bit und 8-Bit-Quantisierung. Jede Stufe bietet eine andere Balance zwischen Effizienz und Leistung.

Nachteile

Der Hauptnachteil hier ist die Latenzzeit. Da das Modell auf CPUs läuft, erhalten wir nicht so schnell Antworten wie bei einem auf einer GPU bereitgestellten Modell. Die Latenzzeit ist jedoch nicht übermäßig hoch. Im Durchschnitt dauert es etwa 1 Minute, um 140-150 Tokens auf Huggingface Space zu generieren. Tatsächlich hat es auf einem lokalen System mit einem 16-Kern-Prozessor in weniger als 15 Sekunden Antworten geliefert.

Modell

Für Demonstrationszwecke werden wir das Zephyr-7B-Beta-SOTA-Modell bereitstellen. Verschiedene Größen des Zephyr-GGUF-Quantisierungsformats finden Sie auf Huggingface.

Verwirren Sie sich nicht. GGUF ist eine aktualisierte Version von GGML, die mehr Flexibilität, Erweiterbarkeit und Kompatibilität bietet. Sie zielt darauf ab, die Benutzererfahrung zu vereinfachen und verschiedene Modelle zu unterstützen. GGML war zwar ein wertvoller früher Versuch, hatte aber Einschränkungen, die GGUF zu überwinden sucht.

Zephyr GGUF https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/tree/main

Wir haben Zephyr-7b-beta.Q4_K_S.gguf ausgewählt. Es handelt sich um ein 4-Bit-quantisiertes kleines Modell, das schnell ist und nur einen geringen Qualitätsverlust aufweist.

Hinweis: Die Antwortzeit, die Latenzzeit und die Genauigkeit können je nach Größe des von Ihnen ausgewählten Modells variieren.

Coding-Zeit

Lassen Sie uns die Bereitstellung im Detail untersuchen. Wir haben das Zephyr-Modell in zwei Umgebungen bereitgestellt:

  1. Eine für die Erstellung von APIs.
  2. Eine weitere, die als Spielplatz dient und Ihnen die Interaktion mit dem Modell ermöglicht.

1. Bereitstellung von LLM für API

Bereitstellungsstruktur

LLM_Deployment_at_zerocost ├── Dockerfile ├── main.py ├── requirements.txt └── zephyr-7b-beta.Q4_K_S.gguf

Verweisen Sie auf unsere Hugging Face Space-Dateistruktur, um sich ein Bild zu machenhttps://huggingface.co/spaces/gathnex/LLM-deployment-zerocost-api/tree/main

requirements.txt

python-multipart
fastapi
pydantic
uvicorn
requests
python-dotenv
ctransformers

zephyr-7b-beta.Q4_K_S.gguf

Laden Sie das Modell zephyr-7b-beta.Q4_K_S.gguf von huggingface herunter.

main.py

Die Datei main.py enthält eine FastAPI-Funktion, die eine Zephyr-7B-Vervollständigung zurückgibt.

from ctransformers import AutoModelForCausalLM
from fastapi import FastAPI
from pydantic import BaseModel
llm = AutoModelForCausalLM.from_pretrained("zephyr-7b-beta.Q4_K_S.gguf",
model_type='mistral',
max_new_tokens = 1096,
threads = 3,
)
#Pydantic-Objekt
class validation(BaseModel):
    prompt: str
#Fast API
app = FastAPI()
@app.post("/llm_on_cpu")
async def stream(item: validation):
    system_prompt = 'Below is an instruction that describes a task. Write a response that appropriately completes the request.'
    E_INST = "</s>"
    user, assistant = "<|user|>", "<|assistant|>"
    prompt = f"{system_prompt}{E_INST}\n{user}\n{item.prompt}{E_INST}\n{assistant}\n"
    return llm(prompt)

Dockerfile

Schließlich haben wir das Dockerfile verwendet, um unsere Anwendung für die Bereitstellung zu containerisieren.

FROM python:3.9
WORKDIR /code
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY ./zephyr-7b-beta.Q4_K_S.gguf /code/zephyr-7b-beta.Q4_K_S.gguf
COPY ./main.py /code/main.py
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]

Jetzt sind unsere Dateien bereit für die Bereitstellung.

Bereitstellung

Huggingface Space

Kostenlose Bereitstellung von LLM

Schritt 1: Erstellen Sie einen neuen Hugging Face Space.

Schritt 2: Geben Sie den Spacenamen ein und wählen Sie den Lizenztyp aus.

Schritt 3: Wählen Sie die Option „Space SDK-Docker (Blank)“.

Schritt 4: Wählen Sie zunächst „Öffentlich“, um unsere Bereitstellungsendpunkt zu kopieren, und klicken Sie dann auf „Space erstellen“.

Verweisen Sie auf unsere Hugging Face Space-Dateistruktur, um sich ein Bild zu machenhttps://huggingface.co/spaces/gathnex/LLM-deployment-zerocost-api/tree/main

Schritt 5: Laden Sie die oben erstellten Dateien hoch.

LLM_Deployment_at_zerocost ├── Dockerfile ├── main.py ├── requirements.txt └── zephyr-7b-beta.Q4_K_S.gguf

Herzlichen Glückwunsch! Sie haben Ihr LLM bereitgestellt.

Wenn es im Code keine Fehler gibt, sehen Sie, dass er läuft, und Sie können die Protokolle überprüfen, wenn ein Fehler auftritt.

Kostenlose Bereitstellung von LLM

Schritt 6: Klicken Sie nun auf „Diesen Space einbetten“ und kopieren Sie den Spacelink (dies dient als Ihr API-Schlüssel für die Produktion).

Kostenlose Bereitstellung von LLM

Kopieren Sie die direkte URL.

Kostenlose Bereitstellung von LLM

Schritt 7: Machen Sie den Space jetzt privat ⚠️ in den Einstellungen (Hinweis: Ihre Daten und Anmeldeinformationen werden in einem öffentlichen Space offengelegt).

Alles ist jetzt abgeschlossen und wir haben unser LLM erfolgreich bereitgestellt. Lassen Sie uns nun unsere API testen.

Dies ist unser Spacelink: https://gathnex-llm-deployment-zerocost-api.hf.space

Fügen Sie /docs zur URL hinzu, um Swagger UI zu aktivieren und unsere API zu testen.

Fast API Swagger: https://gathnex-llm-deployment-zerocost-api.hf.space/docs

Endpoint: https://gathnex-llm-deployment-zerocost-api.hf.space/llm_on_cpu

Kostenlose Bereitstellung von LLM

Wir haben Zephyr auch in der Gradio-Umgebung für den Chat-Spielplatz bereitgestellt.

2. Chat-UI-Spielplatz auf HF CPU: https://huggingface.co/spaces/gathnex/LLM_deployment_zerocost_playground

Kostenlose Bereitstellung von LLM

Fazit

Wir haben LLM erfolgreich in der Produktion mit einer API bereitgestellt. Sie können es für kleine Automatisierungsaufgaben, Textgenerierung, Agentenaufgaben usw. verwenden. Es ist sehr nützlich für diejenigen, die ihr eigenes angepasstes Modell bereitstellen möchten, ohne die hohen Kosten, die mit GPUs verbunden sind. Die Kosten für GPUs sind oft zu hoch, was es für viele Menschen schwierig macht, sie sich leisten zu können.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert