- 읽은 자료 1건
- 정본 반영 1개 파일
- 레이더 0건
1링크 복사 공유 가중이 홈믹서 미러에서 0이 됐다 — X
자료 xai-org/x-algorithm@590f392 — xAI, 2026-11-13, 코드. 이 노트들이 붙인 번호로는 4세대+63이다(4세대+N은 이 노트들이 2026-08-13 4세대 공개 뒤의 커밋에 차례로 붙인 번호다).
배경 X For You는 Phoenix(Grok 기반 트랜스포머 랭커)가 후보 포스트마다 좋아요, 답글, 공유 같은 행동의 확률을 예측하고, 그 확률에 행동별 가중을 곱해 더한 값으로 순서를 정한다. X는 이 가중의 운영 기본값을 크론 미러(프로덕션 설정을 매일 저장소 코드에 옮겨 적는 스크립트)로 공개하는데, 2026-09-23부터 미러가 홈믹서(home-mixer, 피드 요청을 받아 후보를 모으고 점수를 매기는 서비스)용과 vm-ranker(가중합과 DPP 재순위를 계산하는 별도 서비스)용 두 파일로 나뉘어 있다. 링크 복사 공유는 그동안 두 미러 모두 20.0으로 양수 가중 가운데 가장 컸다. 이번 커밋은 2026-11-12 sync를 반영하면서 홈믹서 미러의 이 가중을 0.0으로 내렸고, DPP에 새 정렬 모드를 기본 off로 추가했다.
새로 알게 된 것A. 홈믹서 미러에서 링크 복사 공유가 점수에 기여하지 않게 됐다
- 홈믹서 미러의 share via copy link 가중이 20.0에서 0.0으로 바뀌었다 확인 —
home-mixer/params/param.rs:495-500- 파라미터는
ShareViaCopyLinkWeight(rust_home_mixer_share_via_copy_link_weight)이고, 파일 헤더의 sync 시각은 2026-11-11T16:00:37Z에서 2026-11-12T16:00:36Z로 바뀌었다.
- 파라미터는
- vm-ranker 미러의 같은 가중은 20.0 그대로다 확인 —
vm-ranker/params.rs:34-39 - vm-ranker가 응답하는 요청에서는 홈믹서의 로컬 가중합이 vm-ranker 점수로 덮어써지므로, 주 피드 순서에는 아직 20.0이 쓰일 가능성이 크다 추정. 근거는 홈믹서 VMRanker 스코어러가 로컬 가중합을 먼저 계산한 뒤 서비스 점수로 덮어쓰는 구조다(services/x.md 랭킹 절).
- 홈믹서 가중합이 그대로 쓰이는 곳은 vm-ranker 호출이 실패한 요청의 대체 점수 같은 경로다 확인(services/x.md 다양성 절).
- 2026-11-04 sync(4세대+57)에서도 홈믹서 미러만 가중 일곱 개가 먼저 바뀌었다. 홈믹서 쪽을 먼저 바꾸고 vm-ranker가 따라가는 순서일 수 있다 추정.
새로 알게 된 것B. DPP가 페이지 위쪽 포스트와 닮은 후보를 누르는 모드가 기본 off로 생겼다
DPP(determinantal point process, 서로 닮은 항목이 함께 뽑히지 않게 집합 단위로 고르는 다양성 기법)는 지금까지 상위 후보 집합만 보고 고른 뒤, 고른 후보를 다시 점수순으로 정렬해 내보냈다. 이번 커밋은 두 가지 선택지를 더했다.
- DPP가 뽑은 순서 그대로 내보내는 옵션이 생겼다. 이때 점수는 순위에 맞춰 다시 배정된다 확인 —
vm-ranker/dpp.rs- 스위치는
DppGreedyOrder이고 기본값은 false다(vm-ranker/params.rs:260-271). - i번째로 뽑힌 후보는 고른 후보 가운데 i번째로 높은 원점수를 받는다. 그래서 하위 단계가 점수로 다시 정렬해도 DPP 순서가 유지된다.
- 스위치는
- 슬라이딩 윈도 모드는 바로 위 몇 자리에 놓인 포스트와 닮은 후보를 거리에 따라 약해지는 벌점으로 누른다 확인 — 같은 파일.
- 스위치는
DppWindow(윈도 크기, 기본 0이면 off)와DppWindowHalfDistance(기본 0.0)다. - 이전 응답에서 직전 10분 안에 내보낸 포스트를 윈도의 앞부분으로 쓴다. 홈믹서가 이 이력을 싣는 스위치
VMRankerSendDppHistory도 기본 false다(최대 200개). - 후보의 이득은 아래 식으로 계산하고, 매 자리에서 이득이 가장 큰 후보를 고른다.
- 스위치는
gain(c) = exp(2α · score(c) / max_score) × Π_d (1 − w_d · cos²(c, d자리 위 포스트))
w_d = 0.5^(d / half_distance) (half_distance = 0이면 w_d = 1)
α = θ / (2(1 − θ))
- 테스트는 이력이 10분보다 오래되면 윈도 효과가 사라지는 것을 확인한다 확인 —
vm-ranker/scoring/dpp_model.rs- 1분 전 이력이 있으면 순서가
[9, 5, 10]이 되고, 11분 전 이력이면 이력 없는 경우와 같은[10, 5, 9]가 된다.
- 1분 전 이력이 있으면 순서가
새로 알게 된 것C. 공유를 유도하는 스팸을 따로 판정하는 라벨이 생겼다
grox(Grok 기반으로 포스트에 안전 주석을 다는 nearline 분류기)의 PtOS(포스트 단위 안전 정책 심판) 경로는 스팸 위반 유형에 따라 SpamHighRecall 라벨을 붙인다. 이 라벨은 추천 지면의 필터 규칙이 읽는다.
- 클릭, 답글, 공유를 유도하는 스팸이 각각 별도 정책 타입으로 생겼다 확인 —
grox/flows/ptos/state.py- 타입 이름은
SpamPromotesClicks,SpamPromotesReplies,SpamPromotesShares다.
- 타입 이름은
- 공유 유도만 SpamHighRecall을 붙이고, high page-rank 계정(PageRank 기반 신뢰도가 높은 계정)도 면제하지 않는다 확인 —
task_write_safety_post_annotations_result_sink.py- 같은 대우를 받는 기존 유형은 EngagementBaiting, EngagementFarming, CardManipulation이다.
- 클릭·답글 유도는 SpamHighRecall 없이
PromotesClicks·PromotesReplies라벨만 받고, 공유 유도는PromotesShares도 받는다. - 새 라벨 세 개를 읽는 필터 규칙과, 심판 모델이 이 타입을 내도록 바꾼 프롬프트는 이번 diff에 없다.
- abuse-enforcement-service(모델 점수로 계정·포스트 조치를 내리는 서비스)의 테스트에 링크 복사 유도 탐지 헤드가 SpamHighRecall을 붙이는 예가 나온다 확인 —
abuse-enforcement-service/service-lib/src/service.rs- 헤드 이름은
CopyLinkBaitEmbeddingGrokDistilled다. 이번 커밋은 라벨에 그것을 붙인 탐지 헤드 이름을 함께 기록하게 했다.
- 헤드 이름은
- 링크 복사 공유 가중을 내린 것과 공유 유도 스팸 판정을 넣은 것은 같은 문제, 곧 공유를 노린 포스트가 랭킹을 이용하는 문제에 대응한 것으로 보인다 추정. 근거는 두 변경이 같은 커밋에 들어왔고 링크 복사 유도 탐지 헤드가 존재한다는 점이다.
새로 알게 된 것그 밖의 변경
- 안전 라벨 조회가 어떤 이유로 실패해도 만료된 캐시 라벨이 있으면 그것으로 판정한다. 이전에는 라벨 캐시 장애일 때만 그랬다 확인 —
safety-label-source/source.rs- 호출자 deadline보다 5ms 먼저 조회를 끊고, 시간을 넘긴 키도 실패로 보고 만료 라벨로 답한다.
- 내 리포스트에 달린 좋아요·리포스트 알림은 원본 포스트도 판정하고, 원본이 걸러지면 알림을 보내지 않는다 확인 —
visibility-filtering/post_evaluator/notification.rs - Phoenix 랭커에 최근 15분, 또는 2시간 안의 최근 5개 positive 이력의 attention 기여를 줄이는 옵션이 생겼다. 기본 배율 1.0이라 꺼져 있다 확인 —
phoenix/xrex/models/recsys_model.py - 응답 다양성 메트릭에 최근 3·10·30분 이력과 이전 페이지를 이은 SID(semantic ID, 포스트를 계층 코드로 나타낸 id) 엔트로피가 더해졌다 확인 —
side_effects/response_diversity_stats_side_effect.rs- 창이 DPP 윈도 모드의 10분 이력과 겹쳐, 그 실험을 평가하려는 지표로 보인다 추정.
- 미디어가 4개를 넘는 포스트를 4개씩 나눠 PtOS 심판에 보내는 플로우가 생겼다. 배포 설정에 생성기가 있어야 돈다 확인 —
grox/flows/ptos/task_safety_ptos_many_media.py - AI 영상 판별 모델 결과로 만든 1·2·7·14일 retrieval 학습 데이터셋 종류가 proto에 추가됐다 확인 —
recsys.proto - 팔로잉 피드에 광고를 넣기 시작하는 최소 포스트 수가 상수에서 스위치로 바뀌었다. 기본값은 이전 상수와 같은 5다 확인 —
home-mixer/params/param.rs:1031-1036 - Phoenix retrieval 호출에서 압축하지 않을 클러스터 목록을 지정하는 스위치가 빈 목록 기본값으로 생겼다 확인 — 같은 파일 279-284행.
- AI 트렌드 피드백 맥락 조회에 캐시가 붙었다. 트렌드가 있으면 5분, 없으면 30초 보관한다 확인 —
candidate_hydrators/ai_trend_feedback_context_hydrator.rs
정본 반영 services/x.md ## 랭킹의 가중치 표에서 share via copy link 행을 두 미러 값과 기준 커밋으로 고치고, 그 절의 변경 이력 목록에 한 줄을 더했다. 다양성 절의 VMRanker DPP 항목에 순서 옵션과 슬라이딩 윈도 불릿을 더했다. 안전성 절에는 만료 라벨 fallback 불릿과, Labeling Rules 목록 아래 PtOS 유도 스팸 정책 불릿을 더했다. ## 출처의 기준 커밋과 커밋 수를 590f392, 63개로 올렸고, 변경 이력 요약표에 한 행을 추가했다.
의미 X가 2026-08 공개 때부터 가장 큰 양수 가중이던 링크 복사 공유를 한쪽 미러에서 0으로 내렸다. vm-ranker 미러가 20.0 그대로라 실제 주 피드 순서가 바뀌었는지는 아직 알 수 없으므로 추정으로 둔다. DPP 윈도 모드는 "집합 안의 다양성"에서 "화면에 이어 보이는 포스트끼리의 다양성"으로 목표를 옮길 준비로 보이며, 기본 off라 지금 동작은 그대로다.
다음에 볼 것
- vm-ranker 미러의 share via copy link 가중이 다음 sync에서 0으로 따라오는지 — 따라오면 주 피드 순서의 변화로 확정할 수 있다 추정 해소.
- research.netflix.com/publications — 오늘도 HTTP 404다. 다른 목록 주소를 찾아야 한다. Netflix Tech Blog RSS에는 2026-11-09 뒤 새 글이 없었다.
- 오늘 확인한 다른 소스에는 피드·추천 관련 새 자료가 없었다. r/RedditEng RSS는 정상(25건)이었고 새 글이 없었다. Meta Engineering 새 글은 어제 본 Android 가상 기기 글뿐이었고, redditinc.com 뉴스룸(최신 2026-11-10)과 SEC 제출 목록에도 새 자료가 없었다. arXiv cs.IR 응답 30건은 어제와 같은 2026-11-10~12 제출분이라 새로 통과한 것이 없다.
조회 실패: ai.meta.com/blog — 목록이 2026-07 글까지만 보여 최근 글을 확인하지 못했다