The Journey of User-Generated Content Translation

Bài tóm tắt Mercari 2025 3. Quy mô lớn Độ khó: Trung bình

Mercari · 2025 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc

Một bài trong series Global App (ngoài sheet). Phía dùng LLM qua API của nhà cung cấp, không tự host model.

Bối cảnh

  • Dịch tiêu đề và mô tả listing (tiếng Nhật) sang tiếng Anh và Trung phồn thể, từ 10/2023 (cho đối tác mua hộ, rồi Đài Loan 8/2024, rồi Global App). A/B test: dịch làm số giao dịch tăng vài điểm phần trăm dù trình duyệt có sẵn tính năng dịch.
  • C2C: mỗi listing là duy nhất nên chi phí dịch trên mỗi giao dịch tăng tuyến tính theo số listing (B2C thì một sản phẩm bán nhiều lần, chia được chi phí).

Thay đổi chính

  • Dịch khi có người xem trang chi tiết, lưu lại cho lượt sau: dịch lúc tạo listing bị loại vì nhiều ngôn ngữ và phần lớn listing không bao giờ được khách quốc tế xem; nút "dịch" bị bỏ vì ít dùng và metric giảm nhẹ. Cập nhật listing: chỉ dịch lần sửa cuối trong một cửa sổ thời gian, bỏ qua sửa nhỏ theo số ký tự (dưới 1% người dùng sửa liên tục để đẩy thứ hạng, nếu dịch hết thì chi phí tăng 25%). Theo bài, thỉnh thoảng có khách nhận sai cỡ vì sửa một ký tự không được dịch, và bồi hoàn rẻ hơn sửa triệt để. Marketing (Google Shopping, quảng cáo) cần dịch lúc tạo thì marketing trả tiền.
  • Chuỗi đổi model, mỗi lần một A/B test trên metric kinh doanh:
    • DeepL (25 USD mỗi triệu ký tự, có glossary): buy tap rate +5,3%.
    • GPT-3.5 Turbo: prompt ngắn vì prompt cũng tính token; dịch tiêu đề và mô tả riêng (gộp thì khó tách output); mất glossary nên tên nhân vật bị phiên âm (カビゴン → "Kabigon" thay vì "Snorlax"); metric đi ngang, chi phí −20%.
    • Rate limit pay-as-you-go thấp nên mua Azure PTU (capacity trả trước theo tháng, bội số 50) và tràn sang pay-as-you-go khi PTU báo rate limit; cân giữa mua dư cho đỉnh và chạm rate limit; hai endpoint khác nhau làm code phức tạp.
    • GPT-4o mini: chỉ vì giá, chi phí ÷7, metric đi ngang.
    • Gemini 1.5 Flash trên GCP: nền tảng chính của Mercari (Azure đòi IaC, xác thực riêng); rate limit pay-as-you-go cao nên bỏ được capacity đặt trước. Tổng chi phí giảm 100 lần so với DeepL sau hai năm.
  • Model bị nhà cung cấp cho nghỉ: Google cho nghỉ model khoảng một năm sau khi ra. Khi bản 001 sắp nghỉ, chuyển sang 002 không A/B test vì gấp và tưởng giống nhau: latency tăng trong vài ngày (nhiều khách cùng chuyển, capacity dồn cho Gemini 2.0), làm chậm lần dịch đầu. Chuyển tiếp sang Gemini 2.0 Flash Lite (cũng không A/B): latency giảm nhưng không về mức cũ, và output bắt đầu bằng "Here is the translation:", sửa bằng prompt dài hơn bắt bọc kết quả trong thẻ (token rẻ đi nên prompt dài được). Model này hẹn nghỉ 25/2/2026.
  • Phần không phải AI: nút báo lỗi dịch, giữ nếu quá nửa số báo cáo lấy mẫu là đúng (kết quả: người dùng không lạm dụng); danh sách lỗi đã biết thành bộ eval offline để thử model mới nhanh. Glossary hàng nghìn mục không nhét hết vào prompt: dùng tokenizer tiếng Nhật của hệ search để khớp (サイ là nhân vật, サイズ là "cỡ"); tiếng Anh thì thay trước trong input, tiếng Trung phồn thể thì đưa cặp key/value vào prompt vì chữ Hán Nhật và Trung quá giống nhau.

Vì sao

  • Theo bài, model mới hơn không làm metric kinh doanh tốt hơn, trong khi model cao cấp đắt hơn trên 10 lần; nên chọn theo giá và kiểm bằng A/B.

Bài học cho SWE

  • Với LLM qua API, model là phụ thuộc có hạn dùng: lịch nghỉ của nhà cung cấp ép phải migrate định kỳ; coi mỗi lần đổi model (kể cả bản vá "giống hệt") là một thay đổi cần cổng.
  • Chi phí theo hình dạng sản phẩm: dịch lười theo lượt xem, chặn cập nhật nhỏ, để bên hưởng lợi trả phần dịch trước.
  • Capacity đặt trước + tràn sang theo nhu cầu là bài toán sizing giống reserved instance.

Liên quan