Spotify/machine-learning

4 개의 포스트

spotify

LLM은 A/B 테스트에서 언제 인간을 대체할 수 있을까? | Spotify Engineering (새 탭에서 열림)

LLM 예측은 인간 사용자를 대신한 A/B 테스트에 활용될 수 있지만, 무작위 실험처럼 설계만으로 타당성이 보장되지는 않습니다. Upworthy 헤드라인 데이터에서는 원시 LLM 예측이 인간의 실제 효과를 39%만 포착했지만, 적절한 보정과 반복 예측을 적용하면 인간 실험 결과를 회복할 수 있었습니다. 다만 그 보정이 새로운 유형의 제품·기능에도 유지된다는 보장은 없으며, 혁신적인 개입일수록 인간 대상 실험이 여전히 필요합니다. ## LLM 원시 예측은 단순한 잡음이 아니라 편향을 가진다 - 연구진은 수천 건의 헤드라인 A/B 테스트가 포함된 Upworthy Research Archive를 사용했습니다. - `gpt-4o-mini`에 각 대조군·처리군 헤드라인의 일반적인 사용자 클릭률을 예측하도록 했습니다. - 원시 예측값으로 인간 실험과 같은 분석을 수행하자 실제 인간 치료 효과의 **39%만 회복**했습니다. - 이는 무작위 잡음만의 문제가 아니라, LLM이 처리 효과를 전반적으로 0에 가깝게 축소하는 방향성 편향입니다. - 이런 편향이 누적되면 조직은 기능이나 제품 변경의 사용자 가치를 과소평가하고, 출시 여부를 잘못 결정할 수 있습니다. ## LLM을 인간 결과의 대리변수로 쓰기 위한 두 조건 ### 대리성(Surrogacy) - LLM 예측이 처리군과 대조군의 차이 중 인간 행동에 영향을 주는 모든 요소를 포착해야 합니다. - LLM 예측과 처리 전 특성 등을 고려한 뒤에는, 사용자가 어느 조건에 배정됐는지가 인간의 결과를 추가로 설명하지 않아야 합니다. - 즉, LLM 예측이 “해당 처리가 인간 반응에 미치는 경로”를 완전히 매개해야 합니다. - 이 조건이 성립하지 않으면 LLM은 인간의 효과가 아니라 LLM 자체의 반응을 측정하게 됩니다. ### 비교가능성(Comparability) - 과거 인간 실험에서 추정한 “LLM 예측과 실제 인간 행동의 관계”가 새로운 실험에서도 동일해야 합니다. - 새로운 처리 방식이 등장했을 때 LLM 점수와 실제 사용자 행동의 매핑이 달라지면 기존 보정 함수는 무너집니다. - 더 강한 형태로는 처리 전 사용자 특성과 LLM 예측의 전체 분포가 실험 간 안정적이어야 합니다. - 두 조건이 모두 충족될 때에만 과거 사용자 데이터로 LLM 결과를 보정해 인간 평균 처리 효과를 추정할 수 있습니다. - 데이터나 LLM 샘플을 무한히 늘려도 조건이 깨지면 편향은 사라지지 않습니다. 이는 표본 부족이 아니라 식별 대상 자체가 달라지는 문제이기 때문입니다. ## 보정 방법에 따라 결과가 달라진다 - 단순 선형 보정과 OLS(최소제곱법)는 인간 결과와 LLM 결과 사이의 비선형 관계를 충분히 표현하지 못했습니다. - 검증용으로 남겨둔 실험에서 OLS 보정 효과는 인간 기준값과 **3.8 표준오차**만큼 차이를 보여 신뢰하기 어려웠습니다. - 랜덤 포레스트와 그래디언트 부스팅 트리 같은 머신러닝 모델은 더 유연하게 비선형 관계를 학습했습니다. - 이 방법으로 보정한 효과는 인간 효과의 표본오차 범위 안에 들어갔고, 통계적으로 유의한 차이가 나타나지 않았습니다. - 따라서 LLM 예측을 사용할 경우 단순 선형 보정보다는 과거 인간 데이터에서 검증된 유연한 보정 모델이 필요합니다. ## LLM 생성의 무작위성도 별도로 처리해야 한다 - 같은 입력이라도 샘플링 온도에 따라 LLM은 서로 다른 예측을 낼 수 있습니다. - 이 측정오차를 무시하면 효과가 다시 0으로 축소되고 추정 분산도 커질 수 있습니다. - 각 실험 단위에 대해 LLM 예측을 여러 번 생성한 뒤 평균을 내면 우연한 생성 잡음이 줄어듭니다. - 평균 예측은 개별 출력의 불안정성을 완화하고, 인간 행동과 관련된 신호에 더 가까워지는 효과가 있습니다. ## 가장 큰 한계는 새로운 개입에 있다 - 대리성과 비교가능성은 과거 데이터에서 일부 점검할 수 있지만, 한 번도 실험하지 않은 처리에 대해 성립한다고 증명할 수는 없습니다. - 새로운 UI 패러다임, 가격 정책, 완전히 새로운 기능처럼 기존 실험과 거리가 먼 개입일수록 과거 보정의 근거가 약해집니다. - Upworthy 데이터는 텍스트 기반이고 헤드라인 변형들이 서로 유사하며, LLM이 매력적인 문구에 관한 많은 텍스트를 학습했다는 점에서 대리변수 검증에 유리한 사례입니다. - 반면 레이아웃, 추천 알고리즘, 가격, 사용자 경험 구조처럼 텍스트만으로 표현하기 어려운 처리는 필요한 조건이 더 쉽게 깨질 수 있습니다. - 역설적으로 LLM A/B 테스트가 가장 큰 이익을 주는 “완전히 새로운 시도”에서 인간 결과를 대체할 근거가 가장 약합니다. 새로운 기능이나 제품 혁신을 평가할 때는 인간 대상 A/B 테스트를 기준으로 삼는 것이 안전합니다. LLM 기반 테스트는 과거와 유사한 처리를 빠르게 선별하거나, 충분한 인간 실험 데이터로 보정·검증된 제한적인 영역에서 보조 수단으로 사용하는 것이 적절합니다.

spotify

LLM 평가로 더 나은 실험하기 — 포크가 아닌 퍼널 | Spotify Engineering (새 탭에서 열림)

LLM 평가(evals)는 실험을 대체하는 도구가 아니라, 실험 전에 유망한 후보를 걸러내고 실험 후 판단 기준을 보정하는 퍼널의 일부다. Evals는 출력의 품질과 의도 부합 여부를 검증하지만, 실제 사용자의 행동과 사업 성과까지 검증하지는 못한다. 따라서 오프라인 평가와 온라인 A/B 테스트를 반복적으로 연결해야 실험 성공률과 평가 모델의 신뢰도를 함께 높일 수 있다. ## Evals와 실험의 역할 차이 - **Evals는 검증(verification)**을 담당한다. - 출력이 관련성, 일관성, 어조, 의도 부합성 등 정해진 품질 기준을 만족하는지 평가한다. - 대규모 데이터에서 사람의 수작업 평가보다 빠르고 저렴하게 후보를 비교할 수 있다. - **실험은 검증(validation)**을 담당한다. - 실제 사용자가 변경된 결과에 어떻게 반응하는지 확인한다. - 개선된 출력이 참여도, 유지율, 매출 등 실제 사업 성과로 이어지는지 측정한다. - 따라서 관계는 “eval 또는 실험”이라는 분기가 아니라, **eval로 후보를 좁힌 뒤 실험으로 사업 효과를 확인하는 퍼널**이어야 한다. - Spotify의 사례에서도 A/B 테스트 중 긍정적인 결과로 출시되는 비율은 약 12%지만, 약 64%는 회귀를 발견하거나 가설을 수정하는 등 유효한 학습을 제공한다. ## Evals가 제공하지만 제공하지 못하는 것 - LLM judge는 다음과 같은 품질 문제를 대규모로 탐지할 수 있다. - 사용자 의도와 맞지 않는 추천 - 신뢰를 훼손하는 콘텐츠 - 응답의 관련성, coherence, 어조 문제 - 평가 과정에서 팀이 예상하지 못한 문제 패턴을 발견할 수 있다. - 예를 들어 부적절한 추천이 특정 사용자군이나 상황에서 반복된다는 사실을 찾아낼 수 있다. - 발견된 패턴은 제품 개선 가설이 된다. - 같은 judge를 수정 후에도 사용하면 문제가 실제로 줄었는지 확인할 수 있다. - 문제가 되는 평가 항목의 발생 빈도가 감소하면 구현 품질이 개선된 것으로 볼 수 있다. - 그러나 eval만으로는 다음을 알 수 없다. - 사용자의 장기 참여도가 높아졌는지 - 이탈이나 churn이 줄었는지 - 시스템 전체에서 예상치 못한 부작용이 발생했는지 - Spotify에서는 출시된 실험의 약 42%가 세션 길이, 충돌률, 유지율 등 **최적화 대상이 아니었던 보조 지표의 회귀** 때문에 되돌려졌다. 이런 문제는 오프라인 eval에서 포착되지 않을 수 있으므로 온라인 실험과 가드레일 지표가 필요하다. ## 두 단계의 보정과 평가 드리프트 - Evals는 실제 성과를 직접 측정하는 것이 아니라, 성과를 대신하는 **프록시 점수**다. - 기존의 정량 지표(랭킹 점수, precision, recall) 위에 LLM judge라는 또 하나의 보정 계층이 추가된다. - 두 계층 모두 실제 온라인 결과와 비교해 보정해야 한다. - judge가 더 높은 점수를 준 변형이 실제로 더 나은 사용자 경험을 제공하는가? - judge가 실질적 가치가 아닌 표면적 문체나 특정 패턴을 보상하고 있지는 않은가? - 평가 기준은 시간이 지나면서 드리프트할 수 있다. - 모델, 사용자 행동, 콘텐츠 유형, 제품 목표가 바뀌면 기존 judge의 점수와 실제 성과의 관계가 약해질 수 있다. - Qodo의 코딩 eval에서는 Anthropic의 Opus 4.5가 개선되지 않은 것처럼 보였지만, 실제로는 긴 작업에서 성능이 크게 향상된 사례가 있었다. - 반대로 eval 점수는 좋아졌지만 실제 사용자 성과가 개선되지 않는 경우도 가능하다. - 따라서 오프라인 점수와 온라인 결과를 지속적으로 비교해야 eval이 단순한 의견이 아니라 신뢰할 수 있는 증거가 된다. ## 실험 전후를 연결하는 피드백 루프 - **실험 전** - 여러 후보를 LLM eval로 평가한다. - 품질 기준을 충족하지 못하는 후보를 제거한다. - 남은 후보에 실험 리소스를 집중해 실험의 적중률을 높인다. - **실험 중** - 주요 사업 지표뿐 아니라 최적화하지 않은 가드레일 지표도 관찰한다. - 세션 길이, 오류율, 충돌률, 유지율처럼 회귀 가능성이 있는 지표를 함께 확인한다. - **실험 후** - A/B 테스트에 사용된 실제 데이터에 eval을 다시 적용한다. - judge가 선호한 변형이 실제 사용자 성과도 개선했는지 비교한다. - eval 점수와 실험 결과 사이의 차이를 다음 평가 기준을 개선하는 신호로 활용한다. - 결과가 어느 쪽이든 학습이 발생한다. - eval과 사용자 성과가 함께 개선되면 judge가 가치 있는 품질 요소를 측정하고 있다는 뜻이다. - eval만 개선되고 사용자 성과가 그대로라면 judge가 사업 성과와 무관한 요소를 측정하고 있다는 뜻이다. ## 상황에 따른 실험 강도 - 모든 변경에 동일한 수준의 증거를 요구할 필요는 없다. - 빠른 반복 단계에서는 방향성을 파악하기 위한 간단한 테스트를 사용할 수 있다. - 출시 결정이나 영향 범위가 큰 변경에는 충분한 표본, 장기 지표, 가드레일을 포함한 엄격한 실험이 필요하다. - 시스템이 복잡할수록 실험을 생략해 발생하는 대규모 회귀 위험이 커진다. 실무적으로는 LLM eval을 **후보 선별과 품질 진단**에 사용하고, 최종 출시는 반드시 사용자 대상 실험과 가드레일 지표로 판단하는 방식이 권장된다. 실험 결과를 다시 eval 보정에 반영하면 시간이 지날수록 더 정확한 평가 체계를 구축할 수 있다.

spotify

개인화와 실험을 위한 별도의 기술 스택을 사용하는 이유 | Spotify 엔지니어링 (새 탭에서 열림)

스포티파이는 개인화(Personalization)와 실험(Experimentation)을 서로 다른 기술 스택으로 분리하여 운영합니다. 개인화 시스템은 머신러닝(ML) 스택을 통해 구축하고, 이렇게 구축된 시스템의 성과와 가치는 실험 스택인 'Confidence' 플랫폼을 통해 검증하는 구조를 취합니다. 이러한 분리를 통해 스포티파이는 각 인프라의 전문성을 유지하면서도 기술적 부채를 방지하고 대규모 시스템을 효율적으로 확장하고 있습니다. ### 실험에서 개인화로의 진화와 컨텍스트 밴딧 * **A/B 테스트와 멀티 암드 밴딧(MAB):** 일반적인 A/B 테스트는 모든 사용자에게 평균적으로 가장 좋은 버전을 찾습니다. 반면, MAB는 실험 중에 성과가 좋은 그룹에 더 많은 트래픽을 동적으로 할당하여 효율성을 높입니다. * **컨텍스트 밴딧(Contextual Bandits):** 사용자 특성(나이, 위치, 과거 행동 등)에 따라 각기 다른 최적의 '대안(Arm)'을 제공합니다. 이는 더 이상 하나의 최고 버전을 찾는 것이 아니라, 개별 사용자에게 맞춤화된 경험을 제공하는 '개인화' 영역으로 진입함을 의미합니다. * **시스템으로서의 개인화:** 컨텍스트 밴딧이 도입되면 실험의 목적은 특정 버튼의 효과 측정이 아니라, "이 개인화 시스템이 기존 시스템보다 더 큰 가치를 창출하는가?"라는 시스템 평가로 전환됩니다. ### 기술 스택을 분리해야 하는 인프라적 이유 * **성능 및 지연 시간(Latency) 요구사항:** 개인화 모델(NN, LLM, 부스팅 모델 등)은 실시간 데이터 기반의 추론과 극도로 낮은 지연 시간을 요구합니다. 이를 위해 최적화된 ML 스택이 필요하며, 실험 도구가 이러한 성능 요구사항을 모두 수용하려 하면 시스템이 지나치게 비대해집니다. * **기술적 부채 방지:** 실험 스택과 ML 스택의 관심사를 혼합하면 시스템 간 결합도가 높아져 관리하기 어려운 기술적 부채가 발생합니다. 스포티파이는 이를 분리함으로써 각 플랫폼이 고유의 목적에 집중하게 합니다. * **복잡한 모델 지원:** ML 플랫폼은 대규모 피처 세트와 복잡한 알고리즘을 학습하고 서빙하는 데 특화되어 있어, 단순한 실험 도구보다 정교한 개인화 로직 구현에 유리합니다. ### 분리를 통한 평가 체계의 명확성 * **재귀적 평가의 필요성:** 컨텍스트 밴딧이나 추천 알고리즘 자체도 하나의 '기능'입니다. 따라서 새로운 알고리즘 버전이 기존 버전보다 나은지 확인하기 위해서는 별도의 A/B 테스트가 필요합니다. * **관심사 분리(Separation of Concerns):** ML 스택은 "어떻게 개인화할 것인가"를 담당하고, 실험 스택은 "이 개인화가 실제로 효과가 있는가"를 측정합니다. * **병렬 실험 가능:** 실험 플랫폼을 독립적으로 유지함으로써, 수천 개의 다른 실험들과 간섭 없이 개인화 모델의 성능을 동시에 테스트하고 확장할 수 있습니다. 성공적인 개인화 서비스를 구축하려면 개인화 알고리즘(컨텍스트 밴딧 등)을 실험의 도구가 아닌, **검증 대상이 되는 제품의 기능**으로 정의해야 합니다. 저지연 모델 서빙과 복잡한 피처 처리는 전용 ML 스택에 맡기고, 실험 플랫폼은 이를 객관적으로 비교·평가하는 역할에 집중하는 것이 기술적 유연성과 운영 효율성을 동시에 잡는 길입니다.

spotify

더 스마트한 광고를 위한 우리의 (새 탭에서 열림)

Spotify는 광고 비즈니스의 다양한 구매 채널 간에 발생하는 의사결정 로직의 파편화 문제를 해결하기 위해 멀티 에이전트 아키텍처를 도입했습니다. 기존의 하드코딩된 워크플로우 대신, 광고주의 의도를 이해하고 공유된 신호를 바탕으로 추론하는 '프로그래밍 가능한 의사결정 계층'을 구축하여 모든 채널에서 일관된 최적화를 달성하고자 합니다. 이를 통해 복잡한 비즈니스 제약 조건을 유연하게 처리하고, 기존 광고 서비스들을 에이전트가 활용하는 도구로 재정의함으로써 시스템 전반의 운영 효율성을 극대화하는 것이 이 글의 핵심입니다. ### 기존 워크플로우의 구조적 한계와 파편화 * **채널별 로직 불일치:** 동일한 백엔드 인프라를 공유함에도 불구하고 Direct, Self-Serve, Programmatic 등 각 구매 채널별로 의사결정 로직과 휴리스틱이 다르게 구현되어 동작의 불일치가 발생합니다. * **중복 구현과 기술 부채:** 예산 할당이나 인벤토리 선택과 같은 핵심 로직이 각 채널 및 사용자 접점(Spotify Ads Manager, Salesforce, Slack 등)마다 중복 구현되어 관리 비용이 증가하고 로직의 변질(Drift)이 일어납니다. * **의도 계층(Intent Layer)의 부재:** 기존 시스템은 "브라질 내 도달 범위 극대화 및 비디오 인벤토리 보호"와 같은 복합적인 목표를 이해하고 이를 실행 가능한 도구 호출 순서로 변환하는 능력이 부족했습니다. ### 멀티 에이전트 기반 의사결정 계층의 도입 * **모듈형 에이전트 구조:** 복잡하고 확률적인 광고 로직을 정적인 규칙 엔진(Rules Engine)에 가두는 대신, 상황에 따라 추론하고 실행하는 독립적인 에이전트들의 집합으로 구성했습니다. * **공유 신호 기반 최적화:** 모든 에이전트는 인벤토리, 오디언스, 성능 이력 등 동일한 기저 신호를 공유하며 광고주의 목표와 Spotify의 비즈니스 제약 조건을 동시에 고려하여 최적의 경로를 찾습니다. * **기존 서비스의 도구화:** 기존 광고 서비스들을 처음부터 다시 만드는 대신, 에이전트가 목적에 따라 호출하여 사용할 수 있는 '도구(Tools)'로 활용함으로써 오케스트레이션 성능을 높였습니다. ### 에이전트 중심 설계를 위한 기술적 패러다임 전환 * **API 설계의 변화:** 단순히 데이터를 생성하고 수정하는 CRUD 방식에서 벗어나, 에이전트가 특정 기능을 실행하기 위해 직관적으로 이해하고 사용할 수 있는 '도구 중심 API'로 재설계했습니다. * **행동 중심의 평가:** 전통적인 유닛/통합 테스트를 넘어, 에이전트가 내린 결정이 비즈니스 목표에 부합하는지 확인하는 '행동 평가(Behavioral Evaluation)' 체계를 구축했습니다. * **추론 과정의 관측성:** 시스템 성능 지표뿐만 아니라 "에이전트가 왜 그런 결정을 내렸는가"에 대한 추론 과정을 추적하여 투명성을 확보했습니다. * **자율성을 제어하는 가드레일:** 입력값 검증 수준을 넘어 반자율적인 에이전트의 결정이 비즈니스 규칙과 안전 가이드라인 내에서 유지되도록 하는 가드레일 메커니즘을 도입했습니다. 복잡한 비즈니스 로직이 여러 플랫폼에 흩어져 있다면, 이를 개별 서비스로 관리하기보다 통합된 '의사결정 엔진'으로서의 에이전트 플랫폼을 구축하는 것이 장기적인 유지보수와 기능 확장 면에서 유리합니다. Spotify는 이를 미디어 플래닝(Media Planning) 영역에 우선 적용하여 복잡한 변수 속에서도 일관된 최적화 성능을 증명하고 있습니다.