KBLaM: una herramienta mejorada de código abierto para incrustar conocimientos externos en grandes modelos
Últimos recursos sobre IAPublicado hace 4 meses Círculo de intercambio de inteligencia artificial 1.6K 00
Introducción general
KBLaM es un proyecto de código abierto desarrollado por Microsoft, cuyo nombre completo es "Knowledge Base augmented Language Model" (Modelo de Lenguaje Aumentado de Base de Conocimiento). Transforma el conocimiento externo en vectores y los incrusta en la capa de atención de un gran modelo, de modo que éste puede utilizar directamente dicho conocimiento para responder a preguntas o razonamientos. En comparación con la generación aumentada por recuperación (RAG) tradicional, no requiere un módulo de recuperación adicional, y en comparación con el aprendizaje contextual, su coste computacional crece linealmente con el tamaño de la base de conocimientos, en lugar de hacerlo en pasos al cuadrado. KBLaM es de código abierto en GitHub, y está dirigido principalmente a investigadores y desarrolladores, y es adecuado para explorar cómo hacer que los grandes modelos sean más eficientes en el procesamiento de información externa. Actualmente es compatible con modelos como la familia Llama de Meta y Phi-3 de Microsoft.

Lista de funciones
- Transformación de bases de conocimiento externas en pares de vectores clave-valor para la mejora de modelos.
- Incorporación de conocimientos a grandes modelos mediante el mecanismo de atención rectangular.
- Admite la actualización dinámica de la base de conocimientos sin necesidad de volver a entrenar el modelo.
- El coste computacional crece linealmente con el tamaño de la base de conocimientos y es eficiente.
- Código fuente abierto, scripts experimentales y conjuntos de datos para facilitar la investigación y el desarrollo.
- Admite tareas como el cuestionario y el razonamiento, y puede generar respuestas precisas a partir de una base de conocimientos.
- No se modifica la capacidad de tratamiento de texto del modelo base, manteniendo las prestaciones originales.
Utilizar la ayuda
KBLaM es una herramienta de investigación de código abierto con código y documentación disponibles a través de GitHub. A continuación se incluye una guía detallada de instalación y uso para ayudar a los usuarios a empezar rápidamente.
Proceso de instalación
- Preparar el entorno
Requiere Python 3.8 o superior y Git; se recomienda Linux o Windows. Si trabajas con bases de conocimiento a gran escala, se recomienda una GPU NVIDIA (por ejemplo, A100 con 80 GB o más de memoria de vídeo). - Descargar almacén
Abra un terminal e introduzca el comando Clonar repositorio KBLaM:
git clone https://github.com/microsoft/KBLaM.git
Vaya al catálogo de proyectos:
cd KBLaM
- Instalación de dependencias
Ejecute el siguiente comando para instalar las bibliotecas necesarias:
pip install -e .
Esto instalará PyTorch, Transformers, y otras dependencias. Si necesitas usar el modelo Llama, también necesitarás instalar la herramienta Hugging Face e iniciar sesión:
pip install huggingface_hub
huggingface-cli login
Para iniciar sesión, debe generar un token de Hugging Face.
- Verificar la instalación
Ejecute el script de prueba para confirmar que el entorno es correcto:
python -m kblam.test
Si no aparece ningún error, la instalación se ha realizado correctamente.
Funciones principales
1. Crear una base de conocimientos
KBLaM necesita transformar el conocimiento externo en pares de vectores.
- mover::
- Prepare el archivo de la base de conocimientos (por ejemplo, en formato JSON), ejemplo:
{"entity": "AI", "description": "人工智能是模拟人类智能的技术"}
- Generar vectores:
python dataset_generation/generate_kb_embeddings.py --input knowledge.json --output embeddings.npy
- Los modelos de incrustación admitidos son
text-embedding-ada-002
responder cantandoall-MiniLM-L6-v2
. Ficheros de salidaembeddings.npy
es un vector de conocimiento.
2. Integrar los conocimientos en los modelos
Incrustación de vectores de conocimiento en la capa de atención de un gran modelo.
- mover::
- Descargar los modelos compatibles (por ejemplo
meta-llama/Meta-Llama-3-8B-Instruct
). - Ejecute el script incrustado:
python src/kblam/integrate.py --model meta-llama/Meta-Llama-3-8B-Instruct --kb embeddings.npy --output enhanced_model
- Exportar un catálogo de modelos mejorado
enhanced_model
.
3. Prueba de modelos mejorados
Carga el modelo de mejora y comprueba el efecto.
- mover::
- Ejecute el script de prueba:
python src/kblam/evaluate.py --model enhanced_model --question "AI是什么?"
- El modelo devolverá: "La IA es tecnología que simula la inteligencia humana".
Función destacada Operación
Actualización dinámica de la base de conocimientos
KBLaM permite actualizar la base de conocimientos en cualquier momento sin necesidad de volver a entrenar el modelo.
- mover::
- Modificar el archivo de la base de conocimientos para añadir nuevas entradas:
{"entity": "KBLaM", "description": "微软开发的知识增强工具"}
- Generar un nuevo vector:
python dataset_generation/generate_kb_embeddings.py --input updated_knowledge.json --output new_embeddings.npy
- Actualiza el modelo:
python src/kblam/integrate.py --model enhanced_model --kb new_embeddings.npy --output updated_model
- El modelo actualizado está inmediatamente preparado para utilizar los nuevos conocimientos.
Adaptadores de formación
Formación de adaptadores para optimizar los efectos de la incorporación de conocimientos.
- mover::
- Entrenamiento con conjuntos de datos sintéticos:
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
- Azure OpenAI endpoints son necesarios para generar datos sintéticos, véase
dataset_generation/gen_synthetic_data.py
.
experimento de recurrencia
El repositorio proporciona scripts experimentales que reproducen los resultados del artículo.
- mover::
- Ir al catálogo de experimentos:
cd experiments
- Ejecuta el script:
python run_synthetic_experiments.py
- Es necesario configurar las claves de Azure OpenAI para generar conjuntos de datos sintéticos.
advertencia
- Modelo de asistencia: Ayuda actual
Meta-Llama-3-8B-Instruct
yLlama-3.2-1B-Instruct
responder cantandoPhi-3-mini-4k-instruct
. Es necesario modificar otros modelossrc/kblam/models
El código del adaptador en el - requisitos de hardwareLa GPU: se necesitan GPU de alto rendimiento para procesar grandes bases de conocimiento, mientras que los experimentos más pequeños pueden ejecutarse en CPU.
- PreguntasEn caso de problemas, compruebe
SUPPORT.md
o envíe una incidencia a GitHub.
escenario de aplicación
- experimento de investigación
Los investigadores pueden utilizar KBLaM para probar cómo los grandes modelos manejan los conocimientos especializados, como la incorporación de una base de conocimientos en el campo de la química, para mejorar la precisión de las respuestas del modelo. - Preguntas y respuestas
Los desarrolladores pueden convertir los documentos de la empresa en una base de conocimientos y desarrollar asistentes inteligentes para responder rápidamente a las preguntas de empleados o clientes. - Ayudas educativas
Los profesores pueden integrar los materiales del curso en KBLaM para crear una herramienta que responda a las preguntas de los alumnos y mejore el aprendizaje.
CONTROL DE CALIDAD
- ¿En qué se diferencia KBLaM del ajuste fino tradicional?
KBLaM no modifica el modelo base y sólo entrena los conocimientos de incrustación del adaptador. El ajuste tradicional requiere volver a entrenar todo el modelo, lo que resulta más costoso. - ¿Es adecuado para un entorno de producción?
KBLaM es un proyecto de investigación. Las respuestas pueden ser inexactas si la base de conocimientos difiere demasiado de los datos de entrenamiento. La recomendación oficial es utilizarlo sólo para investigación. - ¿Cómo evaluar el rendimiento de KBLaM?
Se evalúa en función de la exactitud (el grado en que se recuperan correctamente los conocimientos), el índice de rechazo (si se identifican correctamente las preguntas sin respuesta) y la precisión y el recuerdo de las respuestas.
© declaración de copyright
El artículo está protegido por derechos de autor y no debe reproducirse sin autorización.
Artículos relacionados
Sin comentarios...