모델 샤딩이란 무엇이며, 홈 AI 메모리 한계에서 왜 중요한가요?

에바 왕기술 작가 그리고 이자 ZimaSpace의 상주 장인입니다. 평생을 기술에 열정을 가진 사람으로서 홈랩과 오픈소스 소프트웨어에 열정을 가지고 있으며,복잡한 기술 개념을 쉽게 이해할 수 있는 실습 가이드로 번역하는 데 전문성을 가지고 있습니다.에바는 셀프 호스팅이 어렵지 않고 재미있어야 한다고 믿습니다. 그녀의 튜토리얼을 통해 커뮤니티가 하드웨어 설정의 신비를 풀도록돕고 있습니다. 첫 NAS 구축부터 Docker 컨테이너 마스터링까지.

모델 샤딩은 필요한 모델 상태를 여러 장치에 분산하므로, 하나의 가속기 메모리를 초과하는 모델도 로드하고 실행할 수 있습니다.

가정용 AI 서버에서 중요한 점은 체크포인트가 여러 파일로 제공되었는지가 아니라, 런타임 가중치, 레이어, 텐서 또는 기타 상태가 실제로 서로 다른 장치에 배치되는지입니다. 샤딩은 단일 GPU로는 불가능한 메모리 요구 사항을 여러 장치를 사용하는 실행 가능한 배포로 바꿀 수 있지만, 샤드끼리는 여전히 데이터를 교환하거나 단계 간 작업을 전달해야 합니다. 따라서 인터커넥트 대역폭, 장치 간 불균형, 런타임 지원이 다음 한계가 됩니다.

런타임 샤딩은 모델 상태를 여러 장치에 분산합니다

실행 중인 모델에는 레이어가 실행될 때 사용할 수 있어야 하는 텐서가 포함됩니다. 샤딩은 모든 장치에 전체 상태를 복제하는 대신, 서로 다른 장치가 각기 다른 부분을 소유하도록 배치를 변경합니다.

분산 텐서는 샤딩된 텐서 배치를 사용할 수 있습니다. 이를 통해 분산 차원을 디바이스 메시 전반에 할당하며, 각 랭크에 동일하게 저장하지 않습니다.

직접적인 메모리 이점은 장치별 상주 메모리가 줄어든다는 것입니다. 시스템 수준에서는 이제 모든 연산에 필요한 데이터를 한 장치가 모두 보유하지 않으므로, 조정 작업이 추론의 일부가 됩니다.

체크포인트 샤드는 실행 중인 샤딩 모델과 다릅니다

대형 모델 저장소는 다운로드와 점진적 로딩을 쉽게 하기 위해 체크포인트를 여러 파일로 나누는 경우가 많습니다. 이러한 패키징 방식만으로는 런타임이 로딩을 완료한 후 텐서가 어디에 배치되는지 결정되지 않습니다.

파일 수준 샤딩과 런타임 배치는 서로 별개입니다. 로더가 샤딩된 체크포인트를 여러 장치에 분산 배치할 수 있기 때문입니다.

따라서 가정용 사용자는 디스크에서 수십 개의 `.safetensors` 샤드를 보더라도, 런타임이 여전히 전체 모델을 하나의 GPU에 배치하려고 할 수 있습니다. 반대로 런타임이 로딩 중 체크포인트를 다른 여러 장치 레이아웃으로 재분할할 수도 있습니다.

용량 계획을 세울 때는 저장소의 파일 개수가 추론 토폴로지를 보여 준다고 가정하지 말고, 시작 후 실제 디바이스 맵과 상주 메모리 할당을 확인해야 합니다.

샤딩은 통신 또는 단계 간 작업 전달을 추가합니다

한 장치가 다른 샤드에 필요한 값을 생성하면, 데이터가 인터커넥트를 통해 이동하거나 집단 연산을 통해 동기화되어야 합니다. 정확한 트래픽은 런타임이 레이어 내부에서 텐서를 분할하는지, 서로 다른 장치에 서로 다른 레이어 범위를 배치하는지, 또는 필요할 때만 샤딩된 상태를 모으는지에 따라 달라집니다.

각기 다른 다중 장치 추론 전략은 메모리 배치와 통신 패턴 사이에서 서로 다른 절충점을 가집니다.

이 때문에 두 GPU의 VRAM을 합친 용량이 충분해도 모델을 느리게 서비스할 수 있습니다. PCIe 또는 다른 연결이 로컬 가속기 메모리보다 훨씬 느리다면, 활성값을 이동하거나 부분 결과를 동기화하는 작업이 성능을 좌우할 수 있습니다.

서로 다른 장치는 하나의 샤드를 병목으로 만들 수 있습니다

이기종 가정용 서버에는 메모리 용량, 연산 속도, 링크 폭 또는 세대가 서로 다른 GPU가 함께 사용될 수 있습니다. 수학적으로 균등한 분할이라도 가장 느리거나 메모리가 가장 작은 장치가 전체 요청의 처리 속도를 결정할 수 있습니다.

따라서 레이어 배치 및 오프로딩 도구는 대칭형 하드웨어를 가정하지 말고 실제 장치 용량을 반영해야 합니다. 명시적인 분산 모델 실행은 자동으로 통합 메모리 풀을 만드는 추상화가 아니라 병렬 처리 구성을 사용합니다.

실용적인 배치에서는 더 큰 GPU에 더 많은 레이어를 할당하거나 지연 시간에 민감한 구성 요소를 가장 빠른 경로에 둘 수 있습니다. 목표는 샤드 수를 동일하게 만드는 것이 아니라, 모든 장치에 맞으면서 핵심 경로의 균형을 맞추는 것입니다.

동일한 프롬프트를 사용해 장치별 메모리, 사용률, 전송 시간, 유휴 구간을 측정하세요. 특정 샤드가 계속 대기하거나 메모리 밖으로 데이터를 내보낸다면, 성능을 제한하는 것은 총 VRAM 용량이 아니라 토폴로지라는 증거입니다.

모델 샤딩은 무엇보다 메모리 사용 가능성을 높이는 도구입니다

샤딩은 샤딩하지 않은 모델이 하나의 장치에 전혀 들어가지 않을 때 가장 큰 가치를 발휘합니다. 모델을 로드할 수 있게 되면 최적화의 초점은 인터커넥트 비용, 배치 처리, KV 캐시 배치, 그리고 더 작거나 양자화된 모델이 더 단순한 선택인지 여부로 이동합니다.

구체적인 연산 전략 중 하나는 텐서 병렬 추론입니다. 모델 샤딩은 어떤 필수 상태를 어느 장치에 배치해야 하는지를 다루는 더 넓은 배치 문제입니다.

통합 VRAM을 하나의 투명한 메모리 풀로 취급하지 마세요. 샤딩을 사용하면 분리된 메모리가 협력할 수 있지만, 모든 런타임에는 배치 규칙과 통신 비용이 있으며 이것이 결과적인 배포가 실제로 유용한지 결정합니다.

자주 묻는 질문

샤딩된 체크포인트는 샤딩된 실행 모델과 같은가요?

아니요. 체크포인트 샤드는 저장 또는 로딩을 위해 파일을 나누는 것이고, 런타임 샤딩은 추론 중 어떤 모델 상태가 어느 장치에 상주하는지를 결정합니다.

모델 샤딩은 텐서 병렬 처리와 같은가요?

아니요. 텐서 병렬 처리는 텐서 연산을 분할하여 샤딩된 모델을 실행하는 한 가지 방법입니다. 샤딩에는 레이어, 단계, 매개변수 또는 기타 배치 전략도 포함됩니다.

12GB GPU 두 개가 자동으로 사용 가능한 24GB 메모리 풀을 제공하나요?

아니요. 런타임이 모델을 명시적으로 분할해야 하며, 통신 비용, 중복 상태, KV 캐시, 장치별 여유 메모리 때문에 실제로 사용할 수 있는 통합 용량은 줄어듭니다.

기술 및 AI 허브

더 읽어보기

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.