KBLaM: усовершенствованный инструмент с открытым исходным кодом для встраивания внешних знаний в большие модели

Общее введение

KBLaM - это проект с открытым исходным кодом, разработанный компанией Microsoft, полное название - "Модель дополненного языка базы знаний" (Knowledge Base Augmented Language Model). Он преобразует внешние знания в векторы и встраивает их в слой внимания большой модели, так что модель может напрямую использовать эти знания для ответов на вопросы или рассуждений. По сравнению с традиционной генерацией, дополненной поиском (RAG), она не требует дополнительного модуля поиска, а по сравнению с контекстным обучением ее вычислительные затраты растут линейно с размером базы знаний, а не с квадратичным шагом. KBLaM имеет открытый исходный код на GitHub, ориентирован в первую очередь на исследователей и разработчиков и подходит для изучения того, как сделать большие модели более эффективными в обработке внешней информации. В настоящее время он поддерживает такие модели, как семейство Llama от Meta и Phi-3 от Microsoft.

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

 

Список функций

  • Преобразование внешних баз знаний в пары ключ-значение-вектор для улучшения модели.
  • Встраивание знаний в большие модели с помощью механизма прямоугольного внимания.
  • Поддерживает динамическое обновление базы знаний без переобучения модели.
  • Вычислительные затраты растут линейно с размером базы знаний и являются эффективными.
  • Открытый исходный код, экспериментальные скрипты и наборы данных для содействия исследованиям и разработкам.
  • Поддерживает такие задачи, как опрос и рассуждение, и может генерировать точные ответы на основе базы знаний.
  • Возможности обработки текста базовой модели не изменяются, сохраняя первоначальную производительность.

 

Использование помощи

KBLaM - это исследовательский инструмент с открытым исходным кодом, код и документация которого доступны на GitHub. Ниже приведено подробное руководство по установке и использованию, которое поможет пользователям быстро начать работу.

Процесс установки

  1. Подготовка среды
    Требуется Python 3.8 или выше и Git; рекомендуется Linux или Windows. Если вы работаете с крупными базами знаний, рекомендуется использовать графический процессор NVIDIA (например, A100 с 80 ГБ или более видеопамяти).
  2. Скачать Хранилище
    Откройте терминал и введите команду Clone KBLaM repository:
git clone https://github.com/microsoft/KBLaM.git

Перейдите в каталог проектов:

cd KBLaM
  1. Установка зависимостей
    Выполните следующую команду для установки необходимых библиотек:
pip install -e .

Это позволит установить PyTorch, Transformers и другие зависимости. Если вам нужно использовать модель Llama, вам также потребуется установить инструмент Hugging Face и войти в систему:

pip install huggingface_hub
huggingface-cli login

Чтобы войти в систему, вам нужно сгенерировать токен от Hugging Face.

  1. Проверка установки
    Запустите тестовый сценарий, чтобы убедиться, что со средой все в порядке:
python -m kblam.test

Если сообщений об ошибках нет, значит, установка прошла успешно.

Основные функции

1. Создание базы знаний

KBLaM необходимо преобразовать внешние знания в векторные пары.

  • перейти::
  • Подготовьте файл базы знаний (например, в формате JSON), пример:
{"entity": "AI", "description": "人工智能是模拟人类智能的技术"}
  • Создайте векторы:
python dataset_generation/generate_kb_embeddings.py --input knowledge.json --output embeddings.npy
  • Поддерживаются следующие модели встраивания text-embedding-ada-002 ответить пением all-MiniLM-L6-v2. Выходные файлы embeddings.npy это вектор знаний.

2. Встраивание знаний в модели

Встраивание векторов знаний в слой внимания большой модели.

  • перейти::
  • Загрузите поддерживаемые модели (например. meta-llama/Meta-Llama-3-8B-Instruct).
  • Запустите встроенный скрипт:
python src/kblam/integrate.py --model meta-llama/Meta-Llama-3-8B-Instruct --kb embeddings.npy --output enhanced_model
  • Экспорт расширенного каталога моделей enhanced_model.

3. тестирование усовершенствованных моделей

Загрузите улучшенную модель и проверьте эффект.

  • перейти::
  • Запустите сценарий тестирования:
python src/kblam/evaluate.py --model enhanced_model --question "AI是什么?"
  • Модель ответит: "ИИ - это технология, имитирующая человеческий интеллект".

Функциональное управление

Динамическое обновление базы знаний

KBLaM поддерживает обновление базы знаний в любое время без переобучения модели.

  • перейти::
  • Измените файл базы знаний, чтобы добавить новые записи:
{"entity": "KBLaM", "description": "微软开发的知识增强工具"}
  • Создайте новый вектор:
python dataset_generation/generate_kb_embeddings.py --input updated_knowledge.json --output new_embeddings.npy
  • Обновите модель:
python src/kblam/integrate.py --model enhanced_model --kb new_embeddings.npy --output updated_model
  • Обновленная модель сразу же готова к использованию новых знаний.

Учебные адаптеры

Обучение адаптеров для оптимизации эффектов внедрения знаний.

  • перейти::
  • Обучение с использованием синтетических наборов данных:
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, см. dataset_generation/gen_synthetic_data.py.

рекуррентный эксперимент

В репозитории представлены экспериментальные скрипты, воспроизводящие результаты статьи.

  • перейти::
  • Перейдите в каталог экспериментов:
cd experiments
  • Запустите скрипт:
python run_synthetic_experiments.py
  • Ключи Azure OpenAI должны быть настроены для создания синтетических наборов данных.

предостережение

  • Поддержка модели: Текущая поддержка Meta-Llama-3-8B-Instruct, иLlama-3.2-1B-Instruct ответить пением Phi-3-mini-4k-instruct. Необходимо модифицировать дополнительные модели src/kblam/models Код адаптера в
  • требования к оборудованию: Для обработки больших баз знаний требуются высокопроизводительные графические процессоры, в то время как небольшие эксперименты можно проводить на центральных процессорах.
  • Вопрос Обратная связь: В случае возникновения проблем проверьте SUPPORT.md или отправьте проблему на GitHub.

 

сценарий применения

  1. исследовательский эксперимент
    Исследователи могут использовать KBLaM для проверки того, как большие модели обрабатывают экспертные знания, например, встраивая базу знаний в области химии, чтобы повысить точность ответа модели.
  2. Корпоративные вопросы и ответы
    Разработчики могут превратить документы компании в базу знаний и создать интеллектуальных помощников, которые быстро ответят на вопросы сотрудников или клиентов.
  3. Учебные пособия
    Преподаватели могут внедрять материалы курса в KBLaM, чтобы создать инструмент, отвечающий на вопросы студентов и способствующий обучению.

 

QA

  1. Чем KBLaM отличается от традиционного тонкого тюнинга?
    KBLaM не изменяет базовую модель и обучает только знаниям о встраивании адаптера. Традиционная тонкая настройка требует переобучения всей модели, что требует больших затрат.
  2. Подходит ли он для производственной среды?
    KBLaM - это исследовательский проект. Ответы могут быть неточными, если база знаний слишком отличается от обучающих данных. Официальная рекомендация - использовать его только для исследований.
  3. Как оценить эффективность KBLaM?
    Оценивается по точности (насколько правильно получены знания), проценту отказов (правильно ли определены вопросы, на которые нельзя ответить), точности и запоминанию ответов.
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...