- 읽은 자료 1건
- 정본 반영 1개 파일
- 레이더 0건
1영상 캐러셀 CTR 모델의 기본 이름이 정해졌다 — X
자료 xai-org/x-algorithm@3b6919f — xAI, 2026-11-07, 코드. 이 노트들이 붙인 번호로는 4세대+59다(4세대+N은 이 노트들이 2026-08-13 4세대 공개 뒤의 커밋에 차례로 붙인 번호다).
배경 X For You(팔로우하지 않은 계정의 포스트까지 섞어 주는 추천 타임라인)에는 세로 영상 3~5개를 묶어 넣는 캐러셀 모듈이 기본 off로 들어 있다. 전날 커밋(2e2295b)은 캐러셀 안의 영상 순서를 손으로 맞춘 가중합 대신 캐러셀 전용 CTR(클릭률) 모델로 정하는 경로를 만들었지만, 받아 올 모델 이름은 빈 문자열이었다. 이름이 비어 있으면 경로를 켜도 모델을 받지 못한다. 이번 커밋은 그 모델 이름의 기본값을 채웠고, 함께 계정 조치 서비스의 처리 규칙 하나를 바꿨다.
새로 알게 된 것A. 캐러셀 CTR 경로에 쓸 모델이 이름으로 지정됐지만 경로는 아직 꺼져 있다
- 캐러셀 CTR 모델 이름의 기본값이 빈 문자열에서 구체적인 모델 이름으로 바뀌었다 확인 —
home-mixer/params/param.rs:1272-1276.- 파라미터는
VideoCarouselCtrModelName이고 값은"lr_v8_search_video_1_2026-11-03_no_high_risk"다. - 이 값은 크론 미러(X 내부 feature switch 기본값을 날마다 이 파일로 옮겨 적는 동기화)에서 왔다. 파일 머리 주석의 동기화 시각은 2026-11-06T16:00:45Z다.
- 파라미터는
- 경로를 켜는 스위치와 캐러셀 자체는 이 커밋에서도 기본 off다 확인 — 같은 파일:1224-1270.
EnableVideoCarousel과EnableVideoCarouselCtrModel이 둘 다false다.- 모델을 받아 오는 query hydrator는 두 스위치가 모두 켜졌을 때만 돈다 —
query_hydrators/video_carousel_ctr_model_query_hydrator.rs.
- 모델은 로지스틱 회귀 8번째 판으로 2026-11-03에 학습됐고, 브랜드 안전 HighRisk 영상을 뺀 데이터를 썼을 것이다 추정 — 이름의
lr_v8, 날짜,no_high_risk조각에서 읽은 해석이다.- 이름의
search_video조각은 검색 지면의 영상 데이터로 학습했다는 뜻일 수 있지만, 학습 코드가 공개되지 않아 확인할 수 없다 추정.
- 이름의
새로 알게 된 것B. 제어 기록이 없는 계정 조치 분류 헤드는 이제 조치하지 않고 기록만 한다
- abuse-enforcement-service(AES, 모델 점수를 근거로 계정에 라벨·챌린지·정지 조치를 내리는 서비스)에서 처리 방식이 바뀌었다. 어떤 제어 기록도 이름을 대지 않는 분류 헤드(분류 모델의 출력 하나)는 기본 규칙대로 조치하지 않고 Recording 모드로 기록만 한다 확인 —
service-lib/src/action_control.rs:1079-1098.- 이전에는 저장소에 기록이 하나도 없으면 바로 기본값(규칙 적용)으로 돌아갔고, 다른 헤드의 기록만 있을 때도 규칙을 따랐다. 삭제된 테스트 이름이
no_record_follows_the_rules였다. - 새 테스트
a_head_no_record_names_records_only는 두 경우 모두ControlMode::Recording, 조치 목록 비어 있음, 기록 사유no_selection을 기대한다. - 헤드 이름이 비었거나 형식에 맞지 않으면 예전처럼 기본값을 돌려준다.
- 이전에는 저장소에 기록이 하나도 없으면 바로 기본값(규칙 적용)으로 돌아갔고, 다른 헤드의 기록만 있을 때도 규칙을 따랐다. 삭제된 테스트 이름이
- 이런 헤드를 처음 저장할 때 분류기나 밴드 단위로 좁혀 저장하는 것은 막힌다. 헤드 전체 기록을 먼저 저장해야 한다 확인 — 같은 파일:902-913.
- 오류 코드는
unknown_head_needs_head_record다. 처음 저장한 헤드는 토픽 라벨 목록에 없는 판정도 통과시키는 설정이 기본으로 켜진다.
- 오류 코드는
"save the whole head first, so its decisions keep getting past the topic's label list"
새로 알게 된 것그 밖의 변경
- For You 후보 파이프라인 전체를 후보 3,000개로 돌려 보는 결정적 성능 테스트와 벤치마크가 생겼다 확인 —
candidate_pipeline/performance_tests.rs.- 함께 들어온
performance_params.json은 대부분의 스위치를 끄고 가중을 0으로 둔 테스트 설정이다. 프로덕션 기본값으로 읽으면 안 된다. - 테스트는 반드시 연결돼 있어야 할 컴포넌트 15개(PhoenixSource, PreviouslySeenPostsFilter, VMRanker, VFFilter 등)를 확인한다.
- 함께 들어온
- 캐시 hydrator가 캐시 적중이 하나도 없을 때 후보 목록을 복사하지 않도록 바뀌었다 확인 —
candidate-pipeline/hydrator.rs. - 광고 노출 이력 캐시의 TTL이 상수에서 파라미터
AdsHistoryCacheTtlSecs로 바뀌었고, 기본값은 이전과 같은 300초다 확인 —side_effects/served_ad_history_cache_side_effect.rs. - Phoenix(X의 Grok 기반 랭킹 트랜스포머) 행동 목록에
DISTILLED_FEEDBACK_RELEVANT_TO_SEARCH(114번)가 추가됐다. 이 커밋에서는 쓰는 코드가 없다 확인 —recsys.proto.
정본 반영 services/x.md ## 피드 지면 캐러셀 항목의 CTR 모델 경로 불릿 아래에 모델 이름 기본값과 스위치 off 상태를 적은 하위 불릿을 추가했다. ## 출처의 git 로그 기준을 2026-11-08, 3b6919f로 올렸고, 변경 이력 요약표에 4세대+59 행을 추가했다.
의미 X는 캐러셀 CTR 모델을 실제로 학습해 이름까지 정했으므로, 남은 일은 스위치를 켜는 것뿐이다. 근거는 전날 만든 경로에 비어 있던 모델 이름이 하루 만에 날짜가 붙은 학습 산출물 이름으로 채워졌다는 점이다. 다만 캐러셀과 CTR 경로가 모두 기본 off라 3b6919f 기준으로 For You 동작은 바뀌지 않는다.
다음에 볼 것
- 캐러셀 CTR 경로나 캐러셀 자체의 스위치가 켜지는지 — 켜지면 캐러셀 순서가 가중합에서 학습 모델로 바뀐다.
- 모델 이름의 search_video가 무엇을 뜻하는지 — 학습 데이터 출처가 검색 지면인지는 추정으로 남아 있다.
- DISTILLED_FEEDBACK_RELEVANT_TO_SEARCH 행동을 쓰는 코드 — 검색 관련성을 증류한 피드백을 라벨로 쓰려는지 아직 알 수 없다.
- Reddit RSS 종료(2026-11-13) — 그 뒤 r/RedditEng 조회 방법을 미리 정해 둬야 한다.
조회 실패: ai.meta.com/blog — 목록이 2026-07 글까지만 보여 최근 글을 확인하지 못했다