Es ist ein großer Riss zwischen allgemeinen LLMs und den Vektor -Stores aufgetreten, die ihnen kontextbezogene Informationen liefern. Die Vereinigung dieser Systeme ist ein wichtiger Schritt bei der Erde von KI -Systemen in effizienten, sachlichen Bereichen, in denen sie nicht nur für ihre Allgemeinheit, sondern auch für ihre Spezifität und Einzigartigkeit verwendet werden. Zu diesem Zweck freuen wir uns, das DALM -Toolkit (ARCEE Domain Adapted Language Model) für Entwickler auf unserem Arcee Open Source Domain (DPT) LLMs aufzubauen. Wir glauben, dass unsere Bemühungen helfen werden, wenn wir die nächste Phase der Sprachmodellierung beginnen, in der Organisationen die KI zutiefst nach ihrem einzigartigen geistigen Eigentum und ihrer Weltanschauung anpassen.
Abfragen Beispiel Dalms vom Arcee -Team erstellt.
| Dalm-Patent | Dalm-PubMed | Dalm-Sec | Dalm-Yours |
|---|---|---|---|
Dieses Repository enthält in erster Linie Code für die Feinabstimmung einer vollständig differentiellen Architektur für Augmented Generation (RAG-End2end).
Zum ersten Mal in der Literatur haben wir das anfängliche Rag-End2end-Modell (TaCl Paper, HuggingFace-Implementierung) so geändert, dass sie mit Decodierer-Sprachmodellen wie Lama, Falcon oder GPT zusammenarbeiten. Wir haben auch das negative In-Batch-Konzept zusammen mit der Marginalisierung des Rags eingebaut, um den gesamten Prozess effizient zu machen.
Im Trainingsordner finden Sie zwei Codes, um den Rag-End2end und Retriever mit kontrastivem Lernen zu trainieren.
Alle Bewertungen im Zusammenhang mit dem Retriever und dem Generator befinden sich im Eval -Ordner.
Darüber hinaus verfügen wir über Datenverarbeitungscodes und synthetische Datenerzeugungscode im Datasets -Ordner.
Um sowohl für das Retriever-Modell als auch für das neue Rag-E2E-Modell Schulungen und Bewertung durchzuführen, halten Sie sich bitte an die folgenden Schritte.
Das System -REQS hängt vom Retrievermodell, des Generatormodells und der Chargengröße ab. Als Referenz (E2E RAG) haben wir jedoch für unsere Experimente Folgendes verwendet (Bewertung der folgenden Ergebnisse):
BAAI/bge-large-enmeta-llama/Llama-2-7b-hfDies dauerte 7 Stunden bei einer einzigen A100 GPU (80 GB).
Sie können dieses Repo direkt über pip install indomain
Alternativ können Sie für die Entwicklung oder Forschung das Repo lokal klonen und installieren:
git clone https://github.com/arcee-ai/DALM.git && cd DALM
pip install --upgrade -e .Dadurch wird das DALM -Repo und alle notwendigen Abhängigkeiten installiert.
Stellen Sie sicher, dass die Dinge korrekt installiert werden, indem Sie dalm version ausführen. Auf einem Nicht-Untzel-Mac müssen Sie möglicherweise transformers -Bibliothek herabstufen: pip install transformers==4.30 .
Sie können dalm qa-gen <path-to-dataset> ausführen, um Ihren Datensatz für das Training vorzubereiten. Weitere Optionen finden Sie unter dalm qa-gen --help
Wenn Sie keinen Datensatz haben, können Sie mit unserer beginnen
# 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 (und Answer wenn Sie E2E ausführen). Sie können das Skript für die Erstellung dieses CSV verwenden.BAAI/bge-large-en als Standard-Retriever und verwenden meta-llama/Llama-2-7b-hf als Standardgenerator. Der Code ist so konzipiert, dass er mit jedem Einbettungsmodell oder autoregressiven Modell kompatibel ist, das im Umarmungs -Face -Modell -Repository unter https://huggingface.co/models verfügbar ist. Sie können unsere Skripte direkt nutzen, wenn Sie möchten, oder Sie können die dalm CLI verwenden. Die Argumente für beide sind identisch
BAAI/bge-large-en retriever mit kontrastivem Lernen.
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 150oder
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 Für alle verfügbaren Argumente und Optionen finden Sie dalm train-retriever-only --help
Llama-2-7b -Generator gemeinsam mit dem Retriever-Modell 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 20oder
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 Für alle verfügbaren Argumente und Optionen siehe dalm train-rag-e2e --help
Der Retriever ist im Allgemeinen darin geschult, gut darin zu sein, die relevantesten Passagen in einem Korpus zu finden, das eine Frage befragt.
Angesichts eines Bodenwahrheits-Testdatensatzes, der ein 200.000-Zeilen-CSV mit Patent-Abstracts enthält, und vor allem in diesem Bewertungsdatensatz im Trainingsdatensatz nicht vorhanden war, wurden die folgenden Schritte befolgt:
recall zu berechnen und hit rate . | Art des Retrievers | Abrufen | Trefferrate |
|---|---|---|
| Einfache Retriever | 0,45984 | 0,45984 |
| Retriever mit kontrastivem Lernen | 0,46037 | 0,46038 |
| Retriever End2end | 0,73634 | 0,73634 |
Um Retriever nur auszuführen (stellen Sie sicher, dass Sie die Kontrollpunkte in der Projektwurzel haben)
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_checkpointsoder
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 In dalm eval-retriever --help finden Sie alle verfügbaren Argumente
Für die E2E -Bewertung
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/generatoroder
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 Weitere verfügbare Argumente finden Sie dalm eval-rag --help
Siehe Beitrag