Introdução geral
O KBLaM é um projeto de código aberto desenvolvido pela Microsoft, cujo nome completo é "Knowledge Base Augmented Language Model" (Modelo de linguagem aumentada da base de conhecimento). Ele transforma o conhecimento externo em vetores e os incorpora à camada de atenção de um modelo grande, de modo que o modelo possa usar diretamente esse conhecimento para responder a perguntas ou raciocinar. Em comparação com a geração tradicional de recuperação aumentada (RAG), ele não exige um módulo de recuperação adicional e, em comparação com o aprendizado contextual, seu custo computacional aumenta linearmente com o tamanho da base de conhecimento, em vez de aumentar em etapas quadradas. O KBLaM tem código aberto no GitHub e destina-se principalmente a pesquisadores e desenvolvedores, sendo adequado para explorar como tornar modelos grandes mais eficientes no processamento de informações externas. Atualmente, ele oferece suporte a modelos como a família Llama da Meta e o Phi-3 da Microsoft.
Lista de funções
- Transformação de bases de conhecimento externas em pares de vetores de valores-chave para aprimoramento de modelos.
- Incorporação de conhecimento em modelos grandes usando o mecanismo de atenção retangular.
- Oferece suporte à atualização dinâmica da base de conhecimento sem precisar treinar novamente o modelo.
- O custo computacional cresce linearmente com o tamanho da base de conhecimento e é eficiente.
- Código-fonte aberto, scripts experimentais e conjuntos de dados para facilitar a pesquisa e o desenvolvimento.
- Oferece suporte a tarefas como questionários e raciocínio, e pode gerar respostas precisas com base em uma base de conhecimento.
- Nenhuma modificação no recurso de processamento de texto do modelo básico, mantendo o desempenho original.
Usando a Ajuda
O KBLaM é uma ferramenta de pesquisa de código aberto com código e documentação disponíveis no GitHub. Abaixo está um guia detalhado de instalação e uso para ajudar os usuários a começar rapidamente.
Processo de instalação
- Preparação do ambiente
Requer Python 3.8 ou superior e Git; recomenda-se Linux ou Windows. Se estiver trabalhando com bases de conhecimento em grande escala, recomenda-se uma GPU NVIDIA (por exemplo, A100 com 80 GB ou mais de memória de vídeo). - Download do Warehouse
Abra um terminal e digite o comando Clone KBLaM repository (Clonar repositório KBLaM):
git clone https://github.com/microsoft/KBLaM.git
Vá para o catálogo de projetos:
cd KBLaM
- Instalação de dependências
Execute o seguinte comando para instalar as bibliotecas necessárias:
pip install -e .
Isso instalará o PyTorch, o Transformers e outras dependências. Se precisar usar o modelo Llama, você também precisará instalar a ferramenta Hugging Face e fazer login:
pip install huggingface_hub
huggingface-cli login
Para fazer login, você precisa gerar um token do Hugging Face.
- Verificar a instalação
Execute o script de teste para confirmar que o ambiente está OK:
python -m kblam.test
Se nenhum erro for relatado, a instalação foi bem-sucedida.
Funções principais
1. criação de uma base de conhecimento
O KBLaM precisa transformar o conhecimento externo em pares de vetores.
- mover::
- Prepare o arquivo da base de conhecimento (por exemplo, no formato JSON), por exemplo:
{"entity": "AI", "description": "人工智能是模拟人类智能的技术"}
- Gerar vetores:
python dataset_generation/generate_kb_embeddings.py --input knowledge.json --output embeddings.npy
- Os modelos de incorporação compatíveis incluem
text-embedding-ada-002
responder cantandoall-MiniLM-L6-v2
. Arquivos de saídaembeddings.npy
é um vetor de conhecimento.
2. incorporação de conhecimento em modelos
Incorporação de vetores de conhecimento na camada de atenção de um modelo grande.
- mover::
- Faça o download dos modelos compatíveis (por exemplo
meta-llama/Meta-Llama-3-8B-Instruct
). - Execute o script incorporado:
python src/kblam/integrate.py --model meta-llama/Meta-Llama-3-8B-Instruct --kb embeddings.npy --output enhanced_model
- Exportar um catálogo de modelos aprimorado
enhanced_model
.
3. teste de modelos aprimorados
Carregue o modelo de aprimoramento e teste o efeito.
- mover::
- Execute o script de teste:
python src/kblam/evaluate.py --model enhanced_model --question "AI是什么?"
- O modelo retornará: "IA é uma tecnologia que simula a inteligência humana".
Operação da função em destaque
Atualização dinâmica da base de conhecimento
O KBLaM permite a atualização da base de conhecimento a qualquer momento, sem necessidade de retreinamento do modelo.
- mover::
- Modifique o arquivo da base de conhecimento para adicionar novas entradas:
{"entity": "KBLaM", "description": "微软开发的知识增强工具"}
- Gerar um novo vetor:
python dataset_generation/generate_kb_embeddings.py --input updated_knowledge.json --output new_embeddings.npy
- Atualizar o modelo:
python src/kblam/integrate.py --model enhanced_model --kb new_embeddings.npy --output updated_model
- O modelo atualizado está imediatamente pronto para usar o novo conhecimento.
Adaptadores de treinamento
Treinamento de adaptadores para otimizar os efeitos de incorporação de conhecimento.
- mover::
- Treinamento com conjuntos de dados 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
- Os pontos de extremidade do Azure OpenAI são necessários para gerar dados sintéticos, consulte
dataset_generation/gen_synthetic_data.py
.
experimento de recorrência
O repositório fornece scripts experimentais que reproduzem os resultados do artigo.
- mover::
- Acesse o catálogo de experimentos:
cd experiments
- Execute o script:
python run_synthetic_experiments.py
- As chaves do Azure OpenAI precisam ser configuradas para gerar conjuntos de dados sintéticos.
advertência
- Suporte ao modeloSuporte atual
Meta-Llama-3-8B-Instruct
eLlama-3.2-1B-Instruct
responder cantandoPhi-3-mini-4k-instruct
. Outros modelos precisam ser modificadossrc/kblam/models
O código do adaptador no - Requisitos de hardwareGPUs de alto desempenho são necessárias para processar grandes bases de conhecimento, enquanto experimentos de pequena escala podem ser executados em CPUs.
- Feedback da perguntaEm caso de problemas, verifique
SUPPORT.md
ou enviar um problema no GitHub.
cenário do aplicativo
- experimento de pesquisa
Os pesquisadores podem usar o KBLaM para testar como os modelos grandes lidam com a experiência, como a incorporação de uma base de conhecimento no campo da química, para melhorar a precisão das respostas do modelo. - Perguntas e respostas corporativas
Os desenvolvedores podem transformar os documentos da empresa em uma base de conhecimento e desenvolver assistentes inteligentes para responder rapidamente às perguntas de funcionários ou clientes. - Auxílios educacionais
Os professores podem incorporar materiais do curso ao KBLaM para criar uma ferramenta que responda às perguntas dos alunos e aprimore o aprendizado.
QA
- Qual é a diferença entre o KBLaM e o ajuste fino tradicional?
O KBLaM não modifica o modelo básico e treina apenas o conhecimento de incorporação do adaptador. O ajuste fino tradicional exige o retreinamento de todo o modelo, o que é mais caro. - Ele é adequado para um ambiente de produção?
O KBLaM é um projeto de pesquisa. As respostas podem ser imprecisas se a base de conhecimento for muito diferente dos dados de treinamento. A recomendação oficial é usá-lo apenas para pesquisa. - Como posso avaliar o desempenho do KBLaM?
Avaliado pela precisão (quão corretamente o conhecimento é recuperado), pela taxa de rejeição (se as perguntas sem resposta são identificadas corretamente) e pela precisão e recuperação das respostas.