쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

혼합 정밀도 훈련

포커스 모드
혼합 정밀도 훈련 - Amazon SageMaker AI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SageMaker 모델 병렬 처리(SMP) 라이브러리 v2는 PyTorch FSDP 및 Transformer Engine과 같은 오픈 소스 프레임워크와 통합하여 즉시 혼합 정밀도 훈련을 지원합니다. 자세한 내용은 다음 주제를 참조하세요.

Transformer Engine을 사용하여 P5 인스턴스에서 FP8과 혼합된 정밀도 훈련

SageMaker 모델 병렬 처리(SMP) 라이브러리 v2.2.0부터 SMP 라이브러리는 Transformer Engine과 통합되며 FP8 혼합 정밀도 훈련을 즉시 지원하여 PyTorch FSDP MixedPrecision과의 호환성을 유지합니다. 즉, 혼합 정밀도 훈련에는 PyTorch FSDP를 사용하고 FP8 훈련에는 Transformer Engine을 모두 사용할 수 있습니다. Transformer Engine의 FP8 훈련 기능에서 지원되지 않는 모델 계층의 경우 해당 계층은 PyTorch FSDP 혼합 정밀도로 돌아갑니다.

참고

SMP v2는 다음 Hugging Face 트랜스포머 모델에 대한 FP8 지원을 제공합니다.

  • GPT-NeoX(SMP v2.2.0 이상에서 사용 가능)

  • Llama 2(SMP v2.2.0 이상에서 사용 가능)

  • Mixtral 8x7b 및 Mixtral 8x22b(SMP v2.5.0 이상에서 사용 가능)

참고

P5 기능에 대한 이 FP8 훈련은 SageMaker 라이브러리와 PyTorch 라이브러리의 다음 조합에서 사용할 수 있습니다.

  • SageMaker Python SDK v2.212.0 이상

  • PyTorch v2.2.0 이상

FP8(8비트 부동 소수점 정밀도)은 LLM 모델의 딥 러닝 훈련을 가속화하기 위한 또 다른 패러다임으로 부상한 데이터 유형입니다. FP8 데이터 유형을 지원하는 NVIDIA H100 GPU 릴리스를 사용하면 FP8 혼합 정밀도 훈련을 통해 분산 훈련을 가속화하면서 H100 GPU가 탑재된 P5 인스턴스의 성능 개선의 이점을 누릴 수 있습니다.

FP8 데이터 유형은 E4M3 및 E5M2 형식으로 더 분기됩니다. E4M3은 더 나은 정밀도를 제공하고, 제한된 동적 범위를 가지며, 모델 훈련의 순방향 패스에 적합합니다. E5M2는 동적 범위가 더 넓지만 정밀도는 낮으며, 정밀도가 덜 중요하고 동적 범위가 더 넓어지면 역방향 패스에 더 적합합니다. 따라서 하이브리드 FP8 전략 레시피를 사용하여 이러한 특성을 효과적으로 활용하는 것이 좋습니다.

절반 정밀도 데이터 유형(FP16 및 BF16)의 경우 정적 손실 규모 조정 또는 동적 손실 규모 조정과 같은 글로벌 손실 규모 조정 기술은 반정밀도의 반올림 기울기로 인한 정보 손실로 인해 발생하는 수렴 문제를 처리합니다. 그러나 FP8의 동적 범위는 훨씬 좁으며 글로벌 손실 조정 기법으로는 충분하지 않습니다. 이 시점에서는 더 세분화된 텐서별 조정 기법이 필요합니다. 지연된 조정은 이전 반복을 구성하는 여러 텐서에서 관찰된 최대 절대값을 기반으로 조정 인자를 선택하는 전략입니다. 이 전략에는 절충점이 있습니다. FP8 계산의 전체 성능 이점을 사용하지만 텐서의 최대 가치 기록을 유지하기 위한 메모리가 필요합니다. 일반적으로 지연 조정 전략에 대한 자세한 내용은 딥 러닝용 FP8 형식 문서를 참조하세요.

실제로 FP8을 사용하면 P5 인스턴스의 모든 훈련 시나리오에서 유용합니다. 훈련 성능을 향상하려면 가능하면 항상 FP8을 활성화하는 것이 좋습니다.

SMP v2는 구입 즉시 트랜스포머 엔진을 지원합니다. 따라서 SageMaker AI(ml.p5.48xlarge)의 P5 인스턴스에서 SMP v2로 FP8 훈련을 실행할 때 해야 할 유일한 일은 훈련 스크립트torch.sagemaker에서를 가져오고 기본 Transformer Engine Python 패키지를 계속 사용하는 것입니다. 일반적으로 FP8 훈련에 트랜스포머 엔진을 사용하는 방법에 대한 자세한 내용은 NVIDIA 트랜스포머 엔진 설명서트랜스포머 엔진과 함께 FP8 사용을 참조하세요. 다음 코드 조각은 훈련 스크립트에서 SMP 라이브러리를 가져오고 FP8을 설정하기 위한 코드 줄이 어떻게 보여야 하는지 보여줍니다.

import torch.sagemaker as tsm import transformer_engine.pytorch as te from transformer_engine.common.recipe import DelayedScaling, Format # Initialize the SMP torch.sagemaker API. tsm.init() # Define a transformer model and wrap it with the torch.sagemaker.transform API. from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(ModelConfig) model = tsm.transform(model) # Enable E4M3 during forward pass, E5M2 during backward pass. fp8_format = Format.HYBRID # Create an FP8 recipe. fp8_recipe = DelayedScaling(fp8_format=fp8_format, amax_history_len=32, amax_compute_algo="max") # Enable FP8 autocasting. with te.fp8_autocast(enabled=True, fp8_recipe=fp8_recipe, fp8_group=tsm.state.world_process_group): out = model(inp) loss = out.sum() loss.backward()

P5 인스턴스에서 SMP v2를 사용한 FP8 훈련의 실제 예를 찾으려면 P5 P5 인스턴스에서 FP8을 사용한 Llama-v2(또는 GPT-NeoX)의 Accelerate SageMaker PyTorch FSDP 훈련의 예제 노트북을 참조하세요.

PyTorch FSDP를 사용하여 절반 정밀도 데이터 유형을 사용한 혼합 정밀도 훈련

SMP v2는 P4 및 P5 인스턴스의 훈련 작업에 대해 PyTorch FSDP MixedPrecision를 지원합니다. PyTorch FSDP는 성능 개선과 메모리 감소를 위한 혼합 정밀도를 위한 다양한 구성을 제공합니다.

참고

PyTorch FSDP 기능을 사용한 이 혼합 정밀도 훈련은 SageMaker 라이브러리와 PyTorch 라이브러리의 다음 조합에서 사용할 수 있습니다.

  • SMP v2.0.0 이상

  • SageMaker Python SDK v2.200.0 이상

  • PyTorch v2.0.1 이상

혼합 정밀도에 맞게 모델을 구성하는 표준 방법은 float32에서 모델을 생성한 다음 코드 조각과 같이 MixedPrecision 정책을 전달하여 FSDP가 파라미터를 즉시 float16 또는 bfloat16에 캐스팅하도록 허용하는 것입니다. PyTorch에서 혼합 정밀도에 대한 파라미터, 감소 또는 버퍼에 대한dtype 를 변경하는 옵션에 대한 자세한 내용은 PyTorch 설명서PyTorch FSDP MixedPrecision API를 참조하세요.

# Native PyTorch API from torch.distributed.fsdp import MixedPrecision dtype = torch.bfloat16 mixed_precision_policy = MixedPrecision( param_dtype=dtype, reduce_dtype=dtype, buffer_dtype=dtype ) model = FSDP( model, ..., mixed_precision=mixed_precision_policy )

특정 모델(예: Hugging Face 트랜스포머 Llama 모델)은 버퍼를 float32로 예상합니다. float32를 사용하려면 dtype 객체를 정의하는 줄에서 torch.float32torch.bfloat16으로 바꿉니다.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.