- 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 คำ)
- ตัวอย่าง:
- ปัญหานี้อาจสะท้อนว่าเอกสารจริงไม่ค่อยมีชื่อเรื่องยาว
- ผลลัพธ์คือทำให้ต้องทบทวนเกณฑ์ความยาวของชื่อเรื่องใหม่
- ขอให้สร้างชื่อเรื่องยาว 12-15 คำ แต่กลับได้ชื่อเรื่องที่สั้นกว่า
- ข้อผิดพลาดจากการทำซ้ำและ hallucination
- ขอให้สร้างรูปแบบการสะกดผิดหลายแบบของคำ แต่ได้ผลลัพธ์ซ้ำหรือไม่สมจริง
- ตัวอย่าง: เมื่อขอคำสะกดผิดหลายแบบของ
Calendarก็ได้ผลลัพธ์ซ้ำๆ
- ตัวอย่าง: เมื่อขอคำสะกดผิดหลายแบบของ
- ขอให้สร้างรูปแบบการสะกดผิดหลายแบบของคำ แต่ได้ผลลัพธ์ซ้ำหรือไม่สมจริง
- ปัญหาในการสร้างชื่อเรื่องที่ไม่เกี่ยวข้อง
- ในการสร้างชื่อดีไซน์ที่ไม่เกี่ยวข้อง (nonrelevant) พบกรณีที่โมเดลไม่ทำตามคำสั่งอย่างถูกต้อง
- บางชื่อเรื่องที่ได้ไม่มีคีย์เวิร์ดที่กำหนด หรือส่งผลลัพธ์ที่ไม่แม่นยำ เช่น ใส่เพียง
title string
- ปฏิเสธการสร้างชื่อเรื่องยาว
การรันการประเมิน: ทดสอบและวิเคราะห์ในสภาพแวดล้อมโลคัล
- การใช้ชุดข้อมูลประเมิน
- นำชุดข้อมูลสังเคราะห์ที่สร้างขึ้นไปใช้กับ search pipeline เพื่อคำนวณเมตริกการประเมิน
- หลังจากลองหลายวิธีในการรัน จึงเลือกแนวทางรันแบบโลคัลด้วย Testcontainers
- โลคัล pipeline บน Testcontainers
- ใช้การรองรับ Testcontainer ที่มีอยู่เดิม
- ในสถาปัตยกรรม RPC แบบ service-oriented ของ Canva มีการรองรับ Testcontainer ไว้อยู่แล้ว
- จึงสามารถสร้าง pipeline โดยผสานคอมโพเนนต์ภายนอกอย่าง Elasticsearch เข้ากับ Testcontainer ภายในได้
- จำลองค่า production ได้ครบถ้วน
- รัน search pipeline และโมเดล ML ที่รองรับทั้งหมดบนโลคัล เพื่อให้ได้สภาพแวดล้อมเดียวกับ production
- วิศวกรจึงสามารถทดลองโมเดลหลายเวอร์ชันได้
- ใช้การรองรับ Testcontainer ที่มีอยู่เดิม
- กระบวนการจัดการ test case
- สร้าง state ที่จำเป็นสำหรับแต่ละ test case
- แทนที่จะสร้าง Canva design ขึ้นมาจริง จะดึงและใส่เฉพาะข้อมูลที่จำเป็นต่อ search index
- รัน search pipeline บนโลคัล
- รันชุดข้อมูลพร้อม test query เพื่อสร้างผลลัพธ์การค้นหา
- ส่งผลลัพธ์ไปยังโมดูลประเมิน
- คำนวณเมตริก Recall และ Precision
- แผนภาพการไหลของข้อมูล
- มีแผนภาพที่แสดงภาพรวมของการไหลของข้อมูลทั้งหมดผ่านเครื่องมือประเมิน
การทำผลลัพธ์ให้มองเห็นได้
- พัฒนาเครื่องมือ visualization
- ใช้ เครื่องมือแบบกำหนดเองบน Streamlit เพื่อช่วยให้แสดงผลและเปรียบเทียบผลการประเมินได้อย่างมีประสิทธิภาพ
- วิศวกรสามารถเปรียบเทียบเมตริก Recall และ Precision ระหว่าง configurations ต่างๆ ได้ในมุมมองเดียว
- ความสามารถหลัก
- เปรียบเทียบตาม configuration
- รวมผลลัพธ์และเปรียบเทียบประสิทธิภาพของการตั้งค่าต่างๆ แบบเคียงข้างกัน
- แยกดูประสิทธิภาพตามประเภทและความยากของคิวรี
- วิเคราะห์แยกตาม query type หรือระดับความยากแบบเฉพาะเจาะจงได้
- ดีบักคิวรีรายตัว
- ดูผลลัพธ์ของแต่ละคิวรีเพื่อดีบัก use case เฉพาะได้อย่างละเอียด
- เปรียบเทียบตาม configuration
- ช่วยให้ตัดสินใจได้เร็วขึ้น
- เมื่อการประเมินเสร็จ เครื่องมือจะเปิดใช้งานได้ทันที ช่วยให้วิศวกรตัดสินใจได้รวดเร็วโดยอิงจากผลด้านประสิทธิภาพ
- วิศวกรสามารถทำการทดลองและปรับปรุงซ้ำได้อย่างอิสระโดยไม่ต้องพึ่งงานของสมาชิกทีมคนอื่น
ผลกระทบและแผนต่อไป
- เข้าใกล้สถานะที่เหมาะสมแค่ไหนแล้ว?
- ชุดข้อมูลและเครื่องมือประเมินให้ ความสามารถในการทำซ้ำได้อย่างสมบูรณ์ และสร้างผลลัพธ์ได้ภายในไม่กี่นาที
- วิศวกรสามารถประเมินผลลัพธ์ที่ สอดคล้องกับพฤติกรรมใน production ได้จากโลคัลอย่างอิสระและเป็นกลาง
- คุ้มครองความเป็นส่วนตัวได้อย่างสมบูรณ์โดยไม่ต้องดูดีไซน์หรือคิวรีของลูกค้าเลย
- สรุปผลงาน
- วนรอบได้รวดเร็ว
- ประมวลผล test case ได้มากกว่า 1,000 กรณีในเวลาไม่ถึง 10 นาที
- ในช่วงเวลาที่การทดลองออนไลน์หนึ่งรอบใช้ 2-3 วัน สามารถประเมินออฟไลน์ได้มากกว่า 300 ครั้ง
- ความสัมพันธ์ระหว่างผลออฟไลน์กับออนไลน์
- ผลการประเมินออฟไลน์ถูกออกแบบมาเพื่อคัดไอเดียที่ไม่เหมาะออก และส่งเฉพาะการเปลี่ยนแปลงที่มีโอกาสสำเร็จสูงไปสู่การทดลองออนไลน์
- มีการทำหลายการทดลองเพื่อตรวจสอบการสอดคล้องกันระหว่างผลออฟไลน์กับออนไลน์ระหว่างการพัฒนา
- พบความสอดคล้องสูงทั้งในกรณีที่การเปลี่ยนแปลงทำให้ประสิทธิภาพดีขึ้นและแย่ลง
- ความสามารถในการดีบักบนโลคัล
- รองรับการดีบักที่สามารถสังเกตการไหลของ test case ผ่านแต่ละคอมโพเนนต์ของ search pipeline ได้
- มีประสิทธิภาพกว่าวิธีดีบักเดิมที่ต้องพึ่ง production logs อย่างมาก
- แผนต่อไป
- ขยายชุดข้อมูล
- เพิ่มฟีเจอร์ที่สมจริงยิ่งขึ้น เช่น collaboration graph
- ปรับปรุงเครื่องมือ
- เสริม tooling เพื่อให้วิศวกรสร้างข้อมูลสังเคราะห์แบบกำหนดเองตามความต้องการได้
- ใช้ generative AI ให้เต็มศักยภาพ
- เดินหน้าพัฒนาเครื่องมือค้นหาของ Canva ให้เป็นประสบการณ์ที่ดีที่สุดสำหรับชุมชน โดยใช้ประโยชน์จากความเป็นไปได้ที่ข้อมูลสังเคราะห์เปิดไว้
- ขยายชุดข้อมูล
ยังไม่มีความคิดเห็น