기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
활성화 체크포인트 및 파이프라인 병렬 처리가 켜져 있고 마이크로배치 수가 1보다 큰 경우 활성화 오프로딩은 메모리 사용량을 더욱 줄일 수 있는 추가 기능입니다. 활성화 오프로딩은 현재 CPU에서 실행되지 않는 마이크로배치에 해당하는 체크포인트 활성화를 비동기식으로 이동합니다. GPU가 마이크로배치의 역방향 패스에 활성화를 필요로 하기 직전에 이 기능은 오프로드된 활성화를 CPU에서 미리 가져옵니다.
참고
이 기능은 SageMaker 모델 병렬 처리 라이브러리 v1.6.0 이상에서 PyTorch에 사용할 수 있습니다.
활성화 오프로딩 사용 방법
마이크로배치 수가 1보다 크고 활성화 체크포인트가 켜져 있는 경우 활성화 오프로딩을 사용하여 메모리 사용량을 줄입니다(활성화 체크포인트 참조). 활성화 체크포인트를 사용하지 않는 경우 활성화 오프로딩은 효과가 없습니다. 마이크로배치 하나만 함께 사용하면 메모리가 절약되지 않습니다.
활성화 오프로딩을 사용하려면 modelparallel
구성에서 "offload_activations": True
를 설정합니다.
활성화 오프로딩은 nn.Sequential
모듈의 체크포인트 활성화를 비동기식으로 CPU로 이동합니다. PCIe 링크를 통한 데이터 전송은 GPU 계산과 겹칩니다. 오프로딩은 특정 체크포인트 계층의 순방향 패스가 계산되는 즉시 발생합니다. 활성화는 특정 마이크로배치의 역방향 패스에 필요하기 직전에 GPU로 다시 로드됩니다. 마찬가지로 CPU-GPU 전송도 계산과 겹칩니다.
활성화가 GPU로 다시 로드되는 시간을 조정하려면 구성 파라미터 "activation_loading_horizon"
을 사용할 수 있습니다(기본값이 4로 설정되고 0보다 큰 int
이어야 함). 활성화 로드 구간이 크면 활성화가 GPU에 더 빠르게 로드될 수 있습니다. 구간이 너무 크면 활성화 오프로딩이 메모리 절약에 미치는 영향이 줄어들 수 있습니다. 구간이 너무 작으면 활성화가 제때 로드되지 않아 중복되는 양이 줄어들고 성능이 저하될 수 있습니다.
작은 정보
활성화 오프로딩은 천억 개 이상의 파라미터가 있는 대형 모델에 유용할 수 있습니다.
SageMaker PyTorch 예측기 구성
mpi_options = {
"enabled" : True,
"processes_per_host" : 8, # 8 processes
"custom_mpi_options" : "--mca btl_vader_single_copy_mechanism none "
}
smp_options = {
"enabled":True,
"parameters": {
"microbatches": 4,
"pipeline_parallel_degree": 2, # alias for "partitions"
"placement_strategy": "cluster",
"tensor_parallel_degree": 2, # tp over 2 devices
"ddp": True,
"offload_activations": True,
"activation_loading_horizon": 4 # optional. default is 4.
}
}