활성화 오프로딩 - 아마존 SageMaker

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

활성화 오프로딩

활성화 체크포인트 및 파이프라인 병렬 처리가 켜져 있고 마이크로배치 수가 1보다 큰 경우 활성화 오프로딩은 메모리 사용량을 더욱 줄일 수 있는 추가 기능입니다. 활성화 오프로딩은 현재 에서 실행되고 있지 않은 마이크로배치에 해당하는 체크포인트 활성화를 비동기적으로 이동합니다. CPU 이 기능은 마이크로배치의 역방향 패스를 위한 활성화가 GPU 필요하기 직전에 오프로드된 활성화를 프리페치합니다. CPU

참고

이 기능은 모델 병렬 처리 라이브러리 v1.6.0 PyTorch 이상에서 사용할 수 있습니다. SageMaker

활성화 오프로딩 사용 방법

마이크로배치 수가 1보다 크고 활성화 체크포인트가 켜져 있는 경우 활성화 오프로딩을 사용하여 메모리 사용량을 줄입니다(활성화 체크포인트 참조). 활성화 체크포인트를 사용하지 않는 경우 활성화 오프로딩은 효과가 없습니다. 마이크로배치 하나만 함께 사용하면 메모리가 절약되지 않습니다.

활성화 오프로딩을 사용하려면 modelparallel 구성에서 "offload_activations": True를 설정합니다.

활성화 오프로딩은 모듈의 체크포인트 활성화를 비동기적으로 이동합니다. nn.Sequential CPU 링크를 통한 데이터 전송은 계산과 겹칩니다. PCIe GPU 오프로딩은 특정 체크포인트 계층의 순방향 패스가 계산되는 즉시 발생합니다. 활성화는 특정 마이크로배치의 역방향 패스에 필요하기 GPU 직전으로 다시 로드됩니다. CPU- GPU 전송은 계산과 비슷하게 겹칩니다.

활성화가 로 다시 로드되는 시간을 조정하려면 구성 매개 변수를 사용할 수 있습니다 "activation_loading_horizon" (기본값은 4로 설정되고 int 0보다 커야 함). GPU 활성화 로드 기간이 길어지면 활성화가 이전 버전으로 다시 로드됩니다. 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. } }