머신 러닝 모델을 미세 조정하려면 잘 준비된 데이터 세트가 필요합니다. 이 가이드에서는 데이터 수집부터 명령어 파일 만들기까지 이러한 데이터 세트를 만드는 방법을 안내합니다. 이 가이드가 끝나면 미세 조정 작업을 위한 고품질 데이터 세트를 준비할 수 있는 실용적인 지식과 도구를 갖추게 될 것입니다.

이 게시물은 다음의 세부 정보 가이드를 이어갑니다. RAG용 데이터 준비엔드투엔드 RAG 애플리케이션 구축 카우치베이스 벡터 검색으로.

개괄적인 개요

데이터 수집/수집

첫 번째 단계는 다양한 소스에서 데이터를 수집하는 것입니다. 여기에는 나중에 정리하여 구조화된 데이터 집합으로 정리할 원시 정보를 수집하는 작업이 포함됩니다.

검색 증강 생성을 위한 데이터 준비에 대한 심층적인 단계별 가이드는 종합 블로그 게시물을 참조하세요: "검색 증강 생성을 위한 데이터 준비를 위한 단계별 가이드".

데이터 수집에 대한 접근 방식

저희는 다양한 방법을 활용하여 모든 관련 데이터를 수집했습니다:

    1. 스크랩을 사용한 웹 스크래핑:
      • 스크랩 는 웹사이트에서 데이터를 추출하기 위한 강력한 Python 프레임워크입니다. 이를 통해 웹사이트를 크롤링하고 데이터를 효율적으로 스크랩하는 스파이더를 작성할 수 있습니다. 
    2. Confluence에서 문서 추출하기:
      • 저희는 Confluence 워크스페이스에 저장된 문서를 직접 다운로드했습니다. 하지만 이 작업을 수행할 수도 있습니다. Confluence API 추출 프로세스를 자동화하기 위해 스크립트를 작성해야 합니다.
    3. Git 리포지토리에서 관련 파일을 검색합니다:
      • 리포지토리를 복제하고 관련 파일을 가져오기 위해 사용자 지정 스크립트를 작성했습니다. 이를 통해 버전 관리 시스템 내에 저장된 모든 필요한 데이터를 수집할 수 있었습니다.

이러한 방법을 결합하여 필요한 모든 소스를 포괄하는 포괄적이고 효율적인 데이터 수집 프로세스를 보장했습니다.

텍스트 콘텐츠 추출

데이터가 수집되면 다음 중요한 단계는 웹 페이지나 PDF와 같은 문서에서 텍스트를 추출하는 것입니다. 이 프로세스에는 이러한 문서를 구문 분석하여 깔끔하고 구조화된 텍스트 데이터를 얻는 작업이 포함됩니다.

이러한 소스에서 텍스트를 추출하는 자세한 단계와 코드 예제는 블로그 게시물에서 종합 가이드를 참조하세요: "검색 증강 생성을 위한 데이터 준비를 위한 단계별 가이드".

텍스트 추출에 사용되는 라이브러리

    • HTML: 아름다운 수프 는 HTML 구조를 탐색하고 텍스트 콘텐츠를 추출하는 데 사용됩니다.
    • PDF: PyPDF2 를 사용하면 PDF 파일을 쉽게 읽고 각 페이지에서 텍스트를 추출할 수 있습니다.

이러한 도구를 사용하면 비정형 문서를 추가 처리를 위해 준비된 체계적인 텍스트 데이터로 변환할 수 있습니다.

샘플 JSON 데이터 만들기

이 섹션에서는 다음과 같은 함수를 사용하여 데이터 집합 생성을 위한 지침을 생성하는 데 중점을 둡니다. 생성_콘텐츠() 그리고 생성_지침()를 통해 도메인 지식을 기반으로 질문을 도출합니다.

지침(질문) 생성하기

교육용 질문을 생성하려면 다음 단계를 따르세요:

    1. 청크 섹션: 문맥에 맞는 의미 있는 질문을 위해 텍스트가 의미론적으로 쪼개져 있습니다.
    2. 질문을 공식화하세요: 이러한 청크는 언어 모델(LLM)로 전송되며, 언어 모델은 수신된 청크를 기반으로 질문을 생성합니다.
    3. JSON 형식을 만듭니다: 마지막으로 질문과 관련 정보를 JSON 형식으로 구조화하여 쉽게 액세스하고 활용할 수 있도록 합니다.

샘플 instructions.json

다음은 instructions.json 파일은 지침을 생성하고 저장한 후 어떻게 보일 수 있습니다:

구현

이 프로세스를 구현하려면

    1. 도메인 지식 로드: 지정된 파일에서 도메인별 정보 검색
    2. 지침 생성다음과 같은 기능을 활용합니다. 생성_콘텐츠() 를 사용하여 데이터를 분석하고 질문을 공식화합니다. 생성_지침()
    3. 질문 저장사용 저장_지침() 를 사용하여 생성된 질문을 JSON 파일에 저장합니다.

생성_콘텐츠 함수

그리고 생성_콘텐츠 함수는 도메인 지식을 문장으로 토큰화한 다음 해당 문장을 기반으로 논리적인 질문을 생성합니다:

생성_지침 함수

이 함수는 언어 모델 API를 사용하여 교육용 질문을 생성하는 방법을 보여 줍니다:

도메인 지식 로드 및 저장

저희는 두 가지 추가 기능을 사용합니다: 로드_도메인_지식() 를 호출하여 파일에서 도메인 지식을 로드하고 save_instructions()를 호출하여 생성된 지침을 JSON 파일에 저장합니다.

로드_도메인_지식 함수

이 함수는 지정된 파일에서 도메인 지식을 로드합니다.

저장_지침 함수

이 함수는 생성된 지침을 JSON 파일에 저장합니다:


사용 예

다음은 이러한 기능이 함께 작동하는 방식을 보여주는 예시입니다:

이 워크플로를 사용하면 데이터 세트 준비를 위한 질문을 효율적으로 생성하고 저장할 수 있습니다.

데이터 세트 생성(학습, 테스트, 검증)

이 섹션에서는 Ollama의 Llama2를 사용하여 미스트랄 7B와 같은 다양한 모델을 미세 조정하기 위한 데이터 세트를 만드는 방법을 안내합니다. 정확성을 보장하려면 다음과 같은 파일에 저장된 도메인 지식이 필요합니다. domain.txt.

데이터 세트 생성을 위한 Python 함수

쿼리_올라마 함수

이 기능은 특정 프롬프트와 도메인 컨텍스트에 따라 Ollama의 Llama 2 모델에 답변과 후속 질문을 요청합니다:

create_validation_file 함수

이 기능은 데이터를 학습, 테스트 및 검증 세트로 나누어 모델 학습을 위해 별도의 파일로 저장합니다:

데이터 집합 생성 관리

메인 함수

주요 기능은 Ollama의 Llama 2 쿼리부터 모델 학습을 위해 결과를 JSONL 파일로 포맷하는 것까지 데이터 세트 생성을 조정합니다:

다음 도구 사용

올라마의 라마 2로 미스트랄 7B와 같은 모델을 다듬기 시작하세요:

    1. 도메인 지식을 준비하세요: 에 도메인별 세부 정보를 저장합니다. domain.txt
    2. 지침을 생성합니다: JSON 파일을 생성합니다, instructions.json데이터 세트 생성 프롬프트와 함께
    3. 주 기능을 실행합니다: 실행 main() 파일 경로를 사용하여 모델 학습 및 유효성 검사를 위한 데이터 세트를 생성합니다.

이러한 Python 함수를 사용하면 머신 러닝 모델을 최적화하는 데이터 세트를 개발하여 고급 애플리케이션의 성능과 정확성을 향상시킬 수 있습니다.

결론

오늘은 여기까지입니다! 이 단계를 통해 머신러닝 모델 학습 프로세스를 개선할 수 있는 지식과 도구를 갖추게 되었습니다. 읽어주셔서 감사드리며, 이 가이드가 도움이 되셨기를 바랍니다. 더 많은 인사이트를 얻으시려면 다른 블로그도 살펴보세요. 이 시리즈의 다음 편을 기대해 주시고 다른 블로그도 확인해 주세요. 벡터 검색 관련 블로그. 행복한 모델링, 다음에 또 만나요!

참조

기여자

산지바니 파트라 – 니샨트 VM아쇼크 쿠마르 알루리

 

작성자

게시자 산지바니 파트라 - 소프트웨어 엔지니어

댓글 남기기