8,400건의 실제 통화에서 AI 접수 정확도를 측정했습니다.
3개월 동안 우리는 AI가 처리한 모든 통화를 언어, 억양, 통화 유형별로 추적하고 인간 검토자와 비교하여 성적표를 평가했습니다. 정확도 수치는 우리가 예상했던 것보다 나았습니다. 실패 모드가 더 흥미로웠습니다.
모델을 확장하지 않고 32개 언어에서 지연 시간 패리티를 달성하려면 우리가 예상하지 못했던 모델 라우팅 계층이 필요했습니다. 대기시간 상황실의 메모입니다.
저희 음성제품에는 내부적으로 조정이 안되는 두가지 불만사항이 있었습니다. 영어를 사용하는 기업 고객의 경우 AI가 빠르게 느껴졌습니다. 중국어를 사용하는 고객과 점점 더 베트남어, 타갈로그어, 힌디어를 사용하는 고객으로부터 AI가 느리게 느껴졌습니다. 발신자 침묵부터 AI 첫 음절까지 엔드 투 엔드로 측정한 간격은 영어에서는 260ms, 중국어에서는 540ms였습니다. 두 숫자 모두 게시된 대기 시간 예산 내에 있었습니다.
그들 중 단 한 명만이 전화 통화에서 수용 가능하다고 느꼈습니다.
지연 시간 격차를 발견한 모든 엔지니어링 팀의 본능은 모델을 개선하는 것입니다. 더 빠른 추론. 더 작은 모델. 더 나은 양자화. 우리는 그 모든 것을 했습니다. 전반적으로 60ms를 샀지만 아무 것도 닫히지 않았습니다. 상대적인 격차는 여전히 있었고 영어는 두 배 빠른 속도로 유지되었습니다.
실제 수정 사항은 다른 관찰에서 나왔습니다. 즉, 대기 시간이 실제로 라우팅 문제인 경우 모델 문제로 처리하고 있었습니다.
540ms 표준 중국어 응답을 세그먼트로 나누는 것이 문제를 명확히 하는 첫 번째 작업이었습니다. 회계는 대략 다음과 같았습니다.
영어 경로에서는 80/60/90/80/40에 동일한 세그먼트가 들어왔습니다. 극적으로 갈라진 두 세그먼트는 음성-텍스트 생성과 대형 모델 생성이었습니다. STT는 중국어에서 더 느렸습니다. 음향 모델이 음조 명확성에 필요한 더 긴 컨텍스트 창으로 훈련되어 첫 번째 토큰을 80ms만큼 밀어냈기 때문입니다.
토크나이저가 영어보다 표준 중국어에서 동일한 의미를 지닌 문자당 더 많은 토큰을 생성했기 때문에 모델 생성 속도가 느려졌습니다.
모델 결함도 아니었습니다. 두 가지 모두 독립적인 팀이 자체 측정항목(정확성을 위한 STT, 생성 품질을 위한 LLM)을 최적화하기 위해 조용히 축적한 절충안이었습니다. 대기 시간 비용은 실제적이었지만 누구의 P&L도 아니었습니다.
단일 LLM을 통해 모든 언어 라우팅을 중단했습니다. 대신, 우리는 8ms 이내에 들어오는 발언의 언어, 대화 의도 클래스, 요청이 200만 통화 세그먼트를 클러스터링하여 식별한 약 40개의 고주파 패턴 중 하나인지 여부 등 세 가지를 감지하는 얇은 분류 레이어를 생성 앞에 구축했습니다.
분류기가 영어가 아닌 언어에서 빈도가 높은 패턴을 식별하면 해당 패턴을 직접 처리하는 더 작은 언어 전문 모델로 생성을 라우팅합니다. 더 작은 모델은 동일한 패턴을 수백만 번 완성하여 증류되었으므로 특정 경로의 품질은 큰 모델의 잡음 범위 내에 있지만 첫 번째 토큰 대기 시간은 대략 1/3입니다.
분류자가 꼬리 의도(40개 패턴에 속하지 않는 모든 것)를 발견하면 이전과 마찬가지로 요청이 큰 모델로 전달됩니다. 지연 시간 감소의 대부분은 고주파 패턴이 다음과 같다는 사실에서 비롯됩니다. 또한 통화량의 약 78%를 차지하는 패턴입니다. 테일 케이스는 원래 대기 시간을 지불하지만 드물게 발생합니다.
씬 분류기는 누구도 예산을 책정하지 않은 프로젝트의 일부였습니다. 실패 모드가 미묘하기 때문에 라우팅 시스템 자체를 구축하는 것보다 구축하는 데 더 오랜 시간이 걸렸습니다. 요청의 1%를 처리하지 않는 작은 모델로 잘못 라우팅하는 분류자는 단지 저하된 응답이 아니라 환각을 생성합니다.
세 가지가 분류기를 작동하게 만들었습니다. 첫째, 합성 데이터가 아닌 실제 프로덕션 트래픽을 대상으로 교육을 받았습니다. 둘째, 라우터가 임계값을 설정할 수 있는 신뢰도 점수를 반환했습니다. 신뢰도가 0.91 미만이면 자동으로 큰 모델에 전달됩니다.
셋째, 트래픽이 실제로 작은 모델로 라우팅되기 전에 큰 모델이 실제 정보를 제공하면서 기존 파이프라인에 대해 6주 동안 섀도우 배포했습니다.
섀도우 배포에서는 오프라인 테스트 세트가 놓친 네 가지 종류의 실수를 발견했습니다. 두 가지는 훈련 데이터에서 수정하기 쉬웠습니다. 두 가지 필수 의도적 라우팅 규칙 - 신원 확인, 지불 또는 약속 취소와 관련된 모든 것은 분류기 신뢰도에 관계없이 항상 큰 모델로 이동합니다. 왜냐하면 해당 경로에서 환각에 대한 비용이 대기 시간 승리보다 높기 때문입니다.
LLM 및 STT 변경 사항이 검토되는 동안 병행 팀이 음성 출력 작업을 진행했습니다. 50ms TTS 첫 번째 영어 오디오는 사실상 타의 추종을 불허했습니다. 영어가 아닌 대부분의 언어에서 70ms~90ms의 차이는 더 작은 음성 모델, 덜 공격적인 캐싱, 로드 시 영어를 우선시하는 단일 공유 GPU 풀에 의해 발생했습니다.
우리는 TTS 인프라를 언어 고정 풀로 분할했습니다. Mandarin TTS는 이제 대부분의 Mandarin 트래픽이 발생하는 지역에 가까운 하드웨어에서 자체 확장 규칙을 사용하여 자체 풀에서 실행됩니다. 컷오버 후 2주 이내에 대기 시간이 70~90ms에서 45ms로 감소했습니다.
이 중 어느 것도 영리하지 않았습니다. 그것은 단일 언어에 대한 미미한 개선만으로는 이를 정당화할 수 없었기 때문에 누구도 귀찮게 하지 않았던 인프라 작업이었습니다.
현재 우리가 내부적으로 기록하고 있는 교훈은 "단일 사용자 대상 측정 항목이 이를 정당화하지 않았기 때문에 이에 투자하지 않았다"는 것이 바로 4년 동안 두 언어 사이의 280ms 간격을 합산하는 일종의 결정이라는 것입니다.
우리가 내부적으로 수행한 작지만 중요한 변경 사항 중 하나는 팀의 대기 시간 대시보드 보고 방식이었습니다. 우리는 단일 SLO를 기준으로 모든 언어의 평균을 계산한 엔드투엔드 대기 시간의 p50 및 p95를 추적했습니다. 대시보드는 대부분 녹색으로 보였습니다.
새 대시보드는 p50 및 p95를 보고합니다. 언어별 반대하다 둥가 SLO — 지원되는 가장 느린 언어와 가장 빠른 언어 간의 격차에는 자체 예산이 있으며 별도로 시행됩니다. 패리티 예산을 60ms로 설정했습니다. 격차가 예산을 초과하면 대기 중이 호출됩니다.
패리티 대시보드는 평균 기반 대시보드에서는 할 수 없는 작업을 수행합니다. 즉, 가장 빠른 언어의 회귀와 동일한 긴급 상황에서 가장 느린 언어의 회귀를 표시합니다. 32개 언어의 평균을 계산하면 베트남어의 200ms 회귀는 평균을 6ms만큼 이동합니다. 패리티를 측정하면 대시보드가 200ms씩 이동합니다.
라우팅 작업, TTS 풀 및 패리티 대시보드 후 최악의 언어(광둥어, 주로 지원 음향 모델 코퍼스가 더 작기 때문에)는 320ms에 있습니다. 영어는 220ms입니다. 나머지 100ms 간격은 실제이며 우리는 그것이 어디에 있는지 대략 알고 있습니다. 광동어 STT 음향 모델은 오래되었고 아직 새로운 아키텍처에 적용되지 않았으며 3분기에 다시 훈련할 것입니다.
하지만 "가장 느린 언어는 가장 빠른 언어보다 100ms 늦다"는 것과 "가장 느린 언어는 가장 빠른 언어보다 280ms 늦다"는 대화는 다릅니다. 전자는 분기별 수정이 계획된 알려진 회귀입니다. 후자는 우리가 몰랐던 고객 경험 긴급 상황이었습니다.
현재 알고 있는 정보를 바탕으로 대기 시간 스택을 처음부터 다시 구축한다면 세 가지를 우선 순위에 따라 살펴보겠습니다.
이 중 어느 것도 새로운 연구는 아닙니다. 그 중 어느 것도 종이가 필요하지 않았습니다. 지연 시간 패리티를 제품 약속으로 처리한 다음 약속을 뒷받침하기 위해 매력적이지 않은 인프라에 자금을 지원해야 했습니다. 우리는 지금 필요한 패리티를 가지고 있습니다. 우리는 4년 동안 그것을 갖지 못했습니다.
AI 접수원, 도매 경로, 가상 번호 — 투명한 가격과 연중무휴 NOC로 단일 플랫폼에 구축되었습니다.