S4 Weights
Lossless GPU checkpoint compression
PyTorch training checkpoint(weights + optimizer state)용 GPU lossless compression codec입니다. 각 tensor를 byte-plane split하고 exponent plane은 ANS로, mantissa는 GDeflate(nvCOMP)로 GPU에서 route하여 bf16, fp16, fp32에 대해 bit-exact(lossless)를 유지합니다. compressed checkpoint는 자체 S3 bucket에 저장됩니다. g6 / g6e GPU AMI로 제공됩니다.
S4 Weights는 training run이 기록하는 checkpoint — model weight와 optimizer state — 를 투명하고 lossless하게 압축하는 codec입니다. restore는 byte-for-byte identical이며, 모든 지원 dtype에서 adversarial bit pattern(NaN, ±Inf, denormal, -0.0)에 대해 검증되었습니다. checkpoint를 자주 찍는 run의 경우 consecutive checkpoint 간 byte-XOR delta도 압축합니다. AMI build 자체가 build GPU에서 compress→decompress round-trip이 bit-exact가 아니면 fail하므로, 깨진 plane reassembly가 customer image에 도달하지 않습니다. checkpoint는 자체 VPC와 S3 bucket을 벗어나지 않습니다.
해결하고자 하는 과제
대규모 PyTorch 학습에서는 모델 가중치와 옵티마이저 상태가 포함된 체크포인트를 자주 기록하므로 Amazon S3의 차지하는 공간과 전송하는 바이트 수가 지속적으로 증가합니다. 체크포인트 크기가 커지면 저장/로드 과정에서 매번 학습이 중단되는 시간도 길어져 스토리지 비용과 GPU 대기 시간이 모두 누적됩니다. 이들 체크포인트는 손실이나 양자화가 전혀 허용되지 않는 원시 bf16/fp16/fp32 수치이므로, 안심하고 사용하려면 반드시 무손실(lossless) 압축이어야 합니다.
작동 원리
- 1
GPU 상에서 바이트 플레인으로 분할
각 텐서는 GPU 상에서 부호, 지수, 가수 바이트 플레인으로 분할되어 각각의 특성에 적합한 코덱으로 전달됩니다. 지수 플레인은 ANS 엔트로피 코딩으로, 가수 플레인은 GDeflate로, 부호 플레인은 비트 패킹을 거쳐 처리됩니다(NVIDIA nvCOMP 기반 구축).
- 2
체크포인트 간 델타 압축
체크포인트를 빈번히 기록하는 학습 작업의 경우, S4 Weights는 연속되는 체크포인트 간의 바이트 XOR 델타를 저장 및 압축합니다. 저장 시점마다 대부분의 가중치가 거의 이동하지 않는다면, 이 델타는 원본 체크포인트보다 훨씬 더 작은 크기를 가집니다.
- 3
비트 단위 완벽 일치 복원 및 자체 S3에 저장
복원은 언제나 바이트 단위로 완벽히 동일하며, 지원하는 모든 dtype에 대해 적대적 비트 패턴(NaN, +/-Inf, denormal, -0.0)을 기준으로 검증을 거쳤습니다. 압축된 체크포인트는 사용자가 구성한 S3 버킷에 보관되어 계정 외부로 전송되지 않습니다.
주요 특징
bf16 / fp16 / fp32에 대해 lossless(byte-for-byte), adversarial NaN / ±Inf / denormal / -0.0에 대해 검증됨.
Byte-plane 분할: exponent → ANS, mantissa → GPU(nvCOMP)상의 GDeflate로 실행. checkpoint 간 delta chain도 압축합니다.
Compressed checkpoint는 자체 VPC 내부의 자체 S3 bucket에 저장됩니다. g6 / g6e GPU AMI.
포함 사항
- GPU 무손실 체크포인트 코덱 — bf16/fp16/fp32에 대해 PyTorch 학습 체크포인트(모델 가중치 및 옵티마이저 상태)를 비트 단위로 완벽하게 압축
- 바이트 플레인 데이터 경로(지수 플레인 -> ANS, 가수 플레인 -> GDeflate, 부호 플레인 비트 패킹, GPU 상에서 실행되며 NVIDIA nvCOMP 기반 구축)
- 연속된 체크포인트 간의 바이트 XOR 델타 체인 — 빈번하게 저장할 때 추가로 용량을 절감하고, 작은 고정 헤더 이상으로 블롭을 팽창시키지 않음
- 드롭인 PyTorch API — 투명한 s4weights.save / s4weights.load 및 base->delta 체크포인트 저장소(save_checkpoint / load_checkpoint)
- 적대적 비트 패턴 검증 — 지원되는 모든 dtype에서 NaN / +/-Inf / denormal / -0.0을 검증하며, GPU를 통한 압축->압축 해제 라운드트립이 비트 단위로 완벽히 일치하지 않는 경우 AMI 빌드 자체가 실패하도록 구성
- 엔드투엔드 CloudFormation 템플릿(deploy/cfn-train-runner.yaml)이 포함된 Ubuntu 22.04 기반 g6/g6e GPU AMI. 러너는 TCP 8080에서 헬스 엔드포인트를 제공하는 비 root systemd 서비스입니다.
- 자체 S3 레지스트리 버킷에 저장(데이터는 계정을 벗어나지 않음) 및 부팅 시 fail-closed 방식의 RegisterUsage 권한 검증
주요 활용 사례
체크포인트를 자주 작성하며 S3 스토리지 비용과 전송 바이트 수를 줄이고자 하는 대규모 PyTorch 학습
옵티마이저 상태가 학습을 지배하며 저장/로드 시의 지연 시간을 단축하고자 하는 워크로드
어떠한 손실이나 양자화도 허용하지 않고 비트 단위로 일치하는 복원(bit-exact restore) 보장이 필요한 학습 파이프라인
all-bf16 또는 저정밀도 옵티마이저 체크포인트 등 압축이 잘 되는 데이터를 다루는 팀
자주 묻는 질문
압축은 정말 무손실인가요?
예. 복원은 항상 바이트 단위로 완전히 일치하며, bf16/fp16/fp32 가중치 및 fp32 옵티마이저 상태에 대해 유해한 비트 패턴(NaN, +/-Inf, denormal, -0.0)을 대상으로 검증을 마쳤습니다. AMI 빌드 자체가 빌드 GPU 상에서의 압축->압축 해제 라운드 트립이 비트 단위로 일치(bit-exact)하지 않으면 실패하므로, plane reassembly가 깨진 코덱이 고객 이미지에 전달되는 일은 절대 없습니다.
얼마나 압축되나요?
데이터에 따라 다릅니다. all-bf16 및 저정밀도 옵티마이저 체크포인트는 압축이 잘 되며(규모가 클수록 효과가 큼), 저장 간격이 넓고 fp32 비중이 높은 체크포인트는 압축이 거의 되지 않습니다. 당사는 어떤 경우에 효과가 있는지 솔직하게 공개하며 고정된 압축률을 보장하지 않습니다. 또한 압축은 항상 무손실(lossless)이며, 작은 고정 헤더 크기를 초과하여 블롭을 확장하지 않습니다.
체크포인트는 어디에 저장되나요?
압축된 체크포인트는 사용자가 설정한 Amazon S3 레지스트리 버킷에 저장되며 계정을 절대 벗어나지 않습니다. 자체 VPC 내부에서 AMI를 실행하면, PyTorch 학습 코드가 s4weights.save / s4weights.load (또는 델타 체인 save_checkpoint / load_checkpoint)로 체크포인트를 작성하며, 각 텐서가 GPU에서 압축되어 비트 단위로 완전히 일치하는 압축 체크포인트 형태로 S3 레지스트리에 저장됩니다.
어떤 인스턴스에서 실행되며 요금은 어떻게 부과되나요?
g6 또는 g6e GPU 인스턴스에서 실행되며, 번들로 제공되는 CloudFormation 템플릿(deploy/cfn-train-runner.yaml)을 통해 엔드투엔드로 구성됩니다. 요금은 인스턴스 시간당 과금되며 연간 옵션도 있습니다. AWS가 실행 중인 인스턴스 시간을 자동으로 측정하고, 러너는 부팅 시 최초 1회 RegisterUsage를 호출하여 fail-closed 권한 검증을 수행합니다(권한이 없는 인스턴스는 시작되지 않습니다).
PyTorch 학습 코드에 쉽게 통합할 수 있나요?
드롭인 방식으로 바로 적용 가능합니다. 직관적인 s4weights.save / s4weights.load를 통해 체크포인트를 작성하거나, base->delta 체크포인트 저장소의 경우 save_checkpoint / load_checkpoint를 사용합니다. 각 텐서는 GPU 상에서 압축되며, 빈번한 저장이 발생하는 학습의 경우 연속된 체크포인트 간의 바이트 XOR 델타 역시 저장 및 압축됩니다.
요금제 모델
시간당 software fee + GPU EC2(g6 / g6e). instance type별 metered, annual option 제공.