• Canva มีผู้ใช้ต่อเดือน 200 ล้านคน มีดีไซน์มากกว่า 30,000 ล้านชิ้น และมีดีไซน์ใหม่ถูกสร้างขึ้นราว 300 ชิ้นทุกวินาที
    • การที่ผู้ใช้ค้นหาดีไซน์และหาไฟล์ที่มีคนแชร์ให้ กลายเป็นปัญหาสำคัญมากขึ้นเรื่อยๆ
  • ในการค้นหาแบบสาธารณะ (เว็บ/การค้นหาผลิตภัณฑ์) จะสร้างชุดข้อมูลโดยอิงจากคิวรีของผู้ใช้และชุดรายการค้นหาที่คงที่
    • ผู้ประเมินผู้เชี่ยวชาญจะประเมินความเกี่ยวข้องระหว่างแต่ละคิวรีกับแต่ละรายการเพื่อติดป้ายกำกับ
    • ประเมินประสิทธิภาพของเสิร์ชเอนจินด้วยเมตริก Recall และ Precision
  • สำหรับการค้นหาส่วนบุคคล ไม่สามารถดูดีไซน์ส่วนตัวได้เพื่อคุ้มครองความเป็นส่วนตัว และไม่สามารถนำข้อมูลของผู้ใช้มาใช้เป็นชุดข้อมูลประเมินได้
    • ทางออกคือใช้ generative AI (เช่น GPT-4o) เพื่อสร้างคอนเทนต์และคิวรีสังเคราะห์ที่สมจริงแต่เป็นข้อมูลสังเคราะห์ทั้งหมด
    • ทำให้สามารถประเมินการปรับปรุง search pipeline ได้โดยไม่ละเมิดข้อมูลส่วนบุคคลเลย

สถานะเดิม: วิธีทดสอบที่มีข้อจำกัด

  • กระบวนการทดสอบเดิม
    • วิศวกรใช้วิธีทดสอบแบบออฟไลน์ที่มีขอบเขตจำกัด
    • รันคิวรีปัญหาที่รู้จักอยู่แล้วในบัญชี Canva เพื่อเปรียบเทียบประสิทธิภาพก่อนและหลังการแก้โค้ด
      • ตัวอย่าง: ในงานปรับปรุงการแก้คำสะกด จะทดสอบคิวรีที่สะกดผิดอย่าง desgin
        • ก่อนเปลี่ยน: ไม่มีผลลัพธ์
        • หลังเปลี่ยน: ส่งคืนเอกสารที่เกี่ยวข้องกับ design
    • การเปลี่ยนแปลงที่ผ่านการทดสอบออฟไลน์จะเข้าสู่ขั้นตอนทดสอบออนไลน์
      • รัน A/B test โดยใช้เฟรมเวิร์กการทดลองของ Canva
      • เปรียบเทียบอัตราความสำเร็จในการค้นหาระหว่างผู้ใช้ที่ได้รับการเปลี่ยนแปลงกับผู้ใช้ที่ใช้การค้นหาแบบมาตรฐาน
  • ข้อจำกัด
    • การทดสอบออฟไลน์ขาดความน่าเชื่อถือทางสถิติ
      • คิวรีจำนวนจำกัดยากที่จะเป็นตัวแทนพฤติกรรมการค้นหาที่หลากหลาย
    • อาจส่งผลกระทบต่อผู้ใช้
      • ประสิทธิภาพที่ถดถอยซึ่งตรวจไม่พบในออฟไลน์อาจหลุดไปสู่การทดลองออนไลน์ได้
    • การทดลองออนไลน์ใช้เวลามาก
      • ต้องใช้เวลาอย่างน้อยหลายวันถึงหลายสัปดาห์เพื่อให้ได้ระดับนัยสำคัญทางสถิติ
      • จำกัดจำนวนการทดลองที่รันพร้อมกันได้และจำกัดความเร็วในการทดสอบไอเดีย

สถานะที่เหมาะสม: สร้างชุดข้อมูลและ evaluation pipeline ใหม่

  • เป้าหมาย : ต้องมีชุดข้อมูลและ evaluation pipeline แบบเฉพาะทางที่ช่วยให้วิศวกรประเมินการเปลี่ยนแปลงได้อย่างเป็นกลางก่อนเข้าสู่การทดสอบออนไลน์
  • ข้อกำหนดสำคัญ:
    • ทำซ้ำได้: ให้ผลลัพธ์เดิมได้ทุกเมื่อ
    • วนรอบได้รวดเร็ว: วิศวกรทดสอบผลลัพธ์ได้อย่างรวดเร็วหลังแก้โค้ด ไม่ต้องรอ deploy ขึ้น production ก็ประเมินได้ทันที
    • ใกล้เคียง production: ให้ผลลัพธ์ที่สอดคล้องกับพฤติกรรมจริงใน production
    • ทำงานได้โดยไม่ขัดกัน: สมาชิกทีมสามารถทดลองการเปลี่ยนแปลงโค้ดได้อย่างอิสระโดยไม่รบกวนกัน

สร้างชุดข้อมูลสมจริง: ใช้ generative AI

  • ชุดข้อมูลประเมินที่สอดคล้องกับความเป็นส่วนตัว
    • ใช้ GPT-4o สร้างข้อมูลสังเคราะห์ที่สามารถใช้แทนข้อมูลผู้ใช้จริงได้
    • ไม่ได้คัดลอกดีไซน์ของผู้ใช้ แต่สะท้อนการกระจายเชิงสถิติ เช่น ความยาวของข้อความ เพื่อให้ได้ข้อมูลที่สมจริง
  • สร้าง test case สำหรับประเมิน Recall
    • ใช้ GPT-4o สร้างคิวรีและคอนเทนต์ที่สอดคล้องกัน โดยอิงจากหัวข้อและประเภทของดีไซน์ เช่น เอกสารหรือพรีเซนเทชัน
    • ปรับระดับความยากของคิวรี:
      • มีคำสะกดผิด
      • แทนที่ด้วยคำพ้องความหมาย
      • เรียบเรียงคิวรีใหม่
  • สร้าง test case สำหรับประเมิน Precision
    • สร้างชุดข้อมูลที่มีทั้งดีไซน์ที่เกี่ยวข้องและไม่เกี่ยวข้อง
    • วิธีสร้างดีไซน์ที่ไม่เกี่ยวข้อง:
      • มีเพียงบางคีย์เวิร์ดเท่านั้น
      • ปรับเป็นเทมเพลตดีไซน์หรือร่างงาน
      • กำหนดให้เป็นดีไซน์เก่า

ปัญหาที่เกิดขึ้นระหว่างใช้ generative AI

  • ข้อดีและข้อจำกัดของ LLMs
    • ข้อดี: สร้างข้อมูลข้อความจำนวนมากได้อย่างมีประสิทธิภาพ
      • ชุดข้อมูลประเมินแบบคงที่ที่สร้างขึ้นสามารถนำกลับมาใช้ซ้ำได้ และให้ผลการประเมินที่สม่ำเสมอและเป็น deterministic ได้อย่างรวดเร็ว
    • ตัดข้อจำกัดออกไป: หลังจากสร้างชุดข้อมูลแล้ว ก็ไม่ต้องเผชิญกับปัญหา latency และ randomness ของ LLM อีก
  • ปัญหา
    • ปฏิเสธการสร้างชื่อเรื่องยาว
      • ขอให้สร้างชื่อเรื่องยาว 12-15 คำ แต่กลับได้ชื่อเรื่องที่สั้นกว่า
        • ตัวอย่าง:
          • Exploring the Latest Advancements in Screen Technology and Applications (9 คำ)
          • Best Practices for Teachers: Presentation Tips for Meet the Teacher (10 คำ)
      • ปัญหานี้อาจสะท้อนว่าเอกสารจริงไม่ค่อยมีชื่อเรื่องยาว
      • ผลลัพธ์คือทำให้ต้องทบทวนเกณฑ์ความยาวของชื่อเรื่องใหม่
    • ข้อผิดพลาดจากการทำซ้ำและ hallucination
      • ขอให้สร้างรูปแบบการสะกดผิดหลายแบบของคำ แต่ได้ผลลัพธ์ซ้ำหรือไม่สมจริง
        • ตัวอย่าง: เมื่อขอคำสะกดผิดหลายแบบของ Calendar ก็ได้ผลลัพธ์ซ้ำๆ
    • ปัญหาในการสร้างชื่อเรื่องที่ไม่เกี่ยวข้อง
      • ในการสร้างชื่อดีไซน์ที่ไม่เกี่ยวข้อง (nonrelevant) พบกรณีที่โมเดลไม่ทำตามคำสั่งอย่างถูกต้อง
      • บางชื่อเรื่องที่ได้ไม่มีคีย์เวิร์ดที่กำหนด หรือส่งผลลัพธ์ที่ไม่แม่นยำ เช่น ใส่เพียง title string

การรันการประเมิน: ทดสอบและวิเคราะห์ในสภาพแวดล้อมโลคัล

  • การใช้ชุดข้อมูลประเมิน
    • นำชุดข้อมูลสังเคราะห์ที่สร้างขึ้นไปใช้กับ search pipeline เพื่อคำนวณเมตริกการประเมิน
    • หลังจากลองหลายวิธีในการรัน จึงเลือกแนวทางรันแบบโลคัลด้วย Testcontainers
  • โลคัล pipeline บน Testcontainers
    • ใช้การรองรับ Testcontainer ที่มีอยู่เดิม
      • ในสถาปัตยกรรม RPC แบบ service-oriented ของ Canva มีการรองรับ Testcontainer ไว้อยู่แล้ว
      • จึงสามารถสร้าง pipeline โดยผสานคอมโพเนนต์ภายนอกอย่าง Elasticsearch เข้ากับ Testcontainer ภายในได้
    • จำลองค่า production ได้ครบถ้วน
      • รัน search pipeline และโมเดล ML ที่รองรับทั้งหมดบนโลคัล เพื่อให้ได้สภาพแวดล้อมเดียวกับ production
      • วิศวกรจึงสามารถทดลองโมเดลหลายเวอร์ชันได้
  • กระบวนการจัดการ test case
    1. สร้าง state ที่จำเป็นสำหรับแต่ละ test case
    • แทนที่จะสร้าง Canva design ขึ้นมาจริง จะดึงและใส่เฉพาะข้อมูลที่จำเป็นต่อ search index
    1. รัน search pipeline บนโลคัล
    • รันชุดข้อมูลพร้อม test query เพื่อสร้างผลลัพธ์การค้นหา
    1. ส่งผลลัพธ์ไปยังโมดูลประเมิน
    • คำนวณเมตริก Recall และ Precision
  • แผนภาพการไหลของข้อมูล
    • มีแผนภาพที่แสดงภาพรวมของการไหลของข้อมูลทั้งหมดผ่านเครื่องมือประเมิน

การทำผลลัพธ์ให้มองเห็นได้

  • พัฒนาเครื่องมือ visualization
    • ใช้ เครื่องมือแบบกำหนดเองบน Streamlit เพื่อช่วยให้แสดงผลและเปรียบเทียบผลการประเมินได้อย่างมีประสิทธิภาพ
    • วิศวกรสามารถเปรียบเทียบเมตริก Recall และ Precision ระหว่าง configurations ต่างๆ ได้ในมุมมองเดียว
  • ความสามารถหลัก
    1. เปรียบเทียบตาม configuration
      • รวมผลลัพธ์และเปรียบเทียบประสิทธิภาพของการตั้งค่าต่างๆ แบบเคียงข้างกัน
    2. แยกดูประสิทธิภาพตามประเภทและความยากของคิวรี
      • วิเคราะห์แยกตาม query type หรือระดับความยากแบบเฉพาะเจาะจงได้
    3. ดีบักคิวรีรายตัว
      • ดูผลลัพธ์ของแต่ละคิวรีเพื่อดีบัก use case เฉพาะได้อย่างละเอียด
  • ช่วยให้ตัดสินใจได้เร็วขึ้น
    • เมื่อการประเมินเสร็จ เครื่องมือจะเปิดใช้งานได้ทันที ช่วยให้วิศวกรตัดสินใจได้รวดเร็วโดยอิงจากผลด้านประสิทธิภาพ
    • วิศวกรสามารถทำการทดลองและปรับปรุงซ้ำได้อย่างอิสระโดยไม่ต้องพึ่งงานของสมาชิกทีมคนอื่น

ผลกระทบและแผนต่อไป

  • เข้าใกล้สถานะที่เหมาะสมแค่ไหนแล้ว?
    • ชุดข้อมูลและเครื่องมือประเมินให้ ความสามารถในการทำซ้ำได้อย่างสมบูรณ์ และสร้างผลลัพธ์ได้ภายในไม่กี่นาที
    • วิศวกรสามารถประเมินผลลัพธ์ที่ สอดคล้องกับพฤติกรรมใน production ได้จากโลคัลอย่างอิสระและเป็นกลาง
    • คุ้มครองความเป็นส่วนตัวได้อย่างสมบูรณ์โดยไม่ต้องดูดีไซน์หรือคิวรีของลูกค้าเลย
  • สรุปผลงาน
    1. วนรอบได้รวดเร็ว
    • ประมวลผล test case ได้มากกว่า 1,000 กรณีในเวลาไม่ถึง 10 นาที
    • ในช่วงเวลาที่การทดลองออนไลน์หนึ่งรอบใช้ 2-3 วัน สามารถประเมินออฟไลน์ได้มากกว่า 300 ครั้ง
    1. ความสัมพันธ์ระหว่างผลออฟไลน์กับออนไลน์
    • ผลการประเมินออฟไลน์ถูกออกแบบมาเพื่อคัดไอเดียที่ไม่เหมาะออก และส่งเฉพาะการเปลี่ยนแปลงที่มีโอกาสสำเร็จสูงไปสู่การทดลองออนไลน์
    • มีการทำหลายการทดลองเพื่อตรวจสอบการสอดคล้องกันระหว่างผลออฟไลน์กับออนไลน์ระหว่างการพัฒนา
    • พบความสอดคล้องสูงทั้งในกรณีที่การเปลี่ยนแปลงทำให้ประสิทธิภาพดีขึ้นและแย่ลง
    1. ความสามารถในการดีบักบนโลคัล
    • รองรับการดีบักที่สามารถสังเกตการไหลของ test case ผ่านแต่ละคอมโพเนนต์ของ search pipeline ได้
    • มีประสิทธิภาพกว่าวิธีดีบักเดิมที่ต้องพึ่ง production logs อย่างมาก
  • แผนต่อไป
    • ขยายชุดข้อมูล
      • เพิ่มฟีเจอร์ที่สมจริงยิ่งขึ้น เช่น collaboration graph
    • ปรับปรุงเครื่องมือ
      • เสริม tooling เพื่อให้วิศวกรสร้างข้อมูลสังเคราะห์แบบกำหนดเองตามความต้องการได้
    • ใช้ generative AI ให้เต็มศักยภาพ
      • เดินหน้าพัฒนาเครื่องมือค้นหาของ Canva ให้เป็นประสบการณ์ที่ดีที่สุดสำหรับชุมชน โดยใช้ประโยชน์จากความเป็นไปได้ที่ข้อมูลสังเคราะห์เปิดไว้

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น