0x00 EN

리서치 / 일일 리포트

  • 읽은 자료 2건
  • 정본 반영 3개 파일
  • 레이더 1건
한 줄 요약X가 For You의 기본 광고 블렌더를 multi-risk에서 slot-spread로 바꿨다. 안전 조건은 같고, 광고 슬롯을 페이지 전체에 고르게 먼저 정하는 방식이다.

오늘 함께 본 다른 변화는 다음과 같다.

  • X 영상 캐러셀에서 브랜드 안전 HighRisk 포스트를 빼는 필터가 기본 on이 됐다.
  • X가 광고 링크 열기와 장기 체류의 늦은 전환을 따로 학습하는 옵션을 기본 off로 추가했다.
  • Meta 저자들이 이력 길이와 추론 깊이를 따로 키우는 랭커 LWR을 arXiv에 냈다.

1기본 광고 블렌더가 slot-spread로 바뀌었다 — X

자료 xai-org/x-algorithm 9106e9f — X(xAI), 2026-10-31, 코드. 이 노트들이 붙인 번호로는 4세대+54다(4세대+N은 이 노트들이 2026-08-13 4세대 공개 뒤의 커밋에 차례로 붙인 번호다).

배경 X For You(팔로우하지 않은 계정의 포스트까지 섞어 주는 추천 타임라인)는 유기 포스트 사이에 광고를 끼우고, 광고 바로 위아래 포스트의 브랜드 안전 등급(Safe·Low·Medium·High)을 보고 자리를 정한다. 이 일을 하는 부품이 광고 블렌더이고, 2026-10-29 커밋에서 같은 안전 규칙을 지키는 새 블렌더 두 종류(slot_spread, least_movement)가 선택지로만 생겼다. 그때 기본값은 2026-09-01부터 쓰던 multi_risk 그대로였다. 이번 커밋은 기본 블렌더를 slot_spread로 바꾸고, 영상 캐러셀의 HighRisk 필터를 켜고, 광고 학습과 투명성 리포트에 기본 off 옵션을 더했다.

새로 알게 된 것A. 기본 광고 블렌더가 slot_spread로 바뀌었다

  • 광고 블렌더를 고르는 스위치의 기본값이 multi_risk에서 slot_spread로 바뀌었다 확인 — home-mixer/params/param.rs:937-942.

    • 스위치 이름은 AdsBlenderType(rust_home_mixer_ads_blender)다.
    • 파일 첫 줄의 미러 동기화 시각은 2026-10-30T22:59:56Z다. 이 파일은 X 내부 feature switch 기본값을 옮겨 적은 미러다.
    param!(
        AdsBlenderType,
        String,
        "rust_home_mixer_ads_blender",
        "slot_spread"
    );
    
  • slot_spread는 광고 슬롯을 페이지 전체에 고르게 먼저 정하고, 각 슬롯에서 가장 가까운 안전한 포스트를 위아래로 끌어온다 확인 — daily 2026-10-30.

    • High 포스트는 어떤 광고 옆에도 오지 못하고, Medium 포스트는 광고주가 민감한 맥락을 허용한(BSR-high) 광고 옆에만 온다. 이 조건은 multi_risk와 같다.
    • 2026-10-29 커밋의 비교 테스트는 slot_spread가 multi_risk보다 광고를 적게 내지 않는다고 고정했다 확인 — ads/tests/blender_comparison_test.rs.
  • 블렌더를 만든 지 이틀 만에 기본값으로 올렸다 확인. 실험 단계를 거쳤는지는 공개 코드로 알 수 없다 추정. 근거는 이 미러가 기본값만 담고 실험 배정은 담지 않는다는 점이다.

새로 알게 된 것B. 영상 캐러셀에서 HighRisk 포스트를 빼는 필터가 켜졌다

  • 세로 영상 캐러셀(For You 안에 영상 여러 개를 가로로 넘겨 보는 모듈) 후보에서 브랜드 안전 HighRisk 포스트를 빼는 스위치가 기본 on이 됐다 확인 — home-mixer/params/param.rs:1245-1250.
    • 스위치 이름은 EnableVideoCarouselHighRiskFilter다. 2026-10-28 커밋(4세대+51)에서 기본 off로 생겼다.
    • 이 필터는 안전 판정이 없는 포스트도 뺀다 확인 — filters/video_carousel_filter.rs:29-39.
  • 캐러셀 모듈 자체는 여전히 기본 off라 지금 사용자 화면은 바뀌지 않는다 추정. 근거는 이번 diff에 캐러셀 활성 스위치 변경이 없다는 점이다.
  • 캐러셀 중복 제거에 쓰는 임베딩 버전을 스위치로 고를 수 있게 했다 확인 — home-mixer/clients/post_v8_search_embedding_client.rs.
    • 기본값은 이전 상수와 같은 v8_search_1이라 동작은 같다.

새로 알게 된 것C. 광고 링크 열기와 장기 체류의 늦은 전환을 따로 학습하는 옵션이 생겼다

  • Phoenix(X의 Grok 기반 랭킹 모델) 학습에 광고 링크 열기와 링크 장기 체류의 "늦은 창(late window)" 헤드 두 개를 두는 옵션이 기본 off로 생겼다 확인 — phoenix/xrex/data/recsys/ads_late_window.py:48-97.

    • 늦은 창 헤드는 노출 직후 짧은 관측 창에서는 보이지 않다가 나중에 들어온 행동만 예측하는 twin(짝) 헤드다. X는 2026-09-01부터 광고 전환에, 2026-10-24부터 view-through 전환에 같은 구조를 써 왔다.
    • 새 행동은 ADS_OPEN_LINK_LATE_WINDOW(112)와 ADS_LONG_DWELL_LATE_WINDOW(113)이고, 짝은 기존 CLIENT_TWEET_OPEN_LINK와 CLIENT_TWEET_EXTERNAL_LINK_LONG_DWELLED다.
    • 학습 옵션은 ads_late_window_heads, 서빙 합성 옵션은 serve_late_window_composed이고 둘 다 기본 False다. 앞의 것은 ads_head_masking을, 뒤의 것은 앞의 것을 요구한다.
  • 서빙 합성을 켜면 기존 헤드의 확률에 늦은 창 확률을 더해 "언젠가 일어날 확률"로 바꿔 내보낸다 확인 — 같은 파일.

    • 늦은 창 원시 출력은 0.5로 자른 뒤 b/(1−b)로 바꾼다. 학습 샘플 구성의 차이를 되돌리는 보정으로 보이지만, 이유를 적은 주석은 없다 추정.
    def late_engagement_probability(raw):
        b = raw.clip(0.0, 0.5)
        return b / (1.0 - b)
    
    def compose_late_engagement(p_early, raw_late):
        return p_early + (1.0 - p_early) * late_engagement_probability(raw_late)
    

새로 알게 된 것D. Under the Hood 리포트가 라벨 붙은 포스트를 나열할 준비를 했다

  • Under the Hood(유저가 자기 계정과 포스트에 붙은 노출 제한 라벨을 조회하는 X 투명성 도구) 리포트가 라벨별로 해당 포스트 ID를 나열하는 기능이 기본 off로 생겼다 확인 — under-the-hood/strato/lib/params.strato:30-37.
    • 라벨 붙은 포스트가 3개 이하이면 전부 보여 준다.
    • 그달 포스트의 5%를 넘게 덮은 라벨은 목록 대신 안내 문구만 보여 준다.
    • 그 밖에는 최신 50개까지 보여 주고, 국가별 게시 중단(takedown) 라벨은 비율과 무관하게 최신 50개를 보여 준다.
  • 같은 커밋부터 계정 라벨의 이의 제기 안내는 리포트에 싣지 않는다 확인 — under-the-hood/strato/columns/underTheHoodReport.User.strato.
    • 국가별 이의 제기 링크는 브라질 대신 일본과 EU 국가 목록으로 바뀌었다.

새로 알게 된 것그 밖의 변경

  • 페이지 디코드 재순위(페이지 전체를 한 번에 고르는 재순위기)에 보상 헤드 번호를 넘기는 스위치가 생겼고, 기본값 0이다 확인 — home-mixer/scorers/page_decode_rerank_scorer.rs.
  • VMRanker(점수 가중합과 다양성을 계산하는 X 랭킹 서비스)의 debias 대상 헤드 이름에 DM 공유와 링크 복사 공유가 더해졌다 확인 — vm-ranker/scoring/debias.rs.
  • AdInfo proto에 광고 분류 ID 필드가 생겼다 확인 — recsys.proto.
  • SID(아이템을 짧은 의미 토큰 열로 나타낸 Semantic ID) 조회 캐시의 쓰기가 비동기 큐로 바뀌었다 확인 — sid_client.rs.
  • VF(포스트 노출을 판정하는 visibility-filtering 서비스)의 안전 라벨 조회 모듈이 별도 crate로 분리됐다 확인 — safety-label-source/lib.rs.
  • 후보 파이프라인이 요청마다 결과 개수를 다르게 정할 수 있는 훅을 얻었다 확인 — candidate_pipeline.rs.
  • grox(Grok 기반 콘텐츠 안전 파이프라인)의 영상 숨은 층 탐지 프롬프트에서 "이 영상은 숨은 층의 징후가 있어 선택됐다"는 문장이 빠졌다 확인 — grox/core/lm/convo.py.

정본 반영 services/x.md ## 재순위·다양성·필터의 블렌더 불릿에서 기본값을 slot_spread와 기준 커밋으로 고쳤고, 캐러셀 HighRisk 필터 불릿을 기본 on으로 고쳤다. ## 광고 도입의 기본 블렌더 문장을 다시 쓰고 절 변경 이력에 기본 블렌더 줄을 추가했으며, 광고 conversion 절 도입에 늦은 창 참여 헤드 문장을, Under the Hood 절에 포스트 ID 나열 불릿을 추가했다. ## 한 줄 요약과 ## 출처의 기준 커밋을 9106e9f로 올리고 변경 이력 요약표에 한 행을 추가했다. topics/llm-in-recsys.md의 브랜드 안전성 불릿에서 기본 블렌더 주장을 고쳤다.

의미 ⚠ 주장 변경: "X의 기본 광고 블렌더는 multi-risk다"라는 주장이 2026-10-31 커밋부터 맞지 않는다. 안전 조건은 그대로이고 광고 슬롯을 페이지 전체에 고르게 두는 쪽으로 배치 방식만 바뀌었다 확인. 광고 노출 수가 늘었는지는 테스트가 "줄지 않는다"만 고정하므로 알 수 없다 추정.

2Meta 저자들이 긴 이력용 랭커 LWR을 냈다 — 레이더

자료 Read More, Reason Deeper: Latent Workspaces for Long-Sequence Recommendation — Meta 소속 저자, 2026-10-29 v1, 논문.

배경 긴 유저 이력을 쓰는 시퀀스 랭커는 이력을 늘릴수록 모든 층에서 계산이 늘어서, 이력 길이와 모델 깊이를 따로 키우기 어렵다. HSTU(Meta가 낸 생성형 추천용 시퀀스 트랜스포머)도 이 결합을 안고 있다. 이번 논문은 이력을 층마다 다시 읽을 수 있는 저장소에 두고, 후보마다 고정 크기 작업 공간만 층을 따라 전달하는 구조를 제안한다.

새로 알게 된 것A. Meta 저자들이 오프라인에서 HSTU보다 싸고 나은 긴 이력 랭커를 보고했다

  • 10K 길이 이력에서 HSTU 대비 NE(normalized entropy, 낮을수록 좋은 예측 손실)를 0.19% 개선하고 요청당 forward GFLOP를 69.6% 줄였다고 쓴다 확인 — arXiv 초록.
    • 저자 이메일 도메인은 @meta.com이다(HTML 판에서 확인).
    • 수십억 규모 랭킹 지면 두 곳(Surface 1·2로 익명 처리)의 결과도 보고하지만 오프라인 지표다 확인.
  • 온라인 A/B나 배포 진술은 찾지 못했다 확인. Meta 피드(Facebook·Instagram)에 쓰이는지는 알 수 없으므로 레이더에 둔다 추정.

"At 10K history, it improves NE by 0.19% over HSTU while using 69.6% fewer forward GFLOP/request. It also outperforms existing baselines on two billion-scale ranking surfaces." — Read More, Reason Deeper, 2026-10-29

정본 반영 정본에는 반영하지 않았다. radar.md ## 이번 달 신규에 항목을 추가했다.

의미 Meta 시퀀스 랭킹 계보에서 "같은 연산량에서 어떤 구조가 더 나은가"를 다룬 근거가 하나 더 생겼다. 배포 진술이 없어 정본에는 올리지 않는다.

레이더

  • Meta LWR — 이력 길이와 추론 깊이를 따로 키우는 랭커 — arXiv 2610.39188. 같은 저자의 PRISM(arXiv 2610.39175)은 세부에 적었다.
  • 월초 정리로 10월의 "이번 달 신규" 6건(ECHO, TransX, Pinterest User Journeys, GEAR, HELIX, GRP)을 ## 지난 신규 (2026-10) 절로 옮겼다.
  • arXiv cs.IR 30건을 triage했다. 대부분은 어제 본 목록이고, 광고 오프라인 평가(Beyond IPS)와 광고주 보조금 배분(CASH)은 피드 메커니즘과 거리가 있어 넣지 않았다.

다음에 볼 것