ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 챗 GPT 모델의 성능 향상을 위한 데이터 Chunking 전략
    AI&ML 2023. 7. 19. 00:17
    반응형

    챗 GPT 모델은 일반적으로 긴 입력을 처리하기에는 한계가 있으므로 데이터를 작은 "chunk"로 나누는 것이 좋습니다.

    이를 통해 모델이 각 chunk를 개별적으로 처리할 수 있습니다.

     

    아래에는 데이터 chunking을 위한 몇 가지 전략을 제시합니다.

    1. 고정 크기의 Chunking: 고정 크기의 Chunking은 입력 데이터를 일정한 크기의 chunk로 분할하는 전략입니다. 예를 들어, 입력 문장을 50개의 토큰으로 나눌 수 있습니다. 
    2. 문장 경계를 기준으로 Chunking: 문장 경계를 인식하여 데이터를 분할하는 전략입니다. 마침표, 물음표, 느낌표 등의 문장 경계를 기준으로 문장을 분할합니다. 
    3. 주제나 의도를 기준으로 Chunking: 데이터를 주제나 의도에 따라 분할하는 전략입니다. 대화 시나리오에서 각 차례나 질문에 해당하는 부분을 chunk로 나눌 수 있습니다. 

    챗 GPT 모델의 성능을 향상시키기 위해 데이터 Chunking 전략은 중요한 역할을 합니다. 고정 크기의 Chunking, 문장 경계를 기준으로 Chunking, 주제나 의도를 기준으로 Chunking 등 다양한 전략을 활용하여 적절한 Chunking 방법을 선택할 수 있습니다. 실험과 튜닝을 통해 최적의 전략을 찾아내어 챗 GPT 모델의 성능과 일관성을 향상시킬 수 있습니다.

     

    고정 크기의 Chunking 샘플 코드:

    def fixed_size_chunking(data, chunk_size):
        chunks = []
        for i in range(0, len(data), chunk_size):
            chunk = data[i:i + chunk_size]
            chunks.append(chunk)
        return chunks
    
    input_data = "챗 GPT 모델은 일반적으로 긴 입력을 처리하기에는 한계가 있습니다."
    chunk_size = 10
    
    chunks = fixed_size_chunking(input_data, chunk_size)
    for chunk in chunks:
        print(chunk)

    문장 경계를 기준으로 Chunking 샘플 코드:

    import re
    
    def sentence_boundary_chunking(data):
        pattern = r'(?<=[.!?])\s'
        chunks = re.split(pattern, data)
        return chunks
    
    input_data = "챗 GPT 모델은 일반적으로 긴 입력을 처리하기에는 한계가 있습니다. 이를 통해 모델이 각 chunk를 개별적으로 처리할 수 있으며, 이전 chunk에 대한 정보를 저장할 수 있습니다."
    
    chunks = sentence_boundary_chunking(input_data)
    for chunk in chunks:
        print(chunk)

    어떤 방식이 최선의 데이터 chunk 인지 여러번의 시행착오가 필요합니다.

     

    계속되는 블로그에서 그 시행착오에 대한 피드백을 작성할 예정입니다.

     

    반응형

    댓글

Designed by Tistory.