LatentQuant, NVFP4 양자화 아래에서 정책이 믿는 잠복 약속을 지키는 법
복원 점수는 그대로인데 로봇 성공률이 무너진 이유를 따라가며, 인코더 정렬부터 고정하는 2단계 NVFP4 학습으로 정책이 기대하는 잠복 분포를 되찾은 LatentQuant를 해설합니다.
원문 논문 보기
이번에 다룰 논문은 LatentQuant, Preserving the Policy-Facing Latent Contract under NVFP4 VAE Quantization으로, arXiv에 2610.03959번으로 공개된 연구입니다. 원문 링크는 제목 아래에 걸려 있습니다. 이 논문이 내세우는 주장은 한 문장으로 정리됩니다. 비디오 VAE를 NVFP4로 양자화할 때는 복원 품질만 지키는 것으로는 부족하고, 얼어붙은 채로 얹혀 있는 액션 정책이 기대하는 잠복 분포와의 약속까지 함께 지켜야 하며, 그러려면 인코더를 먼저 고정하는 순서로 학습해야 한다는 것입니다.

안녕하세요, 패트릭입니다.
저는 이 논문을 읽기 전에는 양자화에 대해 꽤 단순한 그림을 갖고 있었습니다. 정밀도를 낮추면 화질이 조금 깨지고, 그 깨짐이 크지 않으면 다운스트림도 괜찮을 거라고 생각했죠. 그런데 이 논문의 첫 번째 숫자를 보고 그 생각이 바로 흔들렸습니다. Wan2.1에서 joint NVFP4 QAT를 돌렸을 때 VBench-7 점수가 0.7409에서 0.7403으로 거의 그대로였는데, 같은 모델 위에서 돌린 LIBERO 성공률은 95.5퍼센트에서 10.5퍼센트로 주저앉았기 때문입니다. 복원 지표로 보면 합격인데, 로봇으로 보면 낙제인 셈이죠. 제가 이 논문에서 가장 흥미롭게 본 부분은 바로 이 간극이었습니다. 무엇이 멀쩡하고 무엇이 무너졌는지를 가르는 선이 어디에 있는지, 오늘은 그 선을 처음부터 함께 따라가 보겠습니다.
왜 복원 점수는 멀쩡했는데 로봇 팔은 멈췄을까
일상에서 계약이 깨지는 장면을 떠올려보시면 이해가 빠릅니다. 인테리어 업자가 사진을 찍어오면 벽지는 멀쩡해 보이는데, 막상 문을 열어보면 문틀이 2밀리미터 틀어져서 문이 닫히지 않는 경우가 있죠. 사진만 보는 사람에게는 문제가 없어 보이지만, 그 문을 매일 쓰는 사람에게는 치명적인 문제입니다. 이 논문이 말하는 VAE 양자화의 실패도 구조가 비슷합니다. 디코더가 뽑아내는 영상만 보면 거의 같아 보이는데, 그 영상을 만드는 중간 재료인 latent가 미묘하게 틀어지면서, 그 재료를 매일 쓰는 정책이 일을 못 하게 되는 것이죠.
그렇다면 정책은 왜 그렇게 예민할까요? 이유를 알려면 요즘 월드 액션 모델이 어떻게 생겼는지를 봐야 합니다. 최근 월드 액션 모델들은 비디오 VAE를 처음부터 새로 학습하지 않습니다. 이미 잘 학습된 비디오 VAE를 가져와서 인코더가 뽑은 latent를 그대로 액션 정책의 조건으로 먹입니다. 그리고 정책은 얼어 있습니다. VAE를 양자화한다고 정책을 다시 학습하지 않는다는 뜻이죠. 다시 말해 정책은 예전에 보던 latent의 맛을 기억하고 있고, 앞으로도 그 맛이 올 거라고 믿고 행동합니다. 그런데 양자화된 인코더가 조금 다른 맛을 내기 시작하면 어떻게 될까요? 영상은 비슷해 보여도 정책의 눈에는 세상이 달라진 것처럼 보이는 것입니다.
저는 이 대목에서 질문 하나를 메모했습니다. 우리가 VAE를 평가할 때 영상 품질만 보면 충분할까? 이 논문의 답은 분명합니다. 그렇지 않다는 것이죠. 영상 품질은 디코더가 보는 세상의 품질이고, 정책 성공률은 인코더가 지키는 약속의 품질인데, 둘은 같은 숫자로 묶이지 않는다는 것입니다.
월드 액션 모델에서 VAE는 그냥 압축기가 아니다
VAE를 처음 접하면 대개 압축기로 배웁니다. 영상을 넣으면 작아지고, 다시 꺼내면 비슷하게 돌아오면 잘 만든 것이라는 설명이죠. 월드 액션 모델에서는 이 설명이 반만 맞습니다. 여기서 VAE는 압축기이면서 동시에 정책의 눈이기도 하기 때문입니다.
구조를 따라가 보면 흐름이 이렇습니다. 카메라 영상이 들어오면 인코더가 이를 latent로 바꿉니다. 이 latent는 두 갈래로 갑니다. 한 갈래는 디코더로 가서 다시 영상으로 복원되고, 다른 한 갈래는 액션 정책으로 가서 다음에 팔을 어디로 움직일지를 정하는 재료가 됩니다. 정책 입장에서는 디코더가 무엇을 복원했는지가 중요하지 않습니다. 자기가 받은 latent가 예전에 학습할 때 보던 분포 안에 들어오는지가 중요합니다. 그래서 연구진은 이 관계를 latent contract라는 표현으로 부릅니다. 계약이라는 단어가 괜히 들어간 게 아닙니다. 인코더가 이렇게 생긴 latent를 주겠다고 약속하면, 정책은 그 약속을 믿고 freezing된 채로 얹혀 있다는 뜻이니까요.
여기서 재미있는 질문이 생깁니다. 양자화를 하면 이 두 갈래 중 어디가 먼저 흔들릴까요? 직관적으로는 둘 다 흔들릴 것 같지만, 논문이 보여주는 순서는 조금 다릅니다. 디코더 쪽 복원은 생각보다 오래 버팁니다. 반면 정책 쪽 계약은 먼저 깨집니다. 영상은 멀쩡한데 로봇은 못 움직이는 이유가 여기 있습니다. 저희가 새로운 AI 아키텍처를 볼 때도 benchmark 숫자만 보지는 않습니다. 실제로 무엇이 바뀌었고, 그 변화가 시스템에서 어떤 비용 구조를 만드는지를 함께 봅니다. 이 논문도 같은 태도를 요구합니다. VBench 숫자 뒤에 숨어 있는 latent 분포의 이동을 보라는 것이죠.
그렇다면 무엇이 깨진 걸까, 재구성인가 약속인가
논문은 이 질문에 답하기 위해 일부러 실험을 나눠서 설계했습니다. 양자화를 한 번에 다 적용하면 어디서 깨졌는지 알 수 없으니까, 디코더만 양자화했을 때와 인코더까지 같이 양자화했을 때를 나눠서 본 것입니다. 이런 식의 나눔은 해석을 훨씬 깨끗하게 만듭니다.
결과를 따라가 보면 이야기가 이렇게 이어집니다. 디코더만 건드리면 복원 품질은 조금 흔들리지만 정책이 받는 latent 자체는 원래 인코더가 만든 것이라서 분포가 크게 틀어지지 않습니다. 그런데 인코더와 디코더를 함께 양자화하면서 같이 학습하면, 복원 손실은 다시 좋아지는데 latent 분포는 원래 자리에서 점점 멀어집니다. 복원 손실은 내려가는데 정책 성공률은 내려가는 것이죠. 얼핏 보면 모순처럼 보이지만, 학습 동역학을 보면 납득이 됩니다. 복원 손실을 줄이는 가장 빠른 길이 latent 분포를 지키는 길이 아닐 수 있기 때문입니다.
생각해보면 사람도 비슷하게 배웁니다. 시험 점수를 올리는 가장 빠른 방법이 개념을 이해하는 게 아니라 답안 패턴을 외우는 것일 때가 있죠. 점수는 오르지만 실력은 그대로이거나 오히려 내려갑니다. joint QAT에서 벌어진 일도 비슷합니다. 모델은 복원 손실을 줄이기 위해 인코더를 움직였고, 그 결과 영상 점수는 회복됐지만 정책이 믿던 분포는 떠나버린 것입니다. 저는 이 숫자보다 그 뒤의 구조가 더 중요하다고 봅니다. 무엇이 좋아졌는지가 아니라 무엇을 희생해서 좋아졌는지를 봐야 하니까요.

수치로 보면 더 선명해진다, 0.7403과 10.5퍼센트의 간극
숫자를 prose 안에 넣어 보면 간극이 더 또렷해집니다. Wan2.1의 FP32 기준 VBench-7 점수는 0.7409였고, joint NVFP4 QAT 뒤에는 0.7403이었습니다. 차이는 0.0006에 불과합니다. 소수점 셋째 자리에서야 갈리는 수준이죠. 이 숫자만 보면 양자화는 거의 완벽해 보입니다.
그런데 같은 체크포인트를 LIBERO에 올리면 성공률이 95.5퍼센트에서 10.5퍼센트로 떨어집니다. 85퍼센트포인트가 증발한 것입니다. 비율로 따지면 원래 성공하던 시도 열 번 중 아홉 번이 실패로 바뀐 셈이죠. 복원 지표는 그대로인데 조작 능력은 사라졌다는 뜻입니다. 개인적으로는 이 대비가 논문 전체에서 가장 정직한 대목이라고 느꼈습니다. 좋은 점수 뒤에 숨지 않고, 나쁜 점수를 앞에 내밀었기 때문입니다.
여기서는 조금 조심해서 읽을 필요가 있습니다. 이 숫자가 NVFP4 자체가 로봇에 나쁘다는 뜻은 아닙니다. 같은 NVFP4라도 어떻게 학습하느냐에 따라 결과가 완전히 달라지기 때문입니다. 뒤에서 다룰 LatentQuant는 같은 정밀도, 같은 하드웨어 조건에서도 LIBERO 95.75퍼센트, RoboTwin 68.8퍼센트를 복원합니다. 다시 말해 10.5퍼센트라는 숫자는 정밀도의 한계가 아니라 학습 순서의 실패를 가리킵니다. 숫자를 볼 때는 숫자 자체보다 그 숫자가 어떤 조건에서 나왔는지를 함께 봐야 한다는 점을 다시 확인하게 됩니다.
양자화는 왜 매번 인코더를 흔드는가
그렇다면 joint 학습은 왜 매번 인코더를 흔들게 될까요? 논문은 이 부분을 gradient의 경로로 설명합니다. 양자화에서 activation에 quantize와 dequantize를 끼워 넣으면, 순전파에서는 값이 둥글게 다듬어지고 역전파에서는 미분할 수 없는 구간을 우회하는 근사가 들어갑니다. 디코더 쪽에 이런 연산이 들어가면 두 가지가 동시에 바뀝니다. 디코더가 복원하는 신호 자체가 바뀌고, 디코더를 거쳐 인코더로 돌아가는 Jacobian도 바뀌는 것이죠.
Jacobian이라는 말이 어렵게 들리지만, 의미는 단순합니다. 디코더가 인코더에게 보내는 피드백의 방향과 크기가 달라진다는 뜻입니다. 원래 인코더가 받던 피드백은 고정밀 디코더를 통과한 피드백이었는데, 양자화된 디코더를 통과하면서 피드백이 비뚤어지는 것입니다. 인코더 입장에서는 나침반이 틀어진 셈이죠. 틀어진 나침반을 믿고 열심히 걸을수록 목적지에서는 멀어집니다. 논문이 말하는 persistent latent drift가 바로 이 상태입니다. 한 번 틀어진 분포가 학습이 이어지면서 원래 자리로 돌아오지 않고 계속 밀려나는 것이죠.
문제는 그다음입니다. 이 drift는 복원 손실 그래프에서는 잘 보이지 않습니다. 손실은 내려가니까요. 그래서 엔지니어가 그래프만 보고 있으면 모든 게 잘되는 것처럼 보입니다. 실제로 깨지는 것은 그래프에 없는 계약 쪽입니다. 저는 여기서 조금 의심했습니다. 우리가 평소에 보는 학습 곡선이 정말 모델의 건강을 다 보여주는 걸까? 이 논문을 읽고 나면 학습 곡선 하나만 믿는 게 얼마나 위험한지 실감하게 됩니다. 특히 다운스트림에 얼어붙은 정책이 얹혀 있을 때는 더 그렇습니다.

생각을 뒤집으면 답이 보인다, 인코더부터 고정하는 순서
여기까지 오면 질문이 자연스럽게 바뀝니다. 복원 손실을 줄이면서 latent 분포는 그대로 둘 수는 없을까? 논문이 내놓은 답은 학습 순서를 바꾸는 것이었습니다. 인코더와 디코더를 한꺼번에 움직이지 말고, 인코더를 먼저 원래 자리에 묶어둔 뒤 디코더만 움직이라는 것이죠.
이 발상은 일상적인 비유로 풀면 더 잘 와닿습니다. 이사를 할 때 가구 배치부터 바꾸면 짐을 어디에 둘지 계속 헷갈리죠. 그래서 먼저 기둥과 벽 같은 구조를 고정하고, 그 안에서 가구를 옮기는 게 순서입니다. LatentQuant의 2단계 구조도 같습니다. 1단계에서는 양자화된 인코더가 고정밀 인코더와 같은 latent를 내도록 맞춥니다. 정책이 기대하는 맛을 먼저 고정하는 것이죠. 2단계에서는 그렇게 고정된 인코더를 얼리고, 양자화된 디코더만 복원 품질을 높이도록 적응시킵니다.
저는 이 순서가 마음에 들었습니다. 흔히 양자화라고 하면 더 정교한 rounding이나 더 좋은 스케일링을 떠올리기 쉬운데, 이 논문은 정밀도 기법이 아니라 학습의 순서를 문제 삼았기 때문입니다. 다시 말해 무엇을 먼저 고정할 것인가라는 시스템 질문으로 바꾼 셈이죠. 실제 시스템 관점에서 보면 다음 질문이 바로 생깁니다. 인코더를 고정하면 복원 품질이 손해 보지 않을까? 논문의 답은 손해를 디코더 적응으로 메울 수 있다는 것입니다. 인코더를 묶어도 디코더가 충분히 유연하면 영상 품질은 다시 올라온다는 것이죠. 순서가 바뀌면 trade-off의 모양도 바뀌는 셈입니다.
LatentQuant는 실제로 어떻게 학습되는가
이제 메커니즘을 조금 더 실행 가능하게 따라가 보겠습니다. 1단계의 목표는 양자화된 인코더의 출력을 고정밀 인코더의 출력에 맞추는 것입니다. 입력 영상은 같은 것을 넣고, 두 인코더가 내놓는 latent 사이의 차이를 줄이는 방향으로 양자화된 쪽만 학습합니다. 이때 정책은 건드리지 않습니다. 정책은 얼어 있으니까요. 기준이 되는 것은 어디까지나 원래 고정밀 인코더가 만들던 분포입니다.
이 단계가 끝나면 양자화된 인코더는 원래 인코더와 거의 같은 latent를 내게 됩니다. 계약의 기준점이 복원된 셈이죠. 그러면 2단계로 넘어갑니다. 여기서는 인코더를 얼립니다. 더 이상 움직이지 못하게 묶어둔다는 뜻입니다. 그리고 양자화된 디코더만 복원 손실을 보고 학습합니다. 인코더가 고정돼 있으니 디코더는 자기 쪽에서 최선을 다해 영상을 복원해야 합니다. 인코더를 흔들어서 손실을 줄이는 지름길이 막힌 것이죠.
(참고로 이런 2단계 나눔은 학습 비용이 두 배가 된다는 뜻은 아닙니다. 단계를 나눈다고 해서 매번 처음부터 다시 학습하는 것이 아니라, 각 단계의 역할이 다르기 때문에 전체 수렴이 오히려 안정되는 쪽에 가깝습니다.)
이 구조가 중요한 이유는 gradient의 경로를 끊기 때문입니다. 앞에서 말한 비뚤어진 Jacobian이 인코더를 흔들던 통로가, 인코더를 얼리는 순간 물리적으로 닫힙니다. 디코더 쪽 양자화 노이즈가 있어도 그 영향이 인코더 분포까지 번지지 않는 것이죠. 표면적으로 보면 단순합니다. 실제로는 그렇지 않습니다. 언제 얼리고 언제 풀지를 정하는 것이 성능을 가르기 때문입니다. 논문이 보여주는 것은 인코더 정렬을 먼저 끝내고 나서야 디코더 적응이 의미를 갖는다는 순서의 엄격함입니다.

숫자는 돌아왔을까, LIBERO와 RoboTwin에서 확인한 것
이제 결과를 볼 차례입니다. Wan2.1과 Wan2.2라는 두 가지 베이스에서 실험이 이뤄졌는데, 두 경우 모두 LatentQuant는 기준선에 가까운 조작 성능을 되찾았습니다. LIBERO에서는 95.75퍼센트, RoboTwin에서는 68.8퍼센트였습니다. joint QAT에서 10.5퍼센트까지 떨어졌던 것을 생각하면, 같은 NVFP4 정밀도에서 학습 순서만 바꿔 85퍼센트포인트 이상을 되찾은 셈이죠.
이 결과는 마음에 들지만, 여기까지 일반화하기에는 데이터가 부족합니다. LIBERO와 RoboTwin이라는 두 벤치에서 확인된 회복이 모든 조작 작업으로 그대로 이어진다고 단정할 수는 없기 때문입니다. 논문도 그 점을 과장하지 않습니다. 다만 방향은 분명합니다. 복원 지표와 정책 성공률이 함께 회복됐다는 것이죠. VBench 점수가 유지되면서 정책 성공률도 돌아왔다는 점이 중요합니다. 둘 중 하나만 좋아진 게 아니라 계약과 복원이 함께 지켜졌다는 뜻이니까요.
좋은데, 이걸 실제로 어떻게 서빙할까요? 라는 질문이 여기서 생깁니다. 성공률이 돌아왔다고 해도 속도가 느리면 양자화의 의미가 반감되기 때문입니다. 그래서 다음으로 볼 숫자는 속도입니다. 논문은 NVIDIA B300 GPU에서 NVFP4 실행이 BF16 cuDNN 대비 종단간 VAE 속도에서 1.17배에서 1.26배의 향상을 냈다고 보고합니다. 17퍼센트에서 26퍼센트 빨라졌다는 뜻이죠. 엄청난 도약처럼 들리지 않을 수 있지만, VAE가 매 스텝마다 도는 월드 모델 파이프라인에서는 이 차이가 쌓입니다. 특히 실시간 조작처럼 지연에 민감한 루프에서는 20퍼센트 안팎의 단축이 체감으로 이어질 때가 많습니다.

B300 위에서 속도는 얼마나 빨라졌을까
속도 이야기는 하드웨어 조건과 함께 읽어야 합니다. 논문이 밝힌 조건은 NVIDIA B300 GPU 위에서의 NVFP4 실행과 BF16 cuDNN 실행의 비교입니다. 같은 VAE, 같은 입력 조건에서 종단간 속도를 쟀을 때 1.17배에서 1.26배가 나왔다는 것이죠. 여기서 종단간이라는 말이 중요합니다. 특정 커널 하나만 빠르다는 게 아니라 VAE 전체를 돌리는 데 걸리는 시간이 줄었다는 뜻이니까요.
그렇다면 이 속도 향상은 어디서 오는 걸까요? NVFP4는 4비트 부동소수점 형태로, 메모리에서 읽어오는 양이 줄어들고 연산기의 처리량도 늘어나는 쪽에 가깝습니다. VAE처럼 activation 이동이 많은 구조에서는 메모리 대역폭이 병목이 되기 쉬운데, 정밀도를 낮추면 그 병목이 완화됩니다. 다만 이런 향상은 공짜가 아닙니다. 정밀도를 낮춘 대가로 분포가 틀어질 수 있고, 그 대가를 LatentQuant 같은 학습 순서로 치른 셈이죠. 속도 숫자만 보면 1.2배 안팎이지만, 그 뒤에는 계약을 지키기 위한 2단계 학습이 함께 있다는 점을 봐야 합니다.
실제 시스템 관점에서 보면 다음 질문이 바로 생깁니다. 이 속도가 실제 로봇 루프에서도 그대로 재현될까? VAE 단독 벤치와 카메라 입력부터 액션 출력까지의 전체 루프는 조건이 다르기 때문입니다. 정책 추론 시간, 통신 지연, 제어 주기 같은 요소가 얽히면 VAE 단독 향상이 전체 지연 단축으로 그대로 이어지지 않을 수 있습니다. 논문이 보여준 것은 VAE 자체의 가속이지 전체 시스템의 가속은 아닙니다. 그럼에도 VAE가 병목인 파이프라인에서는 의미가 있습니다. 월드 모델이 매번 VAE를 거쳐 미래를 상상하고 행동을 정하는 구조라면, VAE 20퍼센트 단축은 전체 스텝 예산을 바꾸는 일이니까요.
그래서 우리는 무엇을 기준으로 삼아야 할까
처음에 던졌던 질문으로 돌아오면, 복원 점수만으로 양자화를 판단해도 될까요? 이 질문에 논문이 주는 답은 분명합니다. 아니라는 것이죠. 왜냐하면 얼어붙은 정책이 인코더 latent를 직접 읽는 구조에서는 복원 점수와 정책 성공률이 서로 다른 계약을 재기 때문인데, 같은 모델에서 나온 숫자라도 같은 약속을 보증하지는 않기 때문입니다. 저는 이 구분이 실무적으로 가장 뼈아프다고 봅니다. 그래프는 멀쩡한데 로봇이 멈추는 밤을 한 번 겪어보면, 숫자 하나만 보는 평가가 얼마나 위험한지 바로 실감하게 되니까요.
그런데 이 논문이 흥미로운 이유는 NVFP4라는 특정 포맷을 다뤘기 때문만은 아닙니다. 오히려 양자화의 평가 단위 자체를 다시 물었기 때문인데, 파라미터를 얼마나 줄였는지나 복원 점수가 얼마나 유지됐는지를 넘어 다운스트림이 기대하는 분포가 얼마나 유지됐는지를 물은 것이죠. 그래서 앞으로 월드 액션 모델이 더 흔해지고 하나의 VAE를 여러 정책이 공유하는 구조가 늘어나면, 이런 정책 기준 평가는 더 중요해질 수밖에 없습니다. VAE 하나를 바꾸면 그 위에 얹힌 정책들이 한꺼번에 흔들리기 때문입니다.
그렇다면 제가 앞으로 보고 싶은 것은 이 순서의 일반화입니다. 인코더를 정렬한 뒤 고정한다는 아이디어가 Wan 계열 바깥의 VAE에서도 같은 방식으로 통할지, 그리고 latent를 쓰는 정책이 diffusion 형태가 아닐 때도 계약이 같은 모양으로 깨졌다가 같은 순서로 회복될지가 궁금하기 때문입니다. 문제는 그다음입니다. 복원 손실 그래프에는 보이지 않는 깨짐을 학습 중간에 알려주는 신호가 있을까요? 만약 그런 조기 신호가 있다면 엔지니어는 10.5퍼센트라는 숫자까지 가기 전에 멈출 수 있을 테니까요. 여러분의 파이프라인에서는 어떠신가요. 복원 점수 뒤에 숨어 있는 약속은 없는지, 한 번쯤 점검해볼 때가 된 것 같습니다.
