Allgemeine Einführung
KBLaM ist ein von Microsoft entwickeltes Open-Source-Projekt mit dem vollständigen Namen "Knowledge Base augmented Language Model" (Knowledge Base Augmented Language Model). Es wandelt externes Wissen in Vektoren um und bettet sie in die Aufmerksamkeitsschicht eines großen Modells ein, so dass das Modell dieses Wissen direkt nutzen kann, um Fragen zu beantworten oder Schlussfolgerungen zu ziehen. Im Vergleich zur traditionellen Retrieval-Augmented Generation (RAG) ist kein zusätzliches Retrieval-Modul erforderlich, und im Vergleich zum Kontextlernen wachsen die Rechenkosten linear mit der Größe der Wissensbasis und nicht in quadratischen Schritten. KBLaM wird auf GitHub als Open-Source zur Verfügung gestellt und richtet sich in erster Linie an Forscher und Entwickler, die erforschen möchten, wie große Modelle externe Informationen effizienter verarbeiten können. Derzeit unterstützt es Modelle wie die Llama-Familie von Meta und Phi-3 von Microsoft.
Funktionsliste
- Umwandlung externer Wissensdatenbanken in Schlüssel-Wert-Vektor-Paare zur Modellverbesserung.
- Einbettung von Wissen in große Modelle unter Verwendung des Mechanismus der rechteckigen Aufmerksamkeit.
- Unterstützt die dynamische Aktualisierung der Wissensbasis ohne erneutes Training des Modells.
- Der Berechnungsaufwand wächst linear mit der Größe der Wissensbasis und ist effizient.
- Offener Quellcode, experimentelle Skripte und Datensätze zur Erleichterung von Forschung und Entwicklung.
- Unterstützt Aufgaben wie Quizfragen und Schlussfolgerungen und kann auf der Grundlage einer Wissensbasis genaue Antworten generieren.
- Keine Änderung der Textverarbeitungsfähigkeit des Basismodells, Beibehaltung der ursprünglichen Leistung.
Hilfe verwenden
KBLaM ist ein Open-Source-Forschungstool, dessen Code und Dokumentation über GitHub verfügbar sind. Nachfolgend finden Sie eine detaillierte Installations- und Nutzungsanleitung, die den Benutzern einen schnellen Einstieg ermöglicht.
Einbauverfahren
- Vorbereiten der Umgebung
Erfordert Python 3.8 oder höher und Git; Linux oder Windows empfohlen. Wenn Sie mit umfangreichen Wissensdatenbanken arbeiten, wird ein NVIDIA-Grafikprozessor (z. B. A100 mit 80 GB oder mehr Videospeicher) empfohlen. - Lagerhaus herunterladen
Öffnen Sie ein Terminal und geben Sie den Befehl KBLaM-Repository klonen ein:
git clone https://github.com/microsoft/KBLaM.git
Rufen Sie den Projektkatalog auf:
cd KBLaM
- Installation von Abhängigkeiten
Führen Sie den folgenden Befehl aus, um die erforderlichen Bibliotheken zu installieren:
pip install -e .
Dadurch werden PyTorch, Transformers und andere Abhängigkeiten installiert. Wenn Sie das Llama-Modell verwenden möchten, müssen Sie auch das Tool Hugging Face installieren und sich anmelden:
pip install huggingface_hub
huggingface-cli login
Um sich anzumelden, müssen Sie ein Token von Hugging Face generieren.
- Überprüfen der Installation
Führen Sie das Testskript aus, um zu bestätigen, dass die Umgebung in Ordnung ist:
python -m kblam.test
Wenn keine Fehler gemeldet werden, war die Installation erfolgreich.
Hauptfunktionen
1. eine Wissensdatenbank erstellen
KBLaM muss externes Wissen in Vektorpaare umwandeln.
- umziehen::
- Bereiten Sie die Wissensdatenbankdatei vor (z.B. im JSON-Format), Beispiel:
{"entity": "AI", "description": "人工智能是模拟人类智能的技术"}
- Vektoren generieren:
python dataset_generation/generate_kb_embeddings.py --input knowledge.json --output embeddings.npy
- Unterstützte Einbettungsmodelle sind
text-embedding-ada-002
im Gesang antwortenall-MiniLM-L6-v2
. Output-Dateienembeddings.npy
ist ein Wissensvektor.
2. die Einbettung von Wissen in Modelle
Einbettung von Wissensvektoren in die Aufmerksamkeitsschicht eines großen Modells.
- umziehen::
- Download unterstützter Modelle (z.B.
meta-llama/Meta-Llama-3-8B-Instruct
). - Führen Sie das eingebettete Skript aus:
python src/kblam/integrate.py --model meta-llama/Meta-Llama-3-8B-Instruct --kb embeddings.npy --output enhanced_model
- Exportieren Sie einen erweiterten Modellkatalog
enhanced_model
.
3. die Erprobung von verbesserten Modellen
Laden Sie das Erweiterungsmodell und testen Sie die Wirkung.
- umziehen::
- Führen Sie das Testskript aus:
python src/kblam/evaluate.py --model enhanced_model --question "AI是什么?"
- Das Modell gibt zurück: "KI ist eine Technologie, die die menschliche Intelligenz simuliert".
Featured Function Bedienung
Dynamische Aktualisierung der Wissensbasis
KBLaM unterstützt die Aktualisierung der Wissensbasis zu jeder Zeit, ohne das Modell neu zu trainieren.
- umziehen::
- Ändern Sie die Wissensbasisdatei, um neue Einträge hinzuzufügen:
{"entity": "KBLaM", "description": "微软开发的知识增强工具"}
- Erzeugen Sie einen neuen Vektor:
python dataset_generation/generate_kb_embeddings.py --input updated_knowledge.json --output new_embeddings.npy
- Aktualisieren Sie das Modell:
python src/kblam/integrate.py --model enhanced_model --kb new_embeddings.npy --output updated_model
- Das aktualisierte Modell ist sofort bereit, das neue Wissen zu nutzen.
Ausbildungsadapter
Training von Adaptern, um die Effekte der Wissenseinbettung zu optimieren.
- umziehen::
- Training mit synthetischen Datensätzen:
python train.py --dataset synthetic_data --N 120000 --B 20 --total_steps 601 --encoder_spec OAI --use_oai_embd --key_embd_src key --use_data_aug
- Ein Azure OpenAI-Endpunkt ist erforderlich, um synthetische Daten zu erzeugen, siehe
dataset_generation/gen_synthetic_data.py
.
Wiederholungsexperiment
Das Repository enthält experimentelle Skripte, die die Ergebnisse des Artikels reproduzieren.
- umziehen::
- Rufen Sie den Experimentierkatalog auf:
cd experiments
- Führen Sie das Skript aus:
python run_synthetic_experiments.py
- Azure OpenAI-Schlüssel müssen konfiguriert werden, um synthetische Datensätze zu erzeugen.
caveat
- Modell-Unterstützung: Aktuelle Unterstützung
Meta-Llama-3-8B-Instruct
undLlama-3.2-1B-Instruct
im Gesang antwortenPhi-3-mini-4k-instruct
. Weitere Modelle müssen geändert werdensrc/kblam/models
Der Adaptercode in der Datei - Hardware-VoraussetzungLeistungsstarke GPUs sind erforderlich, um große Wissensdatenbanken zu verarbeiten, während kleinere Experimente auf CPUs durchgeführt werden können.
- Frage FeedbackFalls Probleme auftreten, prüfen Sie
SUPPORT.md
oder reichen Sie eine Anfrage auf GitHub ein.
Anwendungsszenario
- Forschungsexperiment
Forscher können KBLaM verwenden, um zu testen, wie große Modelle mit Fachwissen umgehen, z. B. durch Einbettung einer Wissensdatenbank im Bereich der Chemie, um die Genauigkeit der Modellantworten zu verbessern. - Unternehmens-Fragen und Antworten
Entwickler können Unternehmensdokumente in eine Wissensdatenbank verwandeln und intelligente Assistenten entwickeln, die Mitarbeiter- oder Kundenfragen schnell beantworten. - Pädagogische Hilfsmittel
Lehrkräfte können Kursmaterialien in KBLaM einbetten, um ein Werkzeug zu schaffen, das die Fragen der Schülerinnen und Schüler beantwortet und das Lernen fördert.
QA
- Wie unterscheidet sich KBLaM von der herkömmlichen Feinabstimmung?
KBLaM ändert das Basismodell nicht und trainiert nur das Wissen über die Einbettung des Adapters. Bei der herkömmlichen Feinabstimmung muss das gesamte Modell neu trainiert werden, was kostspieliger ist. - Ist sie für eine Produktionsumgebung geeignet?
KBLaM ist ein Forschungsprojekt. Die Antworten können ungenau sein, wenn sich die Wissensbasis zu sehr von den Trainingsdaten unterscheidet. Die offizielle Empfehlung lautet, KBLaM nur zu Forschungszwecken zu verwenden. - Wie kann ich die Leistung des KBLaM bewerten?
Bewertet werden die Genauigkeit (wie korrekt das Wissen abgerufen wird), die Ablehnungsrate (ob unbeantwortbare Fragen korrekt identifiziert werden) sowie die Präzision und die Wiedererkennung der Antworten.