Einführung
Willkommen zu einer einfachen Anleitung, wie du PrivateGPT auf deinem Apple Silicon Mac (ich habe einen M1 benutzt) mit Mistral Instruct als LLM (Language Learning Model) über LM Studio ausführen kannst.
Hinweis: Diese Anleitung ähnelt dem Prozess, den ich für die Einrichtung von Ollama mit PrivateGPT erstellt habe.
Abbildung: PrivateGPT läuft „openailike“ über LM Studio mit 2-Bit-quantisierten Modellen
PrivateGPT ist ein robustes Tool, das eine API für den Aufbau privater, kontextbezogener KI-Anwendungen bietet. Es ist vollständig kompatibel mit der OpenAI-API und kann kostenlos in lokaler Umgebung genutzt werden.
LM Studio ist ein kostenloses Tool, das die Ausführung von KI auf deinem Desktop mit lokal installierten Open-Source-LLMs ermöglicht. Es enthält eine integrierte Suchoberfläche, um Modelle von Hugging Face zu finden und herunterzuladen, eine Chat-UI in der App und eine lokale Serverlaufzeit, die mit der OpenAI-API kompatibel ist (die wir in dieser Anleitung verwenden werden, um uns mit PrivateGPT zu verbinden).
Diese Anleitung ist dein Leitfaden für die effektive Nutzung dieser Tools. Egal, ob du ein KI-Enthusiast, ein Entwickler oder einfach nur neugierig auf die neuesten Entwicklungen bist, diese Anleitung ist für dich gedacht und soll das Komplexe einfach und das Verwirrende klar machen.
Ich habe diese Anleitung an die PrivateGPT-Installation und die PrivateGPT LLM-Backends angepasst.
LM Studio & Modell installieren
- Gehe zu lmstudio.ai und klicke auf „Download“.
Abbildung: LM Studio herunterladen
- Lade nun ein Modell herunter. Für diese Anleitung verwende ich eine 2-Bit-State-of-the-Art-Quantisierung von Mistral Instruct.
Quantisierung ist eine Technik, die verwendet wird, um die Speicheranforderungen großer Modelle zu reduzieren, indem numerische Werte mit weniger Bits dargestellt werden, während eine akzeptable Genauigkeit beibehalten wird.
Im Kontext von „Inference at the edge“, wo die Computing-Ressourcen wie der Speicher begrenzt sind, ist die Zwei-Bit-Quantisierung gegenüber der Vier-Bit-Quantisierung bevorzugt, aufgrund der beschleunigten Zunahme von Quantisierungsfehlern, wenn die Modellgröße unter vier Bits sinkt. Daher ist die Wahl des kleinsten quantisierten Modells, das in den verfügbaren Speicherplatz passt, eine effiziente Möglichkeit, die Leistung aufrechtzuerhalten.
Weitere Informationen zu dieser Quantisierungsmethode findest du in der Erklärung von Iwan Kawrakow sowie in den PRs 4856 und 4773.
Um das Modell in LM Studio herunterzuladen, suche nach ikawrakow/various-2bit-sota-gguf
und lade die 2,2 GB große Datei mistral-instruct-7b-2.43bpw.gguf
herunter.
Abbildung: mistral-instruct-7b-2.43bpw.gguf in LM Studio herunterladen
LM Studio-Server starten
Im Tab „Local Server“ von LM Studio lädst du das Modell und klickst auf „Start Server“.
Abbildung: LM Studio-Server starten
Toll! Jetzt, wo unser Server läuft, können wir mit der Erstellung unserer Umgebung und der Installation von PrivateGPT fortfahren.
Eine Conda-Umgebung erstellen
Du musst Python 3.11 verwenden, da ältere Versionen nicht unterstützt werden.
Erstelle eine neue Umgebung mit dem Befehl conda create -n privategpt python=3.11
.
Installiere die neuen Pakete (gib „y“ ein, wenn du dazu aufgefordert wirst) mit conda activate privategpt
.
PrivateGPT installieren
Öffne ein neues Terminal und navigiere zu dem Verzeichnis, in dem du den Code von private-gpt installieren möchtest. In meinem Fall habe ich zu meinem Developer-Verzeichnis navigiert: /Users/ingrid/Developer
.
Stelle sicher, dass deine Conda-Umgebung (aus dem vorherigen Schritt) aktiv ist.
Klone dann das Repository mit dem Befehl git clone https://github.com/imartinez/privateGPT
.
Navigiere zu dem Verzeichnis mit dem Befehl cd privateGPT
.
Poetry installieren:
pip install poetry
Make für Skripte installieren:
brew install make
Abhängigkeiten installieren:
poetry install --with ui
Installiere auch die lokalen Abhängigkeiten mit poetry install --with local
.
PrivateGPT für die Verwendung von LM Studio konfigurieren
Erstelle die YAML-Datei für LM Studio in privateGPT/settings-vllm.yaml
:
- Öffne die Datei mit
nano settings-vllm.yaml
. - Füge die folgenden Inhalte in die Datei ein:
llm:
mode: openailike
embedding:
mode: local
ingest_mode: simple
local:
embedding_hf_model_name: BAAI/bge-small-en-v1.5
openai:
api_base: http://localhost:1234/v1 # LM Studio-Basis-URL
api_key: EMPTY
model: mixtral # Dies kann alles sein, was du willst
- Drücke
Strg-O
, um die Datei zu schreiben, undStrg-X
, um zu beenden.
Stelle nun sicher, dass der Server in LM Studio noch läuft.
Umgebungsvariable festlegen:
Lege deine Umgebungsvariable PGPT_PROFILES
fest: export PGPT_PROFILES=vllm
(überprüfe sie mit echo $PGPT_PROFILES
)
PrivateGPT 2.0 ausführen:
Führe in deinem Terminal make run
aus.
Navigiere zu http://0.0.0.0:8001/, um deine Benutzeroberfläche zu sehen.
Abbildung: PrivateGPT läuft mistral-instruct-7b-2.43bpw.gguf
Du kannst Dokumente mit der Schaltfläche „Upload File(s)“ hinzufügen. In meinen Tests dauerte es 7 Sekunden, um eine 5-seitige PDF-Datei hochzuladen und in die Vektordatenbank zu verarbeiten, die PrivateGPT standardmäßig verwendet (Qdrant).
Abbildung: Wechseln zwischen Modi
Du kannst zwischen den folgenden Modi in der Benutzeroberfläche wechseln:
- Query Files: Wenn du mit deinen Dokumenten chatten möchtest.
- Search Files: Findet Abschnitte aus den von dir hochgeladenen Dokumenten, die zu einer Abfrage passen.
- LLM Chat (no context from files): Einfacher Chat mit dem LLM.
Verwendung eines anderen 2-Bit-quantisierten Modells
Wenn du LM Studio als Modell-Server verwendest, kannst du die Modelle direkt in LM Studio ändern.
Ich habe rocket-3b-2.31bpw.gguf
heruntergeladen, das ein weiteres 2-Bit-quantisiertes Modell von ikawrakow ist, aber dieses ist super klein mit nur 807 MB.
Ich bin beeindruckt von der Geschwindigkeit und Qualität!
Abbildung: PrivateGPT läuft rocket-3b-2.31bpw.gguf
Wenn du dies tust, ermutige ich dich, weitere dieser winzigen, beeindruckenden Modelle auszuprobieren und mir mitzuteilen, wie es läuft:
Verbesserung der Benutzeroberfläche, um zu sehen, welches Modell läuft
Ich habe festgestellt, dass es hilfreich ist, beim Wechseln der Modelle mehr Informationen aus der YAML-Einstellungsdatei zu ziehen, um sie auf der Benutzeroberfläche anzuzeigen.
Hier ist der Code, um das zu tun (ca. Zeile 413 in private_gpt/ui/ui.py
):
def get_model_label() -> str | None:
# Bestimme das Modell-Label basierend auf der PGPT_PROFILES-Umgebungsvariable.
pgpt_profiles = os.environ.get("PGPT_PROFILES")
if pgpt_profiles == "ollama":
return settings().ollama.model
elif pgpt_profiles == "vllm":
return settings().openai.model
else:
return None
with gr.Column(scale=7, elem_id="col"):
# Bestimme das Modell-Label basierend auf dem Wert von PGPT_PROFILES
model_label = get_model_label()
if model_label is not None:
label_text = (
f"LLM: {settings().llm.mode} | Model: {model_label}"
)
else:
label_text = f"LLM: {settings().llm.mode}"
_ = gr.ChatInterface(
self._chat,
chatbot=gr.Chatbot(
label=label_text,
show_copy_button=True,
elem_id="chatbot",
render=False,
avatar_images=(
None,
AVATAR_BOT,
),
),
additional_inputs=[mode, upload_button, system_prompt_input],
)
Jetzt kannst du genau sehen, welches Modell in der Benutzeroberfläche läuft!
Viel Spaß!