일반 LLM과 상황 정보를 제공하는 벡터 매장 사이에 큰 균열이 등장했습니다. 이러한 시스템의 통일은 AI 시스템을 효율적이고 사실적인 영역에 접지하는 데 중요한 단계이며, 이들은 일반성뿐만 아니라 특이성과 독창성을 위해 활용됩니다. 이를 위해 개발자가 ARCEE 오픈 소스 도메인 (DPT) LLM을 구축 할 수 있도록 ARCEE 도메인 적응 언어 모델 (DALM) 툴킷을 오픈 소스를 보게되어 기쁩니다. 우리는 언어 모델링의 다음 단계를 시작할 때 우리의 노력이 도움이 될 것이라고 믿습니다. 여기서 조직은 AI가 고유 한 지적 재산과 세계관에 따라 운영되도록 AI를 깊이 조정합니다.
Arcee 팀이 만든 쿼리 예제 Dalms.
| DALM-PATENT | DALM-PUBMED | 달름 세크 | 달름 |
|---|---|---|---|
이 저장소에는 주로 완전히 차동 검색 증강 생성 (Rag-End2end) 아키텍처를 미세 조정하기위한 코드가 포함되어 있습니다.
문헌에서 처음으로 LLAMA, Falcon 또는 GPT와 같은 디코더 전용 언어 모델로 작동하도록 초기 Rag-End2END 모델 (TACL 용지, HuggingFace 구현)을 수정했습니다. 우리는 또한 전체 프로세스를 효율적으로 만들기 위해 Rag의 소외와 함께 배치 부정적인 개념을 통합했습니다.
교육 폴더 내부에는 Rag-End2End를 훈련시키고 대조적 인 학습으로 리트리버를 훈련시키는 두 가지 코드가 있습니다.
리트리버 및 발전기와 관련된 모든 평가는 Eval 폴더에 있습니다.
또한 DataSets 폴더 내부에는 데이터 처리 코드 및 합성 데이터 생성 코드가 있습니다.
리트리버 모델과 새로운 Rag-E2E 모델 모두에 대한 교육 및 평가를 수행하려면 다음 단계를 준수하십시오.
시스템 REQ는 리트리버 모델, 발전기 모델 및 배치 크기에 따라 다릅니다. 그러나 참조 (E2E Rag)를 위해 실험에 다음을 사용했습니다 (아래 평가 결과).
BAAI/bge-large-enmeta-llama/Llama-2-7b-hf이것은 단일 A100 GPU (80GB)에서 7 시간이 걸렸습니다.
pip install indomain 통해 직접이 리포를 설치할 수 있습니다.
또는 개발 또는 연구의 경우 로컬로 레포를 복제하고 설치할 수 있습니다.
git clone https://github.com/arcee-ai/DALM.git && cd DALM
pip install --upgrade -e .DALM Repo 및 필요한 모든 종속성을 설치합니다.
dalm version 실행하여 물건을 올바르게 설치해야합니다. Intel이 아닌 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 (및 E2E를 실행하는 경우 Answer )을 포함하는 CSV 파일이있는 경우 쉽게 실행할 수 있습니다. 스크립트 Question_answer_Generation.py를 사용 하여이 CSV를 생성 할 수 있습니다.BAAI/bge-large-en 사용하고 기본 생성기로 meta-llama/Llama-2-7b-hf 사용합니다. 이 코드는 https://huggingface.co/models의 Hugging Face 모델 저장소에서 사용할 수있는 임베딩 모델 또는 자동 회귀 모델과 호환되도록 설계되었습니다. 원하는 경우 스크립트를 직접 활용하거나 dalm CLI를 사용할 수 있습니다. 둘 다에 대한 논쟁은 동일합니다
대조적 인 학습으로 BAAI/bge-large-en 리트리버를 훈련시킵니다.
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 참조하십시오.
리트리버 모델 BAAI/bge-large-en 과 공동으로 Llama-2-7b 생성기를 훈련시킵니다.
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 참조하십시오.
일반적으로 리트리버는 쿼리가 주어진 코퍼스에서 가장 관련성이 높은 구절을 찾는 데 능숙합니다.
특허 초록을 포함하는 200,000 라인 CSV 인 지상 진실 테스트 데이터 세트와 더 중요한 것은이 평가 데이터 세트가 교육 데이터 세트에 존재하지 않았으며, 아래 나열된 단계는 다음과 같습니다.
recall 과 hit rate 계산하기 위해 Top-K Best Matches와 비교하십시오. | 리트리버 유형 | 상기하다 | 적중률 |
|---|---|---|
| 일반 리트리버 | 0.45984 | 0.45984 |
| 대조적 인 학습을 가진 리트리버 | 0.46037 | 0.46038 |
| 리트리버 End2end | 0.73634 | 0.73634 |
Retriever를 실행하려면 평가 만 평가합니다 (프로젝트 루트에 검문소가 있는지 확인)
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 참조하십시오
기고를 참조하십시오