지속적 사전 학습(CPT)
지속적인 사전 훈련(CPT)은 동일한 비지도 목표(마스킹된 언어 모델링 또는 인과적 언어 모델링 등)를 사용하여 새로운 데이터에 대해 사전 훈련된 파운데이션 모델을 추가로 훈련하는 프로세스입니다. 이는 새로운 도메인 또는 분포 변화에 적응하면서도 이전에 학습한 일반 언어 기능을 유지합니다.
CPT에는 특정 다운스트림 태스크에 대한 아키텍처 변경 또는 미세 조정이 포함되지 않습니다. 대신 도메인 인식 방식으로 모델의 언어 이해 능력을 확장합니다.
다음 시나리오에서는 CPT를 사용해야 합니다.
-
특정 도메인(예: 의학 또는 금융)과 관련된 레이블이 지정되지 않은 대규모 데이터가 있습니다.
-
도메인별 콘텐츠를 개선하면서 모델이 일반 언어 기능을 유지하게 하려고 합니다.
-
광범위한 태스크별 미세 조정을 수행하지 않고 특수 영역에서 제로샷 및 퓨샷 성능을 개선하고자 합니다.
데이터 형식 요구 사항
CPT를 수행할 때 다음 데이터세트 특성을 준수하는 것이 좋습니다.
-
다양성: 과적합을 방지하려면, 데이터는 대상 도메인 내의 다양한 표현을 폭넓게 포함해야 합니다.
-
대표성: 데이터는 모델이 추론 과정에서 다루게 될 분포를 반영해야 합니다.
-
무결성: 데이터의 노이즈와 중복성으로 인해 성능이 저하될 수 있습니다. 중복 제거 및 텍스트 정규화는 모델 훈련을 개선합니다.
-
규모: 대규모 데이터세트는 도움이 되지만 특정 임곗값(예: 제한된 데이터에서 여러 에포크 실행)을 초과하면 과적합 위험이 증가합니다.
훈련 및 검증 데이터세트는 Converse 형식을 따르는 JSONL 파일이어야 하며, 각 줄에는 필수 필드 및 구조를 갖춘 대화를 나타내는 JSON 객체가 포함되어야 합니다. 예:
{"text": "AWS stands for Amazon Web Services"} {"text": "Amazon SageMaker is a fully managed machine learning service"} {"text": "Amazon Bedrock is a fully managed service for foundation models"}
텍스트 항목에는 대상 도메인을 잘 나타내는, 자연스럽게 흐르는 고품질의 콘텐츠가 포함되어야 합니다.
데이터세트 검증
CPT 작업을 제출하기 전에 데이터세트를 검증하려면 다음 조건을 확인하세요.
-
각 줄에는 유효한 JSON 객체가 포함되어 있어야 합니다.
-
각 객체에는 문자열 데이터가 포함된 "text" 필드가 있습니다.
-
"text" 이외의 필드는 포함되어 있지 않습니다.
-
파일 확장자는
.jsonl입니다.
훈련 시간
훈련에 소요되는 시간은 데이터세트의 크기, 사용되는 인스턴스 수, 훈련 중인 모델에 따라 크게 달라집니다. 훈련 시간은 선형적으로 조정될 것으로 예상됩니다. 다음 표에는 다양한 모델에 대한 몇 가지 예시 훈련 시간이 나와 있습니다.
모델 유형 |
GBS |
데이터세트의 샘플 수 |
P5 인스턴스 수 |
|
대략적인 훈련 시간(시간 단위) |
|---|---|---|---|---|---|
Amazon Nova Micro |
256 |
100,000 |
8 |
8,192 |
4 |
Amazon Nova Lite |
256 |
100,000 |
16 |
8,192 |
4 |
Amazon Nova Pro |
256 |
100,000 |
24 |
8,192 |
10 |
훈련 및 검증 데이터세트는 Amazon Bedrock Converse 작업 형식을 따르는 JSONL 파일이어야 하며, 각 줄에는 필수 필드 및 구조를 갖춘 대화를 나타내는 JSON 객체가 포함되어야 합니다.
CPT를 통해 조정할 수 있는 Amazon Nova 파라미터는 다음과 같습니다.
-
실행 구성
-
name: 훈련 작업을 설명하는 이름입니다. AWS Management 콘솔에서 작업을 식별하는 데 도움이 됩니다. -
model_type: 사용할 Amazon Nova 모델 변형입니다. 사용할 수 있는 옵션은amazon.nova-micro-v1:0:128k,amazon.nova-lite-v1:0:300k또는amazon.nova-pro-v1:0:300k입니다. -
model_name_or_path: 훈련에 사용할 기본 모델의 경로입니다. 사용 가능한 옵션은nova-micro/prod,nova-lite/prod,nova-pro/prod또는 훈련 후 체크포인트의 S3 경로(s3://customer-escrow-bucket-unique_id/training_run_name)입니다. -
replicas: 분산 훈련에 사용할 컴퓨팅 인스턴스의 수입니다. 사용 가능한 값은 선택한 모델에 따라 다릅니다. Amazon Nova Micro는 2개, 4개 또는 8개의 복제본을 지원합니다. Amazon Nova Lite는 4개, 8개, 16개 또는 32개의 복제본을 지원합니다. Amazon Nova Pro는 6개, 12개 또는 24개의 복제본을 지원합니다. -
data_s3_path: 훈련 데이터세트(JSONL 파일)의 S3 위치입니다. 이 파일은 클러스터와 동일한 AWS 계정 및 리전에 있어야 합니다. 제공된 모든 S3 위치는 동일한 계정 및 리전에 있어야 합니다. -
validation_data_s3_path: (선택 사항) 검증 데이터세트(JSONL 파일)의 S3 위치입니다. 이 파일은 클러스터와 동일한 계정 및 리전에 있어야 합니다. 제공된 모든 S3 위치는 동일한 계정 및 리전에 있어야 합니다. -
output_s3_path: 매니페스트 및 TensorBoard 로그가 저장되는 S3 위치입니다. 제공된 모든 S3 위치는 동일한 AWS 계정 및 AWS 리전에 있어야 합니다.
-
-
훈련 구성
-
max_length: 토큰 단위의 최대 시퀀스 길이입니다. 이는 훈련을 위한 컨텍스트 창 크기를 결정합니다. CPT에 대해 지원되는 최대 값은 8,192개의 토큰입니다.시퀀스가 길어지면 훈련 효율성이 향상되지만 메모리 요구 사항이 증가합니다.
max_length파라미터를 데이터 분포와 일치시키는 것이 좋습니다.
-
-
트레이너 설정
-
global_batch_size: 모든 디바이스 및 워커에서 한 번의 순방향 또는 역방향 패스 동안 함께 처리되는 전체 훈련 샘플 수입니다.이 값은 디바이스당 배치 크기와 디바이스 수를 곱한 값입니다. 이는 훈련의 안정성과 처리량에 영향을 미칩니다. 메모리 내에서 적절한 배치 크기로 시작하여 점진적으로 스케일 업하는 것이 좋습니다. 도메인별 데이터의 경우 배치 크기가 크면 그라디언트가 과도하게 평활화될 수 있습니다.
-
max_epochs: 훈련 데이터세트의 완료 통과 횟수입니다.일반적으로 데이터세트가 클수록 수렴하는 데 필요한 에포크 수가 적고, 데이터세트가 작을수록 수렴하는 데 더 많은 에포크가 필요합니다. 과적합을 방지하려면 데이터 크기에 따라 에포크 수를 조정하는 것이 좋습니다.
-
-
모델 설정
-
hidden_dropout: 숨겨진 상태 출력이 삭제될 확률입니다. 작은 데이터세트에서 과적합을 줄이려면 이 값을 약 0.0~0.2 늘립니다. 유효한 값은 0~1입니다. -
attention_dropout: 어텐션 가중치가 삭제될 확률입니다. 이 파라미터는 일반화에 도움이 될 수 있습니다. 유효한 값은 0~1입니다. -
ffn_dropout: 피드포워드 네트워크 출력이 삭제될 확률입니다. 유효한 값은 0~1입니다.
-
-
옵티마이저 구성
-
lr: 최적화 동안 단계 크기를 제어하는 학습률입니다. 성능 향상을 위해 1e-6에서 1e-4 사이의 값을 권장합니다. 유효한 값은 0~1입니다. -
name: 옵티마이저 알고리즘입니다. 현재distributed_fused_adam만 지원됩니다. -
weight_decay: L2 정규화 강도입니다. 값이 높을수록(0.01에서 0.1 사이) 정규화가 증가합니다. -
warmup_steps: 학습률을 점진적으로 높이는 단계 수입니다. 이는 훈련의 안정성을 향상시킵니다. 유효한 값은 1~20입니다. -
min_lr: 감소 종료 시의 최소 학습률입니다. 유효한 값은 0~1이지만 설정된 학습률보다 작아야 합니다.
-
CPT 레시피
다음은 CPT의 레시피입니다.
## Run config run: name: "my-cpt-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification, do not change model_name_or_path: "nova-lite/prod" # Base model path, do not change replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16 data_s3_path:[S3_PATH_TO_TRAIN_DATASET]validation_data_s3_path:(OPTIONAL)[S3_PATH_TO_VALIDATION_DATASET]output_s3_path:[S3_PATH_TO_STORE_MANIFEST]## Training specific configs training_config: max_length: 8192 # Maximum context window size (tokens). global_batch_size: 256 # Global batch size, allowed values are 32, 64, 128, 256. trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states, must be between 0.0 and 1.0 attention_dropout: 0.0 # Dropout for attention weights, must be between 0.0 and 1.0 ffn_dropout: 0.0 # Dropout for feed-forward networks, must be between 0.0 and 1.0 optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 betas: # Adam optimizer betas, must be between 0.0 and 1.0 - 0.9 - 0.999 sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate, must be lower than lr
제한 사항
CPT에는 다음과 같은 제한 사항이 있습니다.
-
멀티모달 데이터세트는 지원되지 않습니다.
-
중간 체크포인트는 평가를 위해 저장되지 않으며 중간 체크포인트에서 재개할 수 없습니다. 마지막 체크포인트만 저장됩니다.
-
MLflow 로깅은 지원되지 않습니다.