유튜브의 규모는 얼마나 될까?
(ethanzuckerman.com)- 플랫폼 전체를 가늠할 분모가 없으면 허위정보나 추천 영향 같은 연구 결과도 맥락을 잃기 쉬워, 연구팀은 YouTube 전체 규모를 무작위 표본으로 추정하려 함
- YouTube 영상 ID는 11자리이고 가능한 주소 공간이 2^64개라서, 단순 무작위 URL 대입만으로 유효 영상을 찾기는 거의 불가능함
- 연구팀은 “drunk dialing” 방식과 효율화 기법으로 몇 달 동안 1만 개 이상의 진짜 무작위 영상을 수집했고, 현재 YouTube에는 약 133.25억 개 영상이 있다고 추정함
- 표본 분석 결과 2023년에만 40억 개 이상의 영상이 올라왔고, 중앙값 조회수는 39회로 나타나 YouTube의 긴 꼬리가 매우 크다는 점이 드러남
- Tubestats는 규모 추정을 계속 갱신하려 하지만, 공개 상태여도 사실상 발견되지 않던 영상 URL을 노출하지 않는 윤리적 제약도 함께 남아 있음
YouTube 연구를 어렵게 만드는 분모 문제
- 소셜미디어 연구는 허위정보나 혐오 발언처럼 눈에 띄는 현상을 찾는 데 집중하기 쉽지만, 전체 플랫폼에서 차지하는 비중을 모르면 규모 판단이 흔들림
- 예를 들어 “white genocide”나 “ivermectin” 같은 검색어로 결과 수를 세는 방식은 가능함
- Avaaz의 2020년 8월 COVID 허위정보 보고서는 1년간 38억 조회를 집계했지만, 전체 플랫폼 조회량이라는 분모가 없으면 큰 수인지 작은 수인지 판단하기 어려움
- Reddit과 Twitter는 한동안 플랫폼 전체를 가늠할 수 있는 데이터 접근을 제공했음
- Reddit은 Pushshift가 전체 게시물을 수집할 수 있게 해 커뮤니티별 규모 비교가 가능했음
- 2023년 여름 Pushshift 공개 접근이 차단되면서 Redditmap.social은 그해 초 생성된 데이터만 사용할 수 있음
- Twitter는 연구 API로 전체 트윗의 10분의 1 또는 100분의 1 표본을 제공했지만, 이후 접근을 차단하고 더 적은 접근에 큰 비용을 부과함
YouTube는 대표 표본을 얻기 어려움
- YouTube는 거의 모든 인터넷 사용자가 쓰는 대형 플랫폼임
- Pew 기준 10대의 93% 가 YouTube를 사용함
- 가장 가까운 서비스는 TikTok 63%, Snapchat 60%임
- 문서화된 API가 있어도 전체 YouTube의 무작위 대표 표본을 얻는 좋은 방법은 없음
- 기존 YouTube 연구는 주로 두 방식에 의존함
- 선택한 사용자 채널의 모든 영상을 모아 분석함
- 특정 영상에서 시작해 추천 영상들을 따라가며 수집함
- 두 방식 모두 의미 있는 연구에는 쓸 수 있지만, 전체 YouTube 영상 표본을 만들거나 플랫폼 규모를 계산하기에는 부족함
무작위 URL을 찍어보는 “drunk dialing”
- Jason Baumgartner는 YouTube의 비공식 API인 InnerTube를 활용해 무작위 URL을 찍어보는 방식을 제안함
- YouTube URL의 영상 ID는
watch?v=뒤에 붙는 11자리 문자열임- 앞 10자리는
a-z,A-Z,0-9,_,-가 가능함 - 마지막 문자는 16개 값 중 하나만 가능함
- 가능한 YouTube 주소는 2^64개, 약 18.4퀸틸리언개임
- 앞 10자리는
- YouTube 영상이 10억 개라고 가정해도 무작위 URL 하나가 유효할 확률은 약 184억 번 중 1번 수준임
- 연구팀은 이 방식을 “drunk dialing”이라고 불렀고, Jason Baumgartner가 효율을 약 32,000배 높이는 우회 방법을 찾음
- Kevin Zheng은 탐색 스크립트를 작성해 몇 달 동안 1만 개 이상의 진짜 무작위 YouTube 영상을 수집함
무작위 표본으로 본 YouTube 규모와 분포
- 현재 YouTube 규모 추정치는 133.25억 개 영상이며, tubestats.org에서 몇 주마다 갱신됨
- 무작위 영상의 나이를 보면 YouTube의 성장 속도를 계산할 수 있음
- 2023년에만 40억 개 이상의 영상이 YouTube에 게시된 것으로 추정됨
- 조회수 분포는 강한 긴 꼬리를 보임
- YouTube 영상의 중앙값 조회수는 39회임
- 1만 회 이상 조회 영상을 YouTube가 추천하기 좋아함
- 1만 회 이상 조회 영상은 데이터셋의 약 4% 지만, YouTube 전체 조회수의 큰 비중을 차지함
- 수집한 무작위 영상은 언어 분포 추정에도 활용됨
- Kevin Zheng은 검색 스크립트와 여러 언어 감지 시스템을 연결함
- 이 추정은 방어 가능하지만 완벽하지는 않음
더 효율적인 dash method
- 무작위 URL 탐색은 주소 공간 전체를 대상으로 하므로 다른 표본 추출 방식의 무작위성을 검증하는 기준으로 쓸 수 있음
- 연구팀은 다른 영상 목록 생성 방식이 무작위 탐색과 비슷한 결과를 내면 “그럴듯하게 무작위”라고 볼 수 있다고 판단함
- Jia Zhou 등이 2011년에 발견한 방식은 더 효율적인 표본 수집 방법으로 작동함
- 한 문자가 대시인 5자리 문자열을 생성함
- YouTube 자동완성이 해당 URL을 완성하고, 존재하는 경우 일치 영상을 반환함
- Kevin Zheng은 현재 이 dash method로 YouTube를 주기적으로 조회하며 Tubestats 대시보드를 유지함
긴 꼬리 영상과 윤리적 제약
- 무작위 표본은 성공한 인플루언서뿐 아니라, 사용자 생성 미디어의 긴 꼬리 하단에서 창작자들이 도구를 어떻게 쓰는지 살피는 데 쓰임
- 수집된 영상 대부분은 몇십 명만 본 영상임
- URL을 공개하면 “공개” 상태이지만 사실상 잘 보이지 않던 영상이 공적 검토에 노출될 수 있음
- 그래서 논문에는 발견한 영상 URL 목록을 포함하지 않음
- Ryan McGrady는 무작위 영상 1,000개를 직접 보고 손으로 코딩하는 작업을 이끌었음
- 관련 논문은 Journal of Quantitative Description에 게재됐고, 손코딩 결과 소개는 Ryan의 글에 정리돼 있음
Tubestats를 유지하려는 이유
- 연구팀은 가능한 한 Tubestats를 유지할 계획임
- YouTube가 이 리소스나 생성 방법에 반대할 가능성도 있음
- 대형 사용자 생성 미디어 플랫폼은 디지털 공론장의 중요한 일부이므로, 플랫폼에 무엇이 있고 누가 만들며 누구에게 도달하는지에 대한 상위 수준 데이터가 정기적으로 공개돼야 함
댓글과 토론
Hacker News 의견들
-
표본을 뽑는 방식이 정말 영리하고, 저자들에게 박수를 보냄. Pew에 있을 때 YouTube API의 "related videos" 엔드포인트를 따라가는 무작위 보행으로 YouTube를 매핑하려 했고, 1년쯤 지나 포화점에 도달한 듯했지만, 여기서 나온 규모를 보면 레이더 아래에 긴 꼬리가 꽤 길게 존재하는 듯함
연구를 공개하자마자 Google이 API를 거의 바로 잠그기 시작했는데, 여전히 오래된 방식의 스크래핑으로 연구를 이어가는 사람들이 있어서 반가움. 당시 분석은 채널 수준이었고 인기 채널에만 초점을 맞췄지만, TubeStats의 일부 수치가 우리가 찾은 것과 꽤 비슷한 점도 흥미로움. 예를 들면 언어 분포: https://www.pewresearch.org/internet/2019/07/25/a-week-in-th...- Google 봇이 웹을 끊임없이 훑고 사이트를 거의 죽을 만큼 두드리는 걸 생각하면, Google이 API를 잠갔다는 건 꽤 아이러니함
- 이 방식이면 추천에서 링크되지 않는 일부 공개 제한 동영상 같은 것도 찾을 수 있음
- 이 기법은 새롭지 않음. 생물학자들이 호수의 물고기 수를 세는 데 쓰는 방식임
물고기 100마리를 잡아 표식을 달고, 일주일 기다린 뒤 다시 100마리를 잡아 그 안의 표식 달린 물고기 수를 세는 식 - YouTube가 API를 잠근 건 Cambridge Analytica 스캔들 이후였던 것 같음
-
이건 독일 전차 문제에 대한 완화책을 공략하는 흥미로운 방식임 https://en.m.wikipedia.org/wiki/German_tank_problem
최적 해법은 무작위 표본이 통계적으로 유의미한 결론에 도달할 만큼 충분한 데이터를 모으지 못하도록 주소 공간을 키우는 것일 듯함. 분포를 여러 방식으로 바꾸려는 다른 좋은 해법도 있겠지만, 진짜 무작위 표본이라면 그 방향의 대응은 제한될 것임- 글에서는 못 봤지만, 이건 이산 균등분포라는 전제에 달려 있음. Google이 식별자에 어떤 장난을 쳤는지는 알 수 없음
- 무작위 표본이 군집된 분포 같은 걸 어떻게 해결한다는 건지 모르겠음. 추정은 연속성 가정에 기대는 것 아닌가?
예를 들어 주소가 /v=0x00부터 0xff까지 있는데 실제로는 f0부터 ff만 쓴다면, 동영상이 무작위로 분포한다고 가정할 때 추정값은 항상 왜곡되지 않나?
즉 주소 가능한 공간에 임의의 필터를 적용한 뒤 주소를 배정하는 셈임. 같은 방식의 무작위 표본은 같은 정도로 빗나가겠지만, 내가 필터로 적용한 희소성은 알 수 없음
-
"YouTube dislikes" 데이터셋도 확인해볼 만함: https://clickhouse.com/docs/en/getting-started/example-datas...
이름이 이런 건 싫어요 기능이 제거되기 전에 정보를 모으려던 보관 작업이었기 때문임. 가장 논쟁적인 동영상이나 특정 언어 설명이 달린 상위 동영상 같은 것을 찾는 데 쓸 수 있음- YouTube는 워낙 크고 공개적인 플랫폼이라 거의 공공재에 가까우므로, 싫어요 수 같은 통계는 중요함
글에서도 “YouTube가 이 자원이나 이를 만든 방법에 반대할 수도 있다. 반론하자면, 이런 고수준 데이터는 모든 대형 사용자 생성 미디어 플랫폼에 대해 정기적으로 공개되어야 한다고 믿는다. 이런 플랫폼은 디지털 공론장의 가장 중요한 일부이며, 그 안에 무엇이 있고 누가 만들며 누구에게 도달하는지에 대해 훨씬 더 많은 정보가 필요하다”라고 함
정부가 이런 통계를 플랫폼이 노출하도록 규제해서 통계 기관이 수집할 수 있게 해야 함 - 이 댓글 작성자는 ClickHouse CEO임
- YouTube는 워낙 크고 공개적인 플랫폼이라 거의 공공재에 가까우므로, 싫어요 수 같은 통계는 중요함
-
YouTube가 가진 데이터가 얼마나 되는지 알고 싶었는데, 그 숫자는 없었음. 제공된 통계로 대략 계산해보니 평균 동영상 길이는 500초 정도임
비트레이트를 400KB/s, 동영상 수를 130억 개로 잡으면 2.7엑사바이트가 나옴. 400KB/s는 직접 내려받은 FHD 24~30fps 동영상 몇 개에서 얻은 값이라 매우 거친 추정임. YouTube는 체감 정보량이 적은 구간을 더 낮은 비트레이트로 인코딩할 것이고, 동영상은 해상도와 프레임레이트가 제각각이며 그 분포도 서비스 역사에 따라 바뀜. 모든 동영상을 1.5MB/s 비트레이트의 4K로 가정하면 10엑사바이트임
이 추정은 YouTube가 필요한 저장공간을 낮게 잡은 것임. 인기 동영상은 여러 데이터센터에, VP9와 AV1 양쪽으로 저장할 테니까. 반대로 인기 없는 동영상을 압축하거나 다른 형식에서 온디맨드로 트랜스코딩한다면 이 추정이 높을 수도 있지만, 그럴 가능성은 낮아 보임- 그 저장공간 추정은 한 자릿수 규모로 빗나갔을 가능성이 큼
400KB/s, 흔히 동영상 인코딩에서 쓰는 3.2Mbps는 원본 품질 FHD, 즉 1080p 업로드 기준으로 꽤 낮음. 4K 동영상 수치는 평균 원본 업로드에 꽤 가까움
여기에 YouTube가 최소한 H.264와 VP9 두 동영상 코덱으로 압축한다는 점을 고려해야 함. 각 코덱마다 원본 업로드 품질에 따라 320p부터 1080p 이상까지 모든 해상도가 있음. 인기 동영상과 4K 동영상 상당수는 AV1로도 인코딩됨. 일부는 360도 서라운드 동영상용으로 HEVC까지 있음. 맞게 읽은 것임. YouTube에 H.265 HEVC가 있음
그리고 이 모든 건 복제나 중복 저장을 포함하지도 않음. 총량이 쉽게 100EB를 넘는다고 해도 놀랍지 않음. 2020년 Dropbox 100개 크기임 - 한편으로는 “형식 두 개뿐?”은 아님. H.264 같은 것도 더 있고, 해상도도 여러 개일 수 있음. 또 특정 해상도를 특정 형식으로 항상 제공해야 하는 계약상 의무가 있거나 있었을 수도 있음
다른 한편으로는 조회수가 말도 안 되게 낮은 동영상이 아주 많을 수도 있음. 또 한편으로는 YouTube가 자체 트랜스코딩 칩까지 만들어야 했다는 점을 떠올려야 함. 말 그대로 복잡함
10년 전에는 이 질문의 답을 알고 있었고, 저장소 담당자들이 비용을 낮추는 걸 도왔음. 며칠 전에 그중 한 명인 R.L.이 올해 2월 세상을 떠났다는 걸 알게 됨. RIP - 복제와 소거 코딩 오버헤드를 빼먹고 있음. 10엑사바이트는 솔직히 매우 낮아 보임. 지금은 50~100EB에 더 가까울 것 같음
- 2013년에 매분 업로드되는 시간의 연간 보고 수치를 바탕으로 계산했을 때, 콘텐츠가 375PB였고 하루 185TB씩 늘며 연 70% 성장률이었음
이 계산에는 여러 인코딩본이나 원본 저장은 포함되지 않음 - YouTube는 원본 업로드 사본을 영구 보관한다는 점도 고려해야 함. 원본이 더 큰 파일일 수도 있음
- 그 저장공간 추정은 한 자릿수 규모로 빗나갔을 가능성이 큼
-
이 글의 결과물로 함께 연결된 사이트가 있음: https://tubestats.org/
-
Google은 예전에 일부 직무 면접에서 YouTube 관련 확장성 질문을 하곤 했음. 대개 커져가는 분산 인프라에서 로그 데이터를 동기화하는 문제로 이어졌고, 거의 말로 설명하기도 어려운 우스꽝스러운 Big-O(f(n)) 같은 결과가 나왔음
출처: Google 면접을 몇 번 봤음 -
저자는 “cheats”를 썼다고 적었음. 이것이 무엇을 하느냐에 따라 표본이 독립이라는 iid 가정이 깨질 수 있음
눈덩이 표본추출과 비슷하다면 “과도한” 성공률이 나와 숫자를 부풀릴 수 있음. “Jason이 이 방법을 대략 32,000배 효율적으로 만드는 몇 가지 치트를 찾았고, 그래서 우리의 ‘전화’가 훨씬 더 자주 연결된다”는 부분이 있음- 글을 끝까지 읽으면 됨
“2011년에 Jia Zhou 등이 발견했고, 우리의 순진한 방법보다 훨씬 효율적이다. 한 글자가 대시인 다섯 글자 문자열을 만들면 YouTube가 그 URL을 자동완성하고, 존재하는 경우 일치하는 동영상을 내놓는다”고 되어 있음 - URL에 체크섬이 있어서 실제로 동영상에 접근하지 않고도 오타를 감지할 수 있을 가능성이 큼
체크섬이 어떻게 만들어지는지 몰라도, 실제 ID 공간의 표본 하나에 대해 그 값을 전부 시도해볼 수 있음 - 그 치트는 아마 동영상 존재 여부를 개별 결과로 반환하는 재생목록 API 같은 걸 쓰는 방식일 듯함
예를 들어 ID x, x+1, x+2, ...를 담은 재생목록을 만드는 API를 호출한 뒤 목록을 가져오면, 할당된 ID인 x+2만 들어 있는 식 - 표본이 왜곡됐다면 데이터가 그렇게 깔끔하게 보이진 않았을 것 같음. Google이 뭔가 흥미로운 일을 했다면, 조금만 왜곡되는 정도로 끝나진 않았을 듯함
- 동의함
나 같은 통계 초보에게는 치트와 자동완성을 써도 표본 독립성이 깨지지 않고, 가능한 한 무작위 표본추출이 유지된다는 증명이 필요함
술 취해 무작위로 전화를 거는데, 매번 사람이 교환원처럼 번호를 잘못 눌러도 누군가와 연결되게 도와주는 상황은 무작위처럼 보이지 않음
다만 85쪽짜리 논문은 읽지 않았음. 거기서 다뤘을 수도 있음
- 글을 끝까지 읽으면 됨
-
재미있는 데이터셋임. 논문은 채널 통계에 대해 약간 잘못된 인상을 남김
내가 이해한 바로는 구독자 수를 볼 때 표본추출 성향을 보정해 재가중하지 않음. 표본이 전체 모집단의 작은 일부라면 특정 채널이 등장할 확률은 그 채널의 공개 동영상 수에 비례하므로, 대략 1/채널별 동영상 수로 가중해야 함- 나도 그 점을 봤음. 구독자 100만 명이 98백분위라는 건 매우 그럴듯하지 않고, 99.999백분위가 아닐 가능성이 낮아 보임
-
궁금한 사람들을 위해 설명하면, 이들의 추정 방식은 대략 이렇음
값의 범위를 가정하고, 그 범위에서 표본을 뽑는 공정한 확률 함수를 가정함. 추정 크기는 적중 비율에 전체 값 범위를 곱한 값임- 글을 훑어봤는데, 그렇다면 가정이 꽤 많음
가능한 값의 범위가 맞다고 치자. 특정 범위의 10글자에 1을 더한 형태라면, 동영상이 있을 수 있는 거대한 원 하나를 나타냄
식별자, 즉 유효한 동영상의 분포가 전부임. YouTube가 우리가 모르는 제약이나 왜곡을 ID에 걸었다면, 실제 존재하는 동영상 ID는 그 큰 가능성 원 안의 더 작은 원일 수 있고 전체에 균등하게 퍼져 있지 않을 수 있음. 군집이 있을 수도 있음. 그러면 그 왜곡의 실루엣을 얻거나 대충 무작위인지 보려고, 예컨대 포아송 분포 같은 식으로 공간에 다트를 던지듯 표본을 뽑아야 할 것임
그 다음에야 크기를 추정할 수 있음. 이들이 하는 게 그건가? 그리고 그냥 YouTube에 물어본 사람은 없나?
- 글을 훑어봤는데, 그렇다면 가정이 꽤 많음
-
이 방법은 막기가 정말 쉬움. 존재하지 않는 식별자 중 일정 비율에 대해 무작위 동영상을 반환하면 됨. 거기에 무작위성을 조금 섞으면 충분함
방법을 설명하는 데 따르는 위험이 바로 이거임- 그러면 시스템 전반의 많은 불변 조건을 깨지 않고 구현하기가 매우 어려울 것 같음
예를 들면 동영상 ID는 불변이어야 하고, 하나의 동영상은 단 하나의 고유 동영상 ID로만 표현되어야 한다는 조건 같은 것들 - 무작위로 생성한 ID에서 동영상이 나왔다면, 곧바로 다시 질의해서 전과 같은 동영상인지 보면 됨
같지 않으면 그 결과를 버리고 생성된 ID가 실제로는 존재하지 않는다고 보면 됨. 같다면 실제 ID라는 걸 알 수 있음
YouTube 동영상 URL이 불변인 한, 이 방법은 위에서 말한 차단을 막아낼 수 있음 - 다만 YouTube가 그런 일을 한다고 밝히지 않으면, 우리는 그 방법이 무효화됐는지 모를 것임. 게다가 그 다른 동영상은 자체 기존 UID를 가질 테니, 이론적으로는 이런 측정을 방해하려고 복제했는지도 알 수 있음
- 그런 시스템에서 프로덕션 오류를 디버깅한다고 상상하기도 힘듦
- 동영상 ID가 사용 가능한 도메인 안에서 순차적인가, 아니면 완전히 흩어져 있나? 알려진 살아 있는 동영상 ID들에 공통점이 있어서 quintillion 규모의 가능성을 훑기 쉽게 만들 수 있는 뭔가가 있나?
- 그러면 시스템 전반의 많은 불변 조건을 깨지 않고 구현하기가 매우 어려울 것 같음