KBLaM : un outil Open Source amélioré pour intégrer des connaissances externes dans de grands modèles

Introduction générale

KBLaM est un projet open source développé par Microsoft, dont le nom complet est "Knowledge Base augmented Language Model" (modèle de base de connaissances augmentée). Il transforme les connaissances externes en vecteurs et les intègre dans la couche d'attention d'un grand modèle, de sorte que le modèle peut directement utiliser ces connaissances pour répondre à des questions ou à des raisonnements. Par rapport à la génération augmentée par récupération (RAG) traditionnelle, il ne nécessite pas de module de récupération supplémentaire, et par rapport à l'apprentissage contextuel, son coût de calcul croît linéairement avec la taille de la base de connaissances, plutôt que par étapes au carré. KBLaM est open-sourcé sur GitHub, et est principalement destiné aux chercheurs et aux développeurs, et est adapté pour explorer comment rendre les grands modèles plus efficaces dans le traitement de l'information externe. Il prend actuellement en charge des modèles tels que la famille Llama de Meta et le Phi-3 de Microsoft.

KBLaM:为大模型嵌入外部知识的开源增强工具

 

Liste des fonctions

  • Transformation de bases de connaissances externes en paires de vecteurs clé-valeur pour l'amélioration des modèles.
  • Intégration de connaissances dans de grands modèles à l'aide du mécanisme d'attention rectangulaire.
  • Permet la mise à jour dynamique de la base de connaissances sans réapprentissage du modèle.
  • Le coût de calcul croît linéairement avec la taille de la base de connaissances et est efficace.
  • Code source ouvert, scripts expérimentaux et ensembles de données pour faciliter la recherche et le développement.
  • Il prend en charge des tâches telles que les quiz et le raisonnement, et peut générer des réponses précises à partir d'une base de connaissances.
  • Aucune modification de la capacité de traitement de texte du modèle de base, qui conserve ses performances initiales.

 

Utiliser l'aide

KBLaM est un outil de recherche open source dont le code et la documentation sont disponibles sur GitHub. Vous trouverez ci-dessous un guide d'installation et d'utilisation détaillé pour aider les utilisateurs à démarrer rapidement.

Processus d'installation

  1. Préparation de l'environnement
    Requiert Python 3.8 ou plus et Git ; Linux ou Windows recommandé. Si vous travaillez avec des bases de connaissances à grande échelle, un GPU NVIDIA (par exemple, A100 avec 80 Go ou plus de mémoire vidéo) est recommandé.
  2. Télécharger l'entrepôt
    Ouvrez un terminal et entrez la commande Clone KBLaM repository :
git clone https://github.com/microsoft/KBLaM.git

Accédez au catalogue de projets :

cd KBLaM
  1. Installation des dépendances
    Exécutez la commande suivante pour installer les bibliothèques requises :
pip install -e .

Cela installera PyTorch, Transformers et d'autres dépendances. Si vous avez besoin d'utiliser le modèle Llama, vous devrez également installer l'outil Hugging Face et vous connecter :

pip install huggingface_hub
huggingface-cli login

Pour vous connecter, vous devez générer un jeton à partir de Hugging Face.

  1. Vérifier l'installation
    Exécutez le script de test pour confirmer que l'environnement est correct :
python -m kblam.test

Si aucune erreur n'est signalée, l'installation a réussi.

Principales fonctions

1. créer une base de connaissances

Le KBLaM doit transformer les connaissances externes en paires de vecteurs.

  • déplacer: :
  • Préparer le fichier de la base de connaissances (par exemple au format JSON), exemple :
{"entity": "AI", "description": "人工智能是模拟人类智能的技术"}
  • Générer des vecteurs :
python dataset_generation/generate_kb_embeddings.py --input knowledge.json --output embeddings.npy
  • Les modèles d'intégration pris en charge sont les suivants text-embedding-ada-002 répondre en chantant all-MiniLM-L6-v2. Fichiers de sortie embeddings.npy est un vecteur de connaissances.

2. l'intégration des connaissances dans les modèles

Intégration de vecteurs de connaissance dans la couche d'attention d'un grand modèle.

  • déplacer: :
  • Télécharger les modèles pris en charge (par exemple meta-llama/Meta-Llama-3-8B-Instruct).
  • Exécutez le script intégré :
python src/kblam/integrate.py --model meta-llama/Meta-Llama-3-8B-Instruct --kb embeddings.npy --output enhanced_model
  • Exporter un catalogue de modèles amélioré enhanced_model.

3. test des modèles améliorés

Charger le modèle d'amélioration et tester l'effet.

  • déplacer: :
  • Exécutez le script de test :
python src/kblam/evaluate.py --model enhanced_model --question "AI是什么?"
  • Le modèle renvoie la réponse suivante : "L'IA est une technologie qui simule l'intelligence humaine".

Fonction en vedette Fonctionnement

Mise à jour dynamique de la base de connaissances

KBLaM permet de mettre à jour la base de connaissances à tout moment sans réentraîner le modèle.

  • déplacer: :
  • Modifier le fichier de la base de connaissances pour y ajouter de nouvelles entrées :
{"entity": "KBLaM", "description": "微软开发的知识增强工具"}
  • Générer un nouveau vecteur :
python dataset_generation/generate_kb_embeddings.py --input updated_knowledge.json --output new_embeddings.npy
  • Mettre à jour le modèle :
python src/kblam/integrate.py --model enhanced_model --kb new_embeddings.npy --output updated_model
  • Le modèle mis à jour est immédiatement prêt à utiliser les nouvelles connaissances.

Adaptateurs de formation

Former des adaptateurs pour optimiser les effets d'intégration des connaissances.

  • déplacer: :
  • Formation avec des ensembles de données synthétiques :
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
  • Un point de terminaison Azure OpenAI est nécessaire pour générer des données synthétiques. dataset_generation/gen_synthetic_data.py.

expérience de récurrence

Le dépôt fournit des scripts expérimentaux qui reproduisent les résultats de l'article.

  • déplacer: :
  • Accédez au catalogue d'expériences :
cd experiments
  • Exécutez le script :
python run_synthetic_experiments.py
  • Les clés Azure OpenAI doivent être configurées pour générer des ensembles de données synthétiques.

mise en garde

  • Soutien au modèleSoutien actuel : Soutien actuel Meta-Llama-3-8B-Instruct,Llama-3.2-1B-Instruct répondre en chantant Phi-3-mini-4k-instruct. D'autres modèles doivent être modifiés src/kblam/models Le code de l'adaptateur dans le
  • exigences en matière de matérielLes expériences à petite échelle peuvent être exécutées sur des unités centrales de traitement.
  • Question FeedbackEn cas de problème, vérifiez SUPPORT.md ou soumettre un problème sur GitHub.

 

scénario d'application

  1. expérience de recherche
    Les chercheurs peuvent utiliser KBLaM pour tester la manière dont les grands modèles gèrent l'expertise, par exemple en intégrant une base de connaissances dans le domaine de la chimie, afin d'améliorer la précision des réponses du modèle.
  2. Questions et réponses sur les entreprises
    Les développeurs peuvent transformer les documents de l'entreprise en une base de connaissances et mettre au point des assistants intelligents pour répondre rapidement aux questions des employés ou des clients.
  3. Aides pédagogiques
    Les enseignants peuvent intégrer des supports de cours dans KBLaM pour créer un outil qui répond aux questions des étudiants et améliore l'apprentissage.

 

QA

  1. En quoi le KBLaM diffère-t-il du "fine tuning" traditionnel ?
    KBLaM ne modifie pas le modèle de base et n'entraîne que la connaissance d'intégration de l'adaptateur. Le réglage fin traditionnel nécessite le réentraînement de l'ensemble du modèle, ce qui est plus coûteux.
  2. Est-il adapté à un environnement de production ?
    KBLaM est un projet de recherche. Les réponses peuvent être inexactes si la base de connaissances est trop différente des données de formation. La recommandation officielle est de ne l'utiliser qu'à des fins de recherche.
  3. Comment puis-je évaluer la performance du KBLaM ?
    Évalué en fonction de la précision (degré d'exactitude de la récupération des connaissances), du taux de rejet (identification correcte des questions sans réponse), de la précision et de la mémorisation des réponses.
© déclaration de droits d'auteur
AiPPT

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...