OctLLM은 옥트리를 명시적 3D 언어로 써서 언어 능력을 지킨다
Octrees as an Explicit 3D Language
무엇인가
기존 3D LLM은 두 지점에서 타협한다. 첫째, 형상을 VQVAE 코드북 인덱스로 압축하거나(ShapeLLM-Omni) 메시를 OBJ 텍스트로 직렬화해(LLaMA-Mesh) 정점 좌표를 평범한 문자열로 취급한다. 그러면 미세 기하 디테일이 사라지고 공간적 지역성과 계층 구조가 모델이 보는 입력에서 명시적으로 드러나지 않는다. 둘째, 3D 모달리티를 전체 파인튜닝으로 습득하면서 사전학습된 텍스트·비전-언어 동작을 덮어쓴다. 논문은 4장에서 ShapeLLM-Omni와 LLaMA-Mesh 모두 3D 학습 후 일반 언어 능력의 상당 부분을 잃는다고 보고한다. 결과적으로 기존 방법은 3D 입력의 공간 구조나 언어 모델의 사전학습 능력 중 하나를 포기한다.
어떻게 동작하나
제안 방법의 핵심은 옥트리를 명시적 공간 언어로 쓰는 것이다. OctGPT를 따라 입력 메시를 최종 레벨이 목표 복셀 해상도와 맞는 옥트리로 인코딩하고, Z-order 순회로 점유 공간을 직렬화해 3D에서 가까운 노드가 1차원 시퀀스에서도 가깝게 남도록 한다. 이어 연속된 8개의 이진 점유 비트를 [0,255] 값을 갖는 바이트 단위 메시 토큰 하나로 묶어, 원시 이진 시퀀스 대비 길이를 8분의 1로 줄이면서도 이산적이고 복셀화된 옥트리 구조를 그대로 유지한다. 다만 깊이가 깊어지면 시퀀스가 급격히 길어지므로, 뒤에서 두 번째 레벨 노드의 일정 비율을 무작위로 비우고 그 최하위 레벨 자손을 생략해 S-Octree를 만든다. 실험 설정은 옥트리 6레벨(최종 그리드 64³)에 뒤에서 두 번째 레벨 노드를 확률 0.5로 버리는 것이다. 각 점유 토큰은 3D 좌표와 깊이에 고정되며, 3채널 위치 식별자에 채널별 독립 로터리 인코딩을 적용하는 3D RoPE를 쓴다. 옥트리 토큰의 세 채널은 시퀀스 순위가 아니라 해당 노드의 3D 중심 좌표를 담고 레벨별로 재스케일되어 모든 깊이가 하나의 좌표계를 공유하며, 여기에 학습 가능한 깊이 임베딩을 더해 같은 공간 이웃을 거친 레벨과 미세 레벨에서 다르게 읽도록 한다. 생략된 디테일은 별도의 3D U-Net 완성 네트워크가 복원한다.
무엇과 다른가
아키텍처는 토큰 라우팅 방식의 이중 스트림 트랜스포머다. 라우팅 지시자 r_i를 두어 메시 바이트 토큰과 삽입된 <MASK> 토큰(r_i=1)은 학습 가능한 full-rank 3D 분기를 통과하고, 텍스트·이미지/비디오·<mesh_bos>·<mesh_eos> 토큰(r_i=0)은 동결된 기존 경로를 그대로 쓴다. FFN뿐 아니라 Q, K, V, O 네 개 어텐션 투영 모두 (1-r_i)W + r_i W_3D 형태로 토큰별 분기 선택을 하고, 어텐션 연산 자체는 혼합 시퀀스 위의 단일 causal self-attention으로 두 스트림이 정보를 교환한다. 메시 토큰은 독립 입력 임베딩과 독립 출력 헤드를 받아, 256개 점유 바이트 토큰과 특수 토큰이 자체 임베딩 공간을 갖고 언어 어휘와 경쟁하지 않는다. 28개 디코더 블록 중 12개(0,4,8,12,14,16,18,20,22,24,26,27번)에 3D 분기를 두어 약 2.80B 학습 파라미터를 추가하는데, 이는 전체의 약 4분의 1이고 전체 파인튜닝이 갱신하는 양의 약 3분의 1이다. 각 분기는 짝을 이루는 블록에서 초기화한다. 생성 시에는 목표 3D 위치와 깊이를 담은 <MASK> 토큰의 은닉 상태가 해당 위치에 어떤 점유가 와야 하는지 묻는 쿼리 역할을 하고, 과거 마스크 토큰은 어텐션 키에서 억제되어 텍스트·이미지·이전 메시 바이트만 보이게 한다.
어떻게 쓰나
학습 데이터는 Objaverse-XL의 Sketchfab 서브셋, HSSD, ABO, ShapeNet을 TRELLIS 방식으로 처리한 합집합이다. 자산마다 Blender 24개 뷰를 렌더링해 하나를 이미지 조건으로 쓰고, 고정된 4개 뷰를 Qwen3.5-9B로 캡션화해 텍스트→3D 프롬프트와 3D→텍스트 정답을 동시에 만든다. PointLLM-200 테스트 자산을 제외하면 195K 자산, 585K 명령이다. 완성 네트워크는 같은 서브셋에서 뽑은 175K 희소-완전 점유 쌍으로 따로 학습한다. 손실은 텍스트 위치는 언어 어휘 분포로, 메시 바이트 위치는 메시 어휘 분포로 계산해 점유 예측이 무관한 단어 로짓에 희석되지 않게 한다. 마스크 토큰은 생성 샘플에만 삽입하고, 이해 샘플에서는 S-Octree가 이미 주어지므로 마스크 없이 메시 시퀀스를 넣어 3D 입력 길이가 두 배가 되는 것을 피한다. 학습은 16개 H20 GPU에서 69K 스텝, 완성 네트워크는 8개 RTX 5090에서 155K 스텝, AdamW에 유효 배치 64다.
전제와 한계
생성 품질은 1K 홀드아웃 Toys4K 자산에서 Inception-V3와 DINOv2 특징 기반 렌더 FID/KID, CLIP 조건 정합으로 평가한다. 이미지 조건 생성에서 OctLLM은 ShapeLLM-Omni 대비 Inception FID를 17.4%, KID를 45% 낮춰 모든 멀티모달 LLM을 앞선다. 텍스트 조건에서는 같은 계열 중 Inception FID와 두 KID 점수에서 앞서고 전용 옥트리 생성기인 OctGPT도 넘어서며, DINOv2 FID와 CLIP에서는 ShapeLLM-Omni와 비슷한 수준이다. 전체적으로는 전용 3D 생성기 TRELLIS가 가장 좋고 OctLLM이 대부분 지표에서 2위다. 이 격차는 예상된 것으로, TRELLIS는 전용 생성기인 반면 OctLLM은 형상을 설명하고 언어 능력도 유지하는 동결 백본 LLM에서 기하를 만들어낸다. ShapeLLM-Omni와 AR3D-R1도 TRELLIS를 플로우 기반 메시 디코더로 쓰므로, 이들 대비 이득은 3D 표현과 파이프라인 설계에서 나온다.
3D 이해는 PointLLM-200 캡셔닝 벤치마크에서 Sentence-BERT·SimCSE 유사도와 Qwen3.8-Max 판정 두 종류(GPT-ref는 사람 참조와 비교, GPT-img는 참조를 숨기고 렌더 4장과 비교)로 평가한다. OctLLM은 멀티모달 LLM 중 모든 지표에서 1위이며, 렌더 기반 판정에서 ShapeLLM-Omni보다 28.7점 높다. 전체 방법 중에서는 GPT-img 최고점이고 나머지 세 지표에서 2위로, ShapeLLM-7B를 모두 앞서고 GPT-ref와 임베딩 점수에서는 PointLLM-7B에만 뒤진다. 이 격차는 입력이 담는 정보 차이다. PointLLM은 색이 있는 포인트 클라우드를 읽어 재질과 색을 말할 수 있지만, S-Octree는 기하만 인코딩하므로 OctLLM은 형상과 부품 구조를 설명하고 외형은 말하지 않는다. 언어 능력 보존은 아키텍처에서 나온다. 텍스트 토큰이 3D 분기에 들어가지 않고 사전학습 파라미터가 동결되므로 텍스트 전용 대화는 백본 계산을 정확히 재현한다. 실제로 MMLU와 HellaSwag에서 백본과 정확히 같은 점수를, GSM8K에서 1점 이내 차이를 보이는 반면 ShapeLLM-Omni는 앞의 두 벤치마크에서 34.5점, 40.7점을 잃는다. IFEval의 잔여 하락은 메시 헤드가 답변 도중 3D 시퀀스를 여는 경우 때문이며, 추론 시 메시 어휘를 마스킹하면 사라진다.
개발자 관점에서 이 논문이 주는 실무 패턴은 두 가지다. 하나는 3D 능력을 백본과 분리된 파라미터에 두는 것, 즉 동결된 텍스트-이미지 경로 옆에 토큰 라우팅되는 full-rank 분기를 붙이고 공유 self-attention으로 연결하는 구조다. 다른 하나는 기하를 학습된 잠재 코드가 아니라 좌표와 깊이에 고정된 이산 옥트리 바이트 시퀀스로 다루는 표현이다. 다만 완성된 메시를 얻으려면 LLM이 낸 S-Octree를 3D U-Net 완성 네트워크로 채우고, 그 점유 좌표를 TRELLIS 같은 플로우 기반 생성기의 구조 조건으로 넘기는 추가 파이프라인이 필요하다. 또 추론 시 메시 어휘 마스킹을 켜야 일반 대화 중 3D 시퀀스가 열리는 문제를 막을 수 있고, 입력이 기하만 담으므로 색·재질·외형을 묻는 용도에는 맞지 않는다는 점을 확인해야 한다.
저자들이 밝힌 전제와 한계도 분명하다. S-Octree는 기하만 인코딩하므로 외형 정보를 다루지 못하고, 이 때문에 PointLLM-7B가 색을 읽는 지표에서 앞선다. 전용 생성기 TRELLIS와의 품질 격차도 남아 있으며 OctLLM은 대부분 지표에서 2위다. S-Octree의 희소화는 시퀀스 길이와 복원해야 할 점유량을 맞바꾸는 선택이고, 생략된 미세 디테일은 완성 네트워크가 복원한다는 전제 위에 서 있다. 라우팅 블록 배치도 임의가 아니어서 3D 스트림이 이른·중간·늦은 표현에 모두 닿아야 하고, 예산이 늘면 백본 후반부에 분기를 더 쓰는 편이 효율적이라고 부록에서 보고한다.