◂ feed-research2026-08-29 빌드

시퀀스 트랜스포머 랭킹 (in-context candidate scoring)

최종 갱신: 2026-08-09

유저의 행동 이력을 토큰 시퀀스로 놓고, 점수를 매길 후보들을 같은 시퀀스 뒤에 붙여서 한 번의 forward pass로 전부 채점하는 랭킹 구조. 전통적인 "피처 벡터 → MLP/DCN/MaskNet" 랭커와 대비된다.

이 노트는 X(Phoenix)와 Meta(HSTU 계보 / ads 계보) 둘을 같이 다룬다. 두 회사가 독립적으로 같은 결론에 도달한 지점(후보를 시퀀스에 넣고 마스크로 격리해서 캐시 가능하게 만든다)과 갈라진 지점(Meta는 계보가 둘인데 서로를 인용하지 않는다)이 이 노트의 두 축이다.

왜 이 구조인가

핵심 설계 축

1. 시퀀스 레이아웃

[user] + [history × S] + [candidates × C] 를 하나의 flat 시퀀스로 만드는 게 X의 방식이다. [확인] xai-org/x-algorithm, 2026 — phoenix/recsys_model.py:617-624

2. 어텐션 마스크 — 여기가 진짜 설계 포인트

후보끼리 서로 볼 수 있게 하느냐가 pointwise 랭킹이냐 slate 최적화냐를 가른다.

X는 후보 블록을 대각선만 남긴다 (self-attend only). [확인]phoenix/grok.py:39-71, 유닛테스트 phoenix/test_recsys_model.py:94-121

        user  h1  h2  c1  c2  c3
user  [  1    0   0   0   0   0 ]
h1    [  1    1   0   0   0   0 ]
h2    [  1    1   1   0   0   0 ]
c1    [  1    1   1   1   0   0 ]
c2    [  1    1   1   0   1   0 ]
c3    [  1    1   1   0   0   1 ]

결과: 후보 점수는 같은 배치에 뭐가 들어왔는지와 무관 → 점수가 캐시 가능하고, 리스트를 잘라 여러 번 호출해도 결과가 같다. X가 README에서 명시적으로 노린다고 밝힌 성질이다. [확인]README.md:328

세 가지 함정:

3. 파라미터가 어디에 있는가

X Phoenix의 경우 99.8%가 ID 임베딩 테이블이고 트랜스포머는 0.8M밖에 안 된다. [추정] — 공개 mini config(128-dim, 4-layer, vocab 1M×3)로 계산한 값이며 체크포인트는 Git LFS라 직접 세보지 못했다. 근거 수치는 phoenix/README.md:222-230이 밝힌 파일 크기(model_params.npz 3MB, embedding_tables.npz 1.4GB)와 일치한다.

이게 함의하는 것: 임베딩 테이블은 별도 서비스/호스트 메모리에 두고 트랜스포머만 가속기에서 돌리는 서빙 구조가 자연스럽다. 실제로 공개 코드는 임베딩 lookup을 모델 바깥에서 numpy fancy-indexing으로 처리한다. [확인]recsys_model.py:103-116, run_pipeline.py:292-297

4. 콘텐츠는 안 들어간다

X Phoenix에 텍스트도 이미지도 안 들어간다. 토큰은 해시된 ID + 소수의 categorical/scalar 채널뿐이다. [확인]recsys_model.py:238-250, :307-314

들어가는 것: post ID 해시 2개, author ID 해시 2개, 행동 multi-hot, product surface(16종), post age 버킷, dwell time. 안 들어가는 것: 팔로워 수, 참여 수, 작성자 평판, 텍스트/토픽/언어, cross feature.

"hand-engineered feature 제거" 주장의 실제 범위

X README는 "We have eliminated every single hand-engineered feature and most heuristics from the system"이라고 쓴다. [확인]README.md:55

문자 그대로는 거짓이다. 모델 안에 남아 있는 손으로 만든 것들:

정확한 표현은 **"콘텐츠·작성자 피처를 없앴다"**이다. 시간·표면·해싱 기계는 그대로 남아 있다. 그리고 이건 모델 안 얘기고, 그 바깥 서빙 레이어에는 필터 17개와 손튜닝 상수가 잔뜩 있다 → x.md 참조.


Meta — 트랜스포머 계보가 하나가 아니라 둘이다

"Meta의 시퀀스 모델"을 단수로 말하면 틀린다. 유기(organic) 쪽 HSTU 계보광고 쪽 DHEN→GEM 계보가 따로 있고, 아래 확인한 대로 서로를 인용하지 않는다.

계보 A (organic) — HSTU → ULTRA-HSTU

[확인] Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations, ICML 2024 (arXiv 2024-02)

X의 Phoenix가 "기존 랭커를 트랜스포머로 바꾼다"라면 HSTU는 문제 정의 자체를 바꾼다.

(1) 피처 전체를 하나의 시계열로 접는다

"In GRs, we consolidate and encode these features into a single unified time series." [확인]

방법이 구체적이다. 카테고리 피처는 가장 긴 시계열(주로 유저가 engage한 아이템)을 main time series로 잡고, 천천히 변하는 것(데모그래픽, 팔로우한 크리에이터)은 "keeping the earliest entry per consecutive segment" 로 압축해 병합한다. [확인]

(2) numerical feature를 버리는 근거가 명시돼 있다

X README의 "hand-engineered feature를 전부 없앴다"는 주장(위 절 참조)과 겉보기가 비슷한데, HSTU는 왜 버려도 되는지를 논증한다:

"the categorical features (e.g., item topics, locations) over which we perform these aggregations are already sequentialized and encoded in GRs. Hence, we can remove numerical features in GRs given a sufficiently expressive sequential transduction architecture coupled with a target-aware formulation ... can meaningfully capture numerical features as we increase the overall sequence length and compute" [확인]

counter/ratio는 카테고리 시퀀스의 집계값이니 시퀀스가 충분히 길면 모델이 재구성한다는 논리다. 그리고 검증도 붙어 있다 — DLRM에 GR과 같은 피처만 주면 "the performance of DLRMs is significantly degraded". [확인] [추정] X의 동일 주장에는 이런 ablation이 없다. 같은 문장이라도 근거의 두께가 다르다.

(3) retrieval과 ranking이 같은 시퀀스 위의 다른 태스크가 된다

interleaving을 하는 이유가 X의 마스크 설계와 정확히 같은 종류의 문제다 — "'interaction' of target ... and historical features needs to occur as early as possible, which is infeasible with a standard autoregressive setup where 'interaction' happens late (e.g., via softmax after encoder output)". [확인]

(4) softmax를 버린다 — 두 가지 이유가 명시돼 있다

HSTU는 *"pointwise aggregated (normalized) attention"*을 쓴다. 비선형은 SiLU. [확인]

(5) 상대 위치 bias가 위치 + 시간 둘 다 들고 있다

rab^{p,t}"relative attention bias that incorporates positional" (및 시간) 항. [확인] X는 이 자리를 RoPE로 처리했고 그게 배치 독립성을 깨는 원인이 됐다(위 함정 3). 같은 슬롯을 두 회사가 다르게 채웠고, 부작용도 다르다. [추정]

(6) M-FALCON — X의 후보 블록 마스크와 같은 문제의 다른 해법

"M-FALCON (Microbatched-Fast Attention Leveraging Cacheable OperatioNs)". 후보 m개를 b_m개씩 마이크로배치로 나눠 "modifying attention masks and rab^{p,t} biases such that the attention operations performed for b_m candidates are identical", 그리고 "leverage encoder-level KV caching ... either across forward passes to reduce cost, or across requests to minimize tail latency". [확인]

여기가 이 노트에서 제일 중요한 교차점이다. X는 후보 블록을 대각선 마스크로 격리해 점수를 캐시 가능하게 만들었고, Meta는 후보 마이크로배치 + KV 캐시로 이력 인코딩 비용을 상각했다. 두 회사가 독립적으로 "후보를 시퀀스에 넣되 후보끼리는 격리한다"에 도달했다. [추정] — 근거는 두 문헌의 마스크 설명이 기능적으로 같은 성질(후보 간 독립 + 재사용 가능한 prefix)을 노린다는 점.

성과 수치 [확인]: 8192 길이에서 FlashAttention2 기반 Transformer 대비 5.3×–15.2×, DLRM 대비 285× 복잡한 모델을 1.50×–2.99× 높은 QPS로, 프로덕션 지표 12.4% 개선.

⚠ 지면이 익명화돼 있다. 논문은 *"a large internet platform"*이라고만 쓴다. Facebook Feed에 적용됐는지는 미확인 → facebook.md 열린 질문 5.

ULTRA-HSTU (2026) [확인] arXiv 2602.16986, 2026-02-19 — 후속작인데 직전 세대를 비판하면서 시작한다: "many recent approaches rely heavily on cross-attention mechanisms to address the quadratic computational bottleneck in sequential modeling, which can limit the representational power gained from self-attention." 결과는 "over 5x faster training scaling and 21x faster inference scaling", "serving billions of users daily", "4% to 8% consumption and engagement improvements".

[추정] cross-attention 비판은 DV365 같은 "미리 압축해서 얹는" 접근에 대한 견제로 읽힌다 — 같은 회사 안에서 초장기 히스토리를 처리하는 두 전략이 경쟁 중이라는 뜻. 논문이 DV365를 직접 지목하지는 않는다.

계보 B (ads) — DHEN → Wukong → InterFormer → GEM, 서빙은 MARM

광고 쪽은 피처 상호작용(feature interaction) 계보에서 출발해 뒤늦게 시퀀스를 붙였다. HSTU와 출발점이 다르다. [추정] — 아래 표의 발표 순서(2022 DHEN·2024 Wukong은 interaction, 2024 InterFormer부터 시퀀스)가 근거다.

연도 이름 무엇을 푸는가 출처
2022 DHEN 이종 interaction 모듈의 계층적 앙상블. NE 0.27%, 학습 throughput 1.2× [확인] arXiv 2203.11014
2024 Wukong stacked factorization machine만으로 scaling law 성립. 100 GFLOP/example 이상까지 [확인] arXiv 2403.02545
2024 InterFormer 시퀀스 학습과 cross-feature를 interleaving. early summarization 회피 [확인] arXiv 2411.09852
2025 GEM 위 둘을 품는 ads foundation model [확인] GEM 블로그, 2025-11-10
2026 LLaTTE GEM의 시퀀스 파트. 2-stage + 비동기 upstream user model [확인] arXiv 2601.20083, 2026-01-27
2026 MARM 요청별 라우팅 서빙. O(1T) 파라미터 [확인] MARM 블로그, 2026-03-31
2026-08 GEM training 훈련 인프라: 12개월 E2E MFU 2배, 총 FLOPs 4배. 커스텀 커널(JFA·GDPA·BlockAttention) + MXFP8 + 5D 병렬 [확인] GEM Training 블로그, 2026-08-03

GEM 블로그가 계보를 직접 밝힌다 [확인]: "GEM enhances the Wukong architecture to use stackable factorization machines with cross-layer attention connections", "Our design, InterFormer, employs parallel summarization with an interleaving structure that alternates between sequence learning ... and cross-feature interaction layers."

LLaTTE가 이 노트에 중요한 이유 [확인] (블로그 From User Sequences to Scaling Laws, 2026-08-05 + arXiv 2601.20083):

GEM training 인프라 — 2026-08-03 블로그가 붙는 자리 [확인] Training GEM at LLM Scale, 2026-08-03:

MARM은 GEM을 서빙한다고 말하지 않는다. MARM 블로그 본문에 GEM은 등장하지 않는다 (사이드바 "Related Posts" 링크에만 있음, 2026-08-09 전문 확인). 자기 규정은 "replaces a 'one-size-fits-all' inference approach with intelligent request routing" + O(1T) 파라미터 스케일링이다. "MARM이 GEM을 서빙한다"는 그럴듯하지만 1차 출처가 없다. [추정] — 같은 조직·같은 시기·같은 광고 지면이라는 정황뿐.

두 계보가 서로를 인용하지 않는다 — 실측

[관찰] 2026-08-09 — 검사한 코퍼스는 아래 표의 세 블로그 본문 3건이고(사이드바·Related Posts 제외), 각 본문을 받아 문자열을 센 결과다. 재현: 각 URL의 본문을 받아 HSTU/Wukong/InterFormer/GEM 카운트. 이 코퍼스 밖(논문·내부 문서)에 대해서는 아무 말도 하지 않는다.

문서 HSTU Wukong InterFormer GEM
GEM 블로그 (2025-11-10) 0 2 1
MARM 블로그 (2026-03-31) 0 4 0 0 (본문)
LLaTTE 블로그 (2026-08-05) 0 0 0 4

독립된 세 문서에서 0이다. 광고 쪽이 자기 계보를 밝힐 때 HSTU를 한 번도 부르지 않는다.

[추정] "Meta에 통합 추천 트랜스포머가 하나 있다"는 흔한 오해다. 최소한 2026-08 시점 공개 문헌상으로는 organic 계보와 ads 계보가 별개의 논문 계통·별개의 인용 그래프를 갖는다. 다만 인용 부재가 코드 공유 부재를 증명하지는 않는다 — 블로그는 원래 인용이 성기다.

DV365 — 시퀀스를 늘리는 대신 미리 접는다 (Instagram)

[확인] DV365: Extremely Long User History Modeling at Instagram, KDD 2025. 수치와 운영 상세는 instagram.md에 있다. 여기서는 구조적 위치만 짚는다.

최대 70,000 / 평균 40,000 인터랙션을 다루는데, 모델의 시퀀스 길이를 늘리지 않는다. offline에서 multi-slicing + pooling으로 200개 임베딩을 만들어 downstream 15개 모델에 공급한다. 논문 주장은 "기존 attention 계열 시퀀스 모델(HSTU 포함) 위에 얹어도 incremental"attention은 40K 길이에서 수확 체감한다는 것. [확인]

[추정] Meta 안에 "초장기 히스토리"의 답이 셋 있다. ① HSTU: 시퀀스를 그냥 길게(Stochastic Length + M-FALCON으로 비용 상각) ② DV365: 오프라인에서 접어서 피처로 ③ LLaTTE: 비동기 upstream user model로 분리. ②와 ③은 "무거운 계산을 랭커 밖으로 뺀다"는 같은 형태이고, ULTRA-HSTU는 그 접근을 명시적으로 비판한다. 세 방향이 동시에 프로덕션에 있다.

X에는 이 축이 아예 없다 — Phoenix 공개 설정의 이력 길이는 훨씬 짧고, 이력 압축 장치가 코드에 없다. [확인] xai-org/x-algorithm, 2026

"통합 모델" 주장을 읽는 법

이 노트를 쓰는 동안 가장 많이 틀리게 인용되는 지점이라 못박는다. 원문과 상세는 facebook.md.

[추정] 위 실측(HSTU 인용 0회)과 이 두 발언은 같은 방향을 가리킨다 — 통합은 목표로 선언됐고 아직 문헌상 증거가 없다.

X vs Meta — 이 주제에서의 대조

X (Phoenix, 2026) Meta (HSTU 계보) Meta (ads 계보)
출발점 기존 랭커를 트랜스포머로 교체 추천을 생성 태스크로 재정의 피처 상호작용 네트워크에 시퀀스를 추가
후보 처리 후보 블록 대각선 마스크 interleaving + M-FALCON 마이크로배치 2-stage, upstream user model 분리
정규화 표준 softmax attention pointwise aggregated + SiLU 미공개
위치/시간 RoPE (배치 독립성 깨짐) rab^{p,t} (위치+시간) 미공개
dense feature 남아 있음(age 버킷, dwell clip) 제거 + ablation으로 정당화 semantic feature가 필수라고 주장
확인 가능한 것 상수·마스크·버그까지 (코드) 구조·비율 (논문) 비율만 (블로그)

[추정] "dense feature를 없앤다"는 같은 슬로건을 세 시스템이 서로 다른 정도로 실행한다. 그리고 ads 계보는 아예 반대로 간다 — LLaTTE는 semantic feature가 scaling의 전제조건이라고 말한다. 하나의 업계 트렌드로 묶어 서술하면 이 대립이 지워진다.


누가 이걸 쓰는가

재학습·신선도 쪽(GEM continuous online training, DV365 6시간 갱신)은 model-freshness.md에 있다. 여기서 반복하지 않는다.

아직 확인 못한 것

출처

X

Meta — organic 계보

Meta — ads 계보

발언