Giới thiệu
Sản phẩm giọng nói của chúng tôi có hai khiếu nại mà chúng tôi không thể giải quyết trong nội bộ. Đối với các khách hàng doanh nghiệp nói tiếng Anh, AI cảm thấy rất thú vị. Từ những khách hàng nói tiếng Quan Thoại — và ngày càng nhiều từ những khách hàng nói tiếng Việt, tiếng Tagalog và tiếng Hindi — AI cảm thấy chậm chạp. Khoảng cách được đo từ đầu đến cuối từ sự im lặng của người gọi đến âm tiết đầu tiên của AI, là 260 mili giây trên tiếng Anh và 540 mili giây trên tiếng Quan Thoại. Cả hai con số đều nằm trong ngân sách độ trễ được công bố.
Chỉ một người trong số họ cảm thấy chấp nhận được qua một cuộc gọi điện thoại.
Bản năng của bất kỳ nhóm kỹ thuật nào nhận thấy khoảng cách về độ trễ là phải nghiền nát mô hình. Suy luận nhanh hơn. Mô hình nhỏ hơn. Lượng tử hóa tốt hơn. Chúng tôi đã làm tất cả điều đó. Nó mang lại cho chúng tôi 60 mili giây trên bảng, không đóng được gì - khoảng cách tương đối vẫn còn đó và tiếng Anh vẫn nhanh gấp đôi.
Cách khắc phục thực sự đến từ một quan sát khác: chúng tôi coi độ trễ là một vấn đề mô hình trong khi thực tế nó là một vấn đề định tuyến.
Một phần nghìn giây thực sự đi về đâu
Việc chia phản hồi tiếng Quan Thoại dài 540ms thành các phân đoạn là điều đầu tiên làm rõ vấn đề. Kế toán trông đại khái như thế này:
- Thu âm và kết thúc âm thanh - 80 mili giây
- Mã thông báo chuyển giọng nói thành văn bản đầu tiên - 140 mili giây
- Ý định + quy trình truy xuất - 90 mili giây
- Mã thông báo đầu tiên của mô hình lớn (thế hệ) - 180 mili giây
- Âm thanh đầu tiên của văn bản thành giọng nói - 50 mili giây
Trên con đường tiếng Anh, các phân khúc tương tự xuất hiện ở mức 80/60/90/80/40. Hai phân khúc khác biệt đáng kể là chuyển giọng nói thành văn bản và tạo mô hình lớn. STT chậm hơn trong tiếng Quan thoại vì mô hình âm thanh đã được đào tạo với cửa sổ ngữ cảnh dài hơn — cần thiết để phân biệt âm sắc — đã đẩy mã thông báo đầu tiên lên 80 mili giây.
Quá trình tạo mô hình diễn ra chậm hơn do mã thông báo tạo ra nhiều mã thông báo hơn cho mỗi ký tự có nghĩa tương đương trong tiếng Quan Thoại so với tiếng Anh.
Không phải là một khiếm khuyết mô hình. Cả hai đều là sự đánh đổi được các nhóm độc lập âm thầm tích lũy để tối ưu hóa các chỉ số của riêng họ - STT cho độ chính xác, LLM cho chất lượng phát điện. Chi phí chờ đợi là có thật, nhưng đó không phải là P&L của ai cả.
Bản sửa lỗi định tuyến đã mua 200ms
Chúng tôi đã ngừng định tuyến tất cả các ngôn ngữ thông qua một LLM duy nhất. Thay vào đó, chúng tôi đã xây dựng một lớp phân loại mỏng trước thế hệ để phát hiện ba yếu tố trong thời gian dưới 8 mili giây: ngôn ngữ của lời nói đến, lớp mục đích hội thoại và liệu yêu cầu có phải là một trong khoảng 40 mẫu tần số cao mà chúng tôi đã xác định hay không bằng cách phân cụm 2 triệu phân đoạn cuộc gọi.
Khi trình phân loại xác định mẫu tần số cao bằng ngôn ngữ không phải tiếng Anh, chúng tôi sẽ định tuyến thế hệ đến một mô hình chuyên biệt về ngôn ngữ nhỏ hơn để xử lý trực tiếp mẫu đó. Mô hình nhỏ hơn đã được chắt lọc trên hàng triệu lần hoàn thành của cùng một mẫu, do đó, chất lượng của nó trên các đường dẫn cụ thể đó nằm trong mức nhiễu của mô hình lớn - nhưng độ trễ mã thông báo đầu tiên của nó là khoảng một phần ba.
Khi trình phân loại nhìn thấy ý định đuôi — bất kỳ nội dung nào không nằm trong 40 mẫu — thì yêu cầu sẽ chuyển sang mô hình lớn, giống như trước đây. Hầu hết sự giảm độ trễ xuất phát từ thực tế là các mẫu tần số cao Mà còn các mẫu chiếm ~78% khối lượng cuộc gọi. Các trường hợp đuôi trả độ trễ ban đầu nhưng rất hiếm.
Bộ phân loại không ai thấy sắp tới
Bộ phân loại mỏng là một phần của dự án chưa có ai đầu tư kinh phí. Việc xây dựng nó mất nhiều thời gian hơn việc xây dựng hệ thống định tuyến vì các dạng lỗi rất khó phát hiện. Một bộ phân loại định tuyến sai 1% yêu cầu đến một mô hình nhỏ không xử lý được chúng sẽ tạo ra ảo giác chứ không chỉ là phản hồi bị suy giảm.
Ba điều làm cho trình phân loại hoạt động. Đầu tiên, nó được đào tạo về lưu lượng sản xuất thực tế chứ không phải dữ liệu tổng hợp. Thứ hai, nó trả về điểm tin cậy mà bộ định tuyến có thể đạt ngưỡng - mọi thứ có độ tin cậy dưới 0,91 sẽ tự động chuyển sang mô hình lớn.
Thứ ba, chúng tôi đã triển khai ngầm nó trong sáu tuần so với quy trình hiện có, với mô hình lớn cung cấp thông tin thực tế cơ bản, trước khi bất kỳ lưu lượng truy cập nào thực sự được chuyển đến các mô hình nhỏ.
Quá trình triển khai bóng đã phát hiện ra 4 loại lỗi mà bộ kiểm tra ngoại tuyến đã bỏ sót. Hai là dễ dàng sửa chữa trong dữ liệu đào tạo. Hai quy tắc định tuyến có chủ ý bắt buộc - bất kỳ điều gì liên quan đến xác minh danh tính, thanh toán hoặc hủy cuộc hẹn luôn thuộc về mô hình lớn bất kể độ tin cậy của bộ phân loại, bởi vì chi phí của ảo giác trên những đường dẫn đó cao hơn độ trễ giành được.
Mặt TTS của vấn đề
Trong khi những thay đổi về LLM và STT đang được xem xét, một nhóm song song đang làm việc về đầu ra giọng nói. Âm thanh đầu tiên TTS 50ms bằng tiếng Anh thực sự không thể đánh bại được; khoảng cách 70 mili giây-90 mili giây trên hầu hết các ngôn ngữ không phải tiếng Anh được thúc đẩy bởi các mẫu giọng nói nhỏ hơn, bộ nhớ đệm ít linh hoạt hơn và một nhóm GPU chia sẻ duy nhất ưu tiên tải tiếng Anh.
Chúng tôi chia cơ sở hạ tầng TTS thành các nhóm được ghim bằng ngôn ngữ. Mandarin TTS hiện chạy trên nhóm riêng, với các quy tắc mở rộng quy mô riêng, trên phần cứng gần các khu vực nơi phần lớn lưu lượng truy cập tiếng Quan Thoại của chúng tôi bắt nguồn. Độ trễ giảm từ 70-90ms xuống 45ms trong vòng hai tuần kể từ khi chuyển đổi.
Không có điều nào trong số này là thông minh; đó là công việc về cơ sở hạ tầng mà không ai bận tâm thực hiện vì sự cải thiện cận biên trên bất kỳ ngôn ngữ riêng lẻ nào không chứng minh được điều đó.
Bài học — và chúng tôi hiện đang viết nó ra trong nội bộ — là "chúng tôi đã không đầu tư vào việc này vì không có số liệu nào hướng tới người dùng duy nhất chứng minh điều đó" chính xác là loại quyết định dẫn đến khoảng cách 280 mili giây giữa hai ngôn ngữ trong bốn năm.
Đo lường sự tương đương, không phải mức trung bình
Một thay đổi nhỏ nhưng mang tính hệ quả mà chúng tôi đã thực hiện trong nội bộ là cách báo cáo bảng thông tin về độ trễ của nhóm. Chúng tôi đã từng theo dõi p50 và p95 về độ trễ từ đầu đến cuối, tính trung bình trên tất cả các ngôn ngữ, dựa trên một SLO duy nhất. Bảng điều khiển hầu hết trông có màu xanh lục.
Bảng điều khiển mới báo cáo p50 và p95 mỗi ngôn ngữ chống lại một sự ngang bằng SLO — khoảng cách giữa ngôn ngữ được hỗ trợ chậm nhất và nhanh nhất có ngân sách riêng, được thực thi riêng. Chúng tôi đặt ngân sách chẵn lẻ ở mức 60ms. Khi khoảng cách vượt quá ngân sách, cuộc gọi sẽ được phân trang.
Bảng điều khiển chẵn lẻ thực hiện một điều mà bảng điều khiển dựa trên mức trung bình không thể: nó làm cho các hồi quy ở ngôn ngữ chậm nhất hiển thị ở mức độ khẩn cấp tương tự như các hồi quy ở ngôn ngữ nhanh nhất. Khi bạn tính trung bình trên 32 ngôn ngữ, hồi quy 200 mili giây trong tiếng Việt sẽ dịch chuyển mức trung bình thêm 6 mili giây. Khi bạn đo tính chẵn lẻ, nó sẽ di chuyển bảng điều khiển thêm 200 mili giây.
Cái gì vẫn chậm
Sau công việc định tuyến, nhóm TTS và bảng điều khiển chẵn lẻ, ngôn ngữ tệ nhất của chúng tôi (tiếng Quảng Đông, chủ yếu là do kho ngữ liệu mô hình âm thanh hỗ trợ nhỏ hơn) nằm ở tốc độ 320 mili giây. Tiếng Anh là 220ms. Khoảng cách 100ms còn lại là có thật và chúng tôi biết đại khái vị trí của nó — mẫu âm thanh STT của Quảng Đông cũ hơn và chưa có trên kiến trúc mới, đồng thời chúng tôi sẽ đào tạo lại mẫu này trong Quý 3.
Nhưng "ngôn ngữ chậm nhất chậm hơn 100 mili giây so với ngôn ngữ nhanh nhất" là một cuộc trò chuyện khác với "ngôn ngữ chậm nhất chậm hơn 280 mili giây so với ngôn ngữ nhanh nhất". Trước đây là một sự hồi quy đã biết với kế hoạch khắc phục hàng quý. Sau đó là trường hợp khẩn cấp về trải nghiệm khách hàng mà chúng tôi không biết mình đã gặp phải.
Những gì chúng ta sẽ làm khác đi vào lần tới
Ba điều, theo thứ tự ưu tiên, nếu chúng ta xây dựng lại nhóm độ trễ từ đầu với những gì chúng ta biết hiện tại.
- Xây dựng bộ định tuyến phân loại trước, sau đó là mô hình. Lớp định tuyến cuối cùng là phần có đòn bẩy cao nhất. Việc coi nó là "chúng tôi sẽ thêm nó sau nếu cần" hóa ra có nghĩa là chúng tôi đã sống với độ trễ của một mô hình lâu hơn 18 tháng so với mức cần thiết.
- Đặt SLO chẵn lẻ trước SLO ngôn ngữ. Sự cám dỗ là đặt mục tiêu cho mỗi ngôn ngữ và để cho sự bình đẳng xuất hiện. Tính chẵn lẻ không xuất hiện; nó chuyển hướng dần dần theo hướng ngôn ngữ chính của nhóm.
- Cung cấp cơ sở hạ tầng cho mỗi ngôn ngữ như thể mỗi ngôn ngữ là một sản phẩm riêng biệt. Mandarin TTS xứng đáng có nhóm GPU riêng ngay từ ngày đầu tiên chứ không phải kể từ ngày chúng tôi đo khoảng cách về độ trễ.
Không ai trong số này là nghiên cứu mới lạ. Không ai trong số đó yêu cầu một tờ giấy. Nó yêu cầu coi độ trễ tương đương như một cam kết về sản phẩm, sau đó tài trợ cho cơ sở hạ tầng không phù hợp để hỗ trợ cam kết. Chúng tôi có sự ngang bằng mà chúng tôi cần bây giờ. Chúng tôi đã không có nó trong bốn năm.