Между общим LLMS и векторными магазинами появился большой разрыв, которые предоставляют им контекстную информацию. Объединение этих систем является важным шагом в заземлении систем ИИ в эффективных, фактических областях, где они используются не только для их общности, но и для их специфичности и уникальности. С этой целью мы рады открыть набор инструментов для адаптированной языковой модели Arcee Domain (DALM) для разработчиков, чтобы создать верх нашу домену с открытым исходным кодом (DPT). Мы считаем, что наши усилия помогут, когда мы начнем следующее этап языкового моделирования, где организации глубоко адаптируют ИИ для работы в соответствии с их уникальной интеллектуальной собственностью и мировоззрением.
Запрос пример Далмс, созданный командой Arcee.
| Dalm-Patent | Dalm-Pubmed | Dalm-Sec | Dalm-Yours |
|---|---|---|---|
Этот репозиторий в первую очередь содержит код для тонкой настройки полностью дифференциальной архитектуры с дополненным поколением (Rag-End2end).
Впервые в литературе мы изменили начальную модель Rag-End2end (TACL Paper, реализация Huggingface), чтобы работать с языковыми моделями только для декодера, такими как Llama, Falcon или GPT. Мы также включили в себя негативную концепцию наряду с маргинализацией Rag, чтобы сделать весь процесс эффективным .
Внутри тренировочной папки вы найдете два кода, чтобы обучить тряпку и ретривер с контрастным обучением.
Все оценки, связанные с ретривером и генератором, расположены в папке Eval.
Кроме того, у нас есть коды обработки данных и код генерации синтетических данных в папке наборов данных.
Чтобы выполнить обучение и оценку как для модели ретривера, так и для новой модели Rag-E2E, пожалуйста, придерживайтесь следующих шагов.
System Reqs зависит от модели ретривера, модели генератора и размера партии. Но для справки (e2e Rag) мы использовали следующее для наших экспериментов (результаты оценки ниже):
BAAI/bge-large-enmeta-llama/Llama-2-7b-hfЭто заняло 7 часов на одном графическом процессоре A100 (80 ГБ).
Вы можете установить это репо непосредственно через pip install indomain
В качестве альтернативы, для разработки или исследований, вы можете клонировать и установить репо локально:
git clone https://github.com/arcee-ai/DALM.git && cd DALM
pip install --upgrade -e .Это установит Dalm Repo и все необходимые зависимости.
Убедитесь, что все установлено правильно с помощью dalm version . На неинтелляционном Mac вам может потребоваться понизить библиотеку transformers : pip install transformers==4.30 .
Вы можете запустить dalm qa-gen <path-to-dataset> чтобы предварительно обрабатывать свой набор данных для обучения. См. dalm qa-gen --help для получения дополнительной информации
Если у вас нет набора данных, вы можете начать с нашего
# Note - our dataset already has queries and answers, so you don't actually need to run this.
# replace `toy_dataset_train.csv` with your dataset of titles and passages
dalm qa-gen dalm/datasets/toy_data_train.csvPassage , Query (и Answer при запуске E2E). Вы можете использовать сценарий obster_answer_generation.py для генерации этого CSV.BAAI/bge-large-en в качестве ретривера по умолчанию и используем meta-llama/Llama-2-7b-hf в качестве генератора по умолчанию. Код предназначен для совместимости с любой моделью встраивания или авторегрессивной модели, доступной в репозитории модели обнимающего лица по адресу https://huggingface.co/models. Вы можете напрямую использовать наши сценарии, если хотите, или вы можете использовать dalm CLI. Аргументы для обоих идентичны
Тренируйте BAAI/bge-large-en Retriever с контрастным обучением.
python dalm/training/retriever_only/train_retriever_only.py
--dataset_path " ./dalm/datasets/toy_data_train.csv "
--retriever_name_or_path " BAAI/bge-large-en "
--output_dir " retriever_only_checkpoints "
--use_peft
--with_tracking
--report_to all
--per_device_train_batch_size 150или
dalm train-retriever-only " BAAI/bge-large-en " " ./dalm/datasets/toy_data_train.csv "
--output-dir " retriever_only_checkpoints "
--use-peft
--with-tracking
--report-to all
--per-device-train-batch-size 150 Для всех доступных аргументов и вариантов см. dalm train-retriever-only --help
Поезд Llama-2-7b Generator совместно с ретривером BAAI/bge-large-en .
python dalm/training/rag_e2e/train_rage2e.py
--dataset_path " ./dalm/datasets/toy_data_train.csv "
--retriever_name_or_path " BAAI/bge-large-en "
--generator_name_or_path " meta-llama/Llama-2-7b-hf "
--output_dir " rag_e2e_checkpoints "
--with_tracking
--report_to all
--per_device_train_batch_size 20или
dalm train-rag-e2e
" ./dalm/datasets/toy_data_train.csv "
" BAAI/bge-large-en "
" meta-llama/Llama-2-7b-hf "
--output-dir " rag_e2e_checkpoints "
--with-tracking
--report-to all
--per-device-train-batch-size 20 Для всех доступных аргументов и вариантов см. dalm train-rag-e2e --help
В целом ретривер обучен находить наиболее важные отрывки в корпусе, данный запросом.
Учитывая набор данных тестирования на землю, который представляет собой CSV, содержащий 200 000 линий, содержащий патентные рефераты, и, что более важно, этот набор данных оценки не присутствовал в наборе учебных данных, приведенные ниже перечисленные шаги были выполнены:
recall и hit rate . | Тип ретривера | Отзывать | Скорость попадания |
|---|---|---|
| Простой ретривер | 0,45984 | 0,45984 |
| Ретривер с контрастным обучением | 0,46037 | 0,46038 |
| Понимание End2end | 0,73634 | 0,73634 |
Чтобы запустить Retriever только Eval (убедитесь, что у вас есть контрольные точки в корне проекта)
python dalm/eval/eval_retriever_only.py
--dataset_path qa_pairs_test.csv
--retriever_name_or_path " BAAI/bge-large-en "
--passage_column_name Abstract
--query_column_name Question
--retriever_peft_model_path retriever_only_checkpointsили
dalm eval-retriever qa_pairs_test.csv
--retriever-name-or-path " BAAI/bge-large-en "
--passage-column-name Abstract
--query-column-name Question
--retriever-peft-model-path retriever_only_checkpoints См. dalm eval-retriever --help для всех доступных аргументов
Для E2E Eval
python dalm/eval/eval_rag.py
--dataset_path qa_pairs_test_2.csv
--retriever_name_or_path " BAAI/bge-large-en "
--generator_name_or_path " meta-llama/Llama-2-7b-hf "
--passage_column_name Abstract
--query_column_name Question
--answer_column_name Answer
--evaluate_generator
--query_batch_size 5
--retriever_peft_model_path rag_e2e_checkpoints/retriever
--generator_peft_model_path rag_e2e_checkpoints/generatorили
dalm eval-rag qa_pairs_test.csv
--retriever-name-or-path " BAAI/bge-large-en "
--generator-name-or-path " meta-llama/Llama-2-7b-hf "
--retriever-peft-model-path rag_e2e_checkpoints/retriever
--generator-peft-model-path rag_e2e_checkpoints/generator
--passage-column-name Abstract
--query-column-name Question
--answer-column-name Answer
--query-batch-size 5 См. dalm eval-rag --help для всех доступных аргументов
Смотрите