채팅 완료 모델을 세부적으로 조정하기 위한 데이터 준비
미세 조정에는 기본으로 사용할 적합한 기본 모델과 모델에서 학습할 수 있는 예제 프롬프트 및 응답을 포함하는 학습 데이터 집합을 결합하는 작업이 포함됩니다.
언어 모델을 미세 조정하기로 결정한 경우 언어 모델을 미세 조정하는 데 사용할 수 있는 데이터 세트를 식별해야 합니다.
모든 기계 학습 모델과 마찬가지로 데이터 세트의 품질은 모델의 품질에 큰 영향을 미칩니다. 언어 모델을 처음부터 학습할 때보다 필요한 데이터가 적더라도 원하는 모델 동작의 일관성을 최대화하려면 여전히 충분한 데이터가 필요할 수 있습니다. 필요한 데이터의 양은 사용 사례에 따라 다릅니다.
채팅 완료를 위해 언어 모델을 미세 조정할 때 모델을 미세 조정하는 데 사용하는 데이터는 샘플 대화 컬렉션입니다. 보다 구체적으로 데이터에는 다음 세 가지 구성 요소가 포함되어야 합니다.
- 시스템 메시지
- 사용자 메시지
- 도우미의 응답
세 가지 변수는 JSON Lines 또는 JSONL 파일에 함께 제공됩니다. 예를 들어, 이러한 데이터 세트의 한 줄은 다음과 같습니다.
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
데이터 세트는 모델의 이상적인 동작을 보여야 합니다. 보유한 채팅 애플리케이션의 채팅 기록을 기반으로 이 데이터 세트를 만들 수 있습니다. 실제 데이터를 사용할 때 명심해야 할 몇 가지 사항은 다음과 같습니다.
- 개인 정보나 중요한 정보를 제거합니다.
- 대규모 학습 데이터 세트를 만드는 데 집중할 뿐만 아니라 데이터 세트에 다양한 예 집합이 포함되어 있는지 확인합니다.
데이터 세트의 한 줄에 여러 차례의 대화를 포함할 수 있습니다. 특정 보조 메시지에 대해서만 미세 조정하려는 경우 선택적으로 weight 키-값 쌍을 사용할 수 있습니다. 가중치를 0으로 설정하면 메시지가 무시되고, 1로 설정하면 학습에 메시지가 포함됩니다.
가중치가 있는 멀티 턴 채팅 파일 형식의 예:
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
언어 모델을 미세 조정하기 위해 데이터 세트를 준비할 때 원하는 모델 동작을 이해하고, JSONL 형식으로 데이터 세트를 만들고, 포함하는 예가 고품질이고 다양한지 확인해야 합니다. 데이터 세트를 준비하면 미세 조정된 모델이 채팅 애플리케이션의 성능을 개선할 가능성이 더 높아집니다.