다음을 통해 공유


파운데이션 모델 미세 조정을 위한 데이터 준비

Important

이 기능은 , centralus, eastus, eastus2, northcentralus 지역에서 westus로 제공됩니다.

이 문서에서는 파운데이션 모델 미세 조정(현재 Mosaic AI 모델 학습의 일부)에 허용되는 학습 및 평가 데이터 파일 형식에 대해 설명합니다.

노트북: 훈련 실행을 위한 데이터 유효성 검사

다음 Notebook에서는 데이터의 유효성을 검사하는 방법을 보여줍니다. 학습을 시작하기 전에 독립적으로 실행되도록 설계되었습니다. 데이터가 파운데이션 모델 미세 조정에 올바른 형식인지 확인하고 원시 데이터 세트를 토큰화하여 학습 실행 중에 비용을 예측하는 데 도움이 되는 코드를 포함합니다.

학습 실행 Notebook에 대한 데이터 유효성 검사

Notebook 가져오기

채팅 완료를 위한 데이터 준비

채팅 완료 작업의 경우 채팅 형식 데이터는 .jsonl 파일에 있어야 합니다. 여기서 각 줄은 단일 채팅 세션을 나타내는 별도의 JSON 개체입니다. 각 채팅 세션은 메시지 개체 배열에 매핑되는 단일 키(messages)가 있는 JSON 개체로 표시됩니다. 채팅 데이터를 학습하려면 학습 실행만들 제공합니다.

채팅 형식의 메시지는 모델의 채팅 템플릿따라 자동으로 서식이 지정되므로 채팅 턴의 시작 또는 끝을 수동으로 알리기 위해 특별한 채팅 토큰을 추가할 필요가 없습니다. 사용자 정의 채팅 템플릿을 사용하는 모델의 예로 메타 라마 3.1 8B 인스트럭트입니다.

배열의 각 메시지 개체는 대화의 단일 메시지를 나타내며 해당 구조는 다음과 같습니다.

  • role: 메시지 작성자를 나타내는 문자열. 가능한 값은 system, userassistant 입니다. 역할인 system경우 메시지 목록의 첫 번째 채팅이어야 합니다. assistant 역할의 메시지가 하나 이상 있어야 하며 선택적 시스템 프롬프트 이후의 모든 메시지는 사용자/도우미 사이에서 역할을 대체해야 합니다. 동일한 역할의 인접한 두 개 메시지가 아니어야 합니다. messages 배열의 마지막 메시지에는 assistant역할이 있어야 합니다.
  • content: 메시지의 텍스트를 포함하는 문자열.

참고 항목

Mistral 모델은 데이터 형식에서 system 역할을 허용하지 않습니다.

다음은 채팅 형식의 데이터 예제입니다.

{"messages": [
  {"role": "system", "content": "A conversation between a user and a helpful assistant."},
  {"role": "user", "content": "Hi there. What's the capital of the moon?"},
  {"role": "assistant", "content": "This question doesn't make sense as nobody currently lives on the moon, meaning it would have no government or political institutions. Furthermore, international treaties prohibit any nation from asserting sovereignty over the moon and other celestial bodies."},
  ]
}

지속적 사전 학습을 위한 데이터 준비

지속적 사전 학습 작업의 경우 학습 데이터는 비정형 텍스트 데이터입니다. 학습 데이터는 .txt 파일이 포함된 Unity 카탈로그 볼륨에 있어야 합니다. 각 .txt 파일은 단일 샘플로 처리됩니다. .txt 파일이 Unity 카탈로그 볼륨 폴더에 있는 경우, 그 파일들도 학습 데이터에 포함됩니다. 볼륨의 모든 비txt 파일은 무시됩니다. Unity Catalog 볼륨에 파일 업로드를 참조하세요.

다음 이미지는 Unity 카탈로그 볼륨의 파일 .txt 예제를 보여줍니다. 계속된 학습 전 실행 구성에서 이 데이터를 사용하려면 train_data_path = "dbfs:/Volumes/main/finetuning/cpt-data" 설정하고 task_type = 'CONTINUED_PRETRAIN'설정합니다.

지속적 사전 학습 데이터 세트 파일 예제를 포함하는 UC 볼륨

직접 데이터 서식 지정

경고

이 섹션의 지침은 권장되지 않지만 사용자 지정 데이터 서식이 필요한 시나리오에 사용할 수 있습니다.

Databricks는 채팅 형식의 데이터를 사용할 것을 강력히 권장합니다, 따라서 사용 중인 모델에 따라 데이터에 적절한 서식이 자동으로 적용됩니다.

파운데이션 모델 미세 조정을 사용하면 직접 데이터 서식을 지정할 수 있습니다. 모델을 학습하고 제공하는 경우 모든 데이터 서식을 적용해야 합니다. 형식이 지정된 데이터를 사용하여 모델을 학습하려면 학습 실행을 만들 때 task_type = 'INSTRUCTION_FINETUNE' 설정합니다.

학습 및 평가 데이터는 다음 스키마 중 하나에 있어야 합니다.

  • 프롬프트 및 응답 연결.

    {"prompt": "your-custom-prompt", "response": "your-custom-response"}
    
  • 프롬프트 및 완성 연결.

    {"prompt": "your-custom-prompt", "completion": "your-custom-response"}
    

Important

프롬프트 응답 및 프롬프트 완성은 템플릿아니므로 Mistral의 지침 서식 지정과 같은 모델별 템플릿은 전처리 단계로 수행되어야 합니다.

지원되는 데이터 형식

지원되는 데이터 형식은 다음과 같습니다.

  • .jsonl 파일이 있는 Unity Catalog 볼륨. 학습 데이터는 각 줄이 유효한 JSON 개체인 JSONL 형식이어야 합니다. 다음 예제에서는 프롬프트 및 응답 연결 예제를 보여줍니다.

    {"prompt": "What is Databricks?","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."}
    
  • 위에서 언급한 허용되는 스키마 중 하나를 준수하는 델타 테이블. 델타 테이블의 경우 데이터 처리를 위해 data_prep_cluster_id 매개 변수를 제공해야 합니다. 학습 실행 구성을 참조하세요.

  • 공용 Hugging Face 데이터 세트.

    공용 Hugging Face 데이터 세트를 학습 데이터로 사용하는 경우 분할을 사용하여 전체 경로를 지정합니다(예: mosaicml/instruct-v3/train and mosaicml/instruct-v3/test). 이때 분할 스키마가 서로 다른 데이터 세트를 고려합니다. Hugging Face의 중첩된 데이터 세트는 지원되지 않습니다.

    보다 광범위한 예제는 Hugging Face의 mosaicml/dolly_hhrlhf 데이터 세트를 참조하세요.

    다음은 mosaicml/dolly_hhrlhf 데이터 세트의 데이터 행 예제입니다.

    {"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: what is Databricks? ### Response: ","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."}
    {"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: Van Halen famously banned what color M&Ms in their rider? ### Response: ","response": "Brown."}