Notion พัฒนาฟีเจอร์ AI อย่างไร (Linus Lee)
(youtube.com)-
ประสบการณ์ด้านการพัฒนา AI ของ Linus Lee
- Linus Lee ทำงานที่ Notion ในตำแหน่ง Lead AI Engineer
- ก่อนมา Notion เขาทำวิจัยด้าน NLP, แมชชีนเลิร์นนิง และ HCI มาอย่างมาก รวมถึงทำต้นแบบและเขียนบทความอย่างต่อเนื่อง
- เขาพัฒนาฟีเจอร์ Q&A, Autofill และ AI Writing ที่ Notion และยังทำวิจัยเกี่ยวกับโมเดล latent space ด้วย
-
ภาพรวมการพัฒนา Notion AI
- Linus Lee พัฒนาเว็บและเครื่องมือเพิ่มประสิทธิภาพการทำงานหลากหลายมาตั้งแต่สมัยเรียนมหาวิทยาลัย
- ตลอดปี 2022 เขาเริ่มอ่านและศึกษางานวิจัยด้าน AI ด้วยตัวเอง
- ในเดือนตุลาคม 2022 เขาได้เข้าร่วมโปรเจ็กต์ AI Writer รุ่นเบต้าของ Notion
- ตอนที่เขาเข้าทำงานที่ Notion ทีม AI มีสมาชิก 4 คน แต่ปัจจุบันเติบโตเป็นราว 20 คนแล้ว
- โปรเจ็กต์หลักที่ Linus Lee มีส่วนร่วมคือ AI Writer, Autofill และ Q&A ซึ่งเปิดตัวในเดือนกุมภาพันธ์ พฤษภาคม และพฤศจิกายน 2023 ตามลำดับ
- ต่อจากนี้ Notion AI วางแผนจะยกระดับการใช้งานให้ดีขึ้นอีกผ่านเทคโนโลยีเอเจนต์
-
แนะนำออฟฟิศและทีม AI ของ Notion
- Notion มีออฟฟิศอยู่ที่ซานฟรานซิสโกและนิวยอร์ก โดยออฟฟิศซานฟรานซิสโกใช้เป็นพื้นที่สำหรับมื้อกลางวันและกิจกรรมต่าง ๆ
- ออฟฟิศนิวยอร์กเป็นสถานที่ที่ Linus Lee อาศัยและทำงาน และมีสภาพแวดล้อมการทำงานที่ออกแบบอย่างเรียบร้อยสวยงาม
- การพัฒนาฟีเจอร์ AI ของ Notion เริ่มต้นในปี 2013 และ CEO กับ CTO ก็มีส่วนร่วมในการพัฒนาผลิตภัณฑ์โดยตรง
- ในภาพการประชุมของทีม AI ช่วงฤดูใบไม้ร่วงปี 2022 จะเห็นผู้จัดการ, CEO Ivan, CTO Simon, ผู้จัดการผลิตภัณฑ์ และดีไซเนอร์กำลังทำเซสชัน Q&A
- ในการพัฒนาผลิตภัณฑ์ AI คุณภาพและการประเมินผลเป็นองค์ประกอบสำคัญ โดยใช้เทคนิคการประเมินที่คำนึงถึงสเปกตรัมตั้งแต่งานวิจัย benchmark ไปจนถึงการใช้งานจริงในโปรดักชัน
- Notion ตรวจสอบประสิทธิภาพระหว่าง benchmark กับข้อมูลจริง และประเมินความสามารถของโมเดลอย่างแม่นยำผ่านการทดสอบแบบเป็นโปรแกรม
- รายการประเมินรวมถึงการมีคำเฉพาะ, ความน่าเชื่อถือ, การมีคีย์เวิร์ด และความแม่นยำด้านภาษา
-
การพัฒนาผลิตภัณฑ์ AI ของ Notion
- การประเมินโดยมนุษย์เป็นองค์ประกอบสำคัญของการพัฒนาผลิตภัณฑ์ AI ที่ Notion
- ในชุดข้อมูลทดสอบ มนุษย์จะตรวจสอบข้อมูล และทดสอบผลิตภัณฑ์ผ่านการทดสอบแบบเป็นโปรแกรม
- หลังพัฒนาผลิตภัณฑ์แล้ว จำเป็นต้องมีการมอนิเตอร์อย่างต่อเนื่องโดยอิงจากฟีดแบ็กของผู้ใช้
- AI ควรให้ความสามารถหลายระดับในการเก็บกรณีล้มเหลวของผู้ใช้และตอบคำถามได้อย่างมีประสิทธิภาพ
- หัวใจของการพัฒนาผลิตภัณฑ์ AI คุณภาพสูงคือการปรับแก้และคุณภาพของข้อมูล ดังนั้นการทำให้ข้อมูลจากโลกจริงเข้ากับโมเดลจึงสำคัญ
- ทีม Notion พัฒนาฟีเจอร์นี้ร่วมกันโดยมีทั้งวิศวกร นักวิจัย ดีไซเนอร์ และผู้จัดการผลิตภัณฑ์หารือเรื่องการปรับแก้
- ทีมปรับปรุงโมเดลการแก้ไขอย่างต่อเนื่องเพื่อยกระดับคุณภาพของผลลัพธ์ โดยใช้โมเดลอย่าง GPT-4
-
กระบวนการพัฒนาฟีเจอร์ AI ของ Notion
- วิศวกร AI ของ Notion พัฒนาโมเดลผ่านการรวบรวมข้อมูลและจัดโครงสร้างข้อมูล ดังนั้นจึงต้องวิเคราะห์ข้อมูลอย่างละเอียดและสอดคล้องกับความต้องการของผู้ใช้
- ทีมศึกษาวิธีจัดระเบียบข้อมูลอย่างบันทึกการประชุมและเว็บเพจของผู้ใช้ Notion พร้อมสร้างชุดข้อมูลขึ้นมา เพราะสิ่งนี้ส่งผลต่อประสิทธิภาพของโมเดล AI
- ทีมระบุ use case อย่าง Q&A ผ่านการวิจัยเพื่อนำมาทดสอบโมเดล เพื่อให้ตอบคำถามของผู้ใช้ได้อย่างมีประสิทธิภาพ
- ทีมพัฒนาระบบต้นแบบโดยใช้ GPT-4 และคลาวด์โมเดล จากนั้นทดสอบภายในเพื่อค้นหาปัญหาในระยะแรก
- ทีมวิเคราะห์กรณีล้มเหลวที่เก็บได้จากการใช้งานภายใน แล้วนำไปปรับปรุงทั้งชุดข้อมูลและโมเดล จึงเพิ่มความแม่นยำของโมเดลผ่านการทดสอบและฟีดแบ็กซ้ำ ๆ
-
ขั้นตอนการพัฒนาและประเมินโมเดล AI ของ Notion
- กระบวนการทำซ้ำกับโมเดลประกอบด้วยการแก้ไขพรอมป์ต์ การปรับจูนรายละเอียดของโมเดล และการเพิ่มขั้นตอนที่สองใน language model pipeline
- เมื่อเห็นว่าแก้ปัญหาได้ในขั้นพัฒนาแล้ว ทีมจะ deploy อีกครั้ง เก็บกรณีล้มเหลวเพิ่ม และทำซ้ำเป็นวงจร
- กระบวนการนี้จะทำต่อไปจนกว่าคุณภาพของอินพุตและเอาต์พุตในสภาพแวดล้อมภายในจะน่าพอใจ
- เมื่อถึงจุดหนึ่ง ผลิตภัณฑ์จะถูกเปิดให้ผู้ใช้จำนวนน้อยผ่านโปรแกรมเบต้า พร้อมมอนิเตอร์ฟีดแบ็กผู้ใช้และข้อมูลล็อกที่เก็บอัตโนมัติ
- ในช่วงเริ่มต้นของการสร้างชุดข้อมูล ทีมใช้หลายวิธีเพื่อตรวจสอบว่าสะท้อน use case จริงได้ดีเพียงใด
-
ระยะเริ่มต้นของการพัฒนาฟีเจอร์ AI
- ทีมสร้างต้นแบบขึ้นมาและทดสอบกับทีม AI ภายใน
- จากนั้นจึงรวบรวมอินพุตและตัวอย่างที่หลากหลายผ่านการใช้งานภายใน
- ชุดอินพุตเริ่มต้นไม่จำเป็นต้องเป็นตัวแทนของกรณีจริงได้อย่างสมบูรณ์แบบเสมอไป
- หลังทดสอบภายใน ทีมจะปล่อยให้ผู้ใช้วงกว้างขึ้นใช้งานเพื่อค่อย ๆ เก็บข้อมูลที่สมจริงมากขึ้น
- ชุดข้อมูลเริ่มต้นอาจสร้างขึ้นจากกรณีล้มเหลวที่คาดการณ์ไว้ได้เช่นกัน
- เมื่อพัฒนาฟีเจอร์รองรับภาษา ทีมจะนำชุดข้อมูล QA เดิมมาแปลเป็นภาษาต่างประเทศเพื่อใช้งาน
-
การเก็บข้อมูลและประเมินผลผ่านการทดสอบภายในและภายนอก
- ชุดข้อมูลเริ่มต้นไม่จำเป็นต้องสมจริงอย่างสมบูรณ์ ดังนั้นจึงใช้การทดสอบเพื่อเก็บข้อมูลที่ดีขึ้น
- ทีมทดสอบต้นแบบกับผู้ใช้ภายในหรือผู้ใช้ภายนอกกลุ่มเล็ก ๆ และเก็บตัวอย่างเอาต์พุตที่ผิดพลาดด้วยหลายวิธี
- ทีมทำการประเมินแบบเป็นโปรแกรมโดยอิงจากคีย์เวิร์ดหรือโครงสร้างเอาต์พุต และเก็บล็อกไว้สำหรับการอนุมานของ AI ทุกครั้ง จึงสามารถตรวจสอบและวิเคราะห์เอาต์พุตที่ล้มเหลวได้
- การสัมภาษณ์ผู้ใช้ช่วยให้เข้าใจ use case จริง และค้นพบวิธีใช้งานที่ไม่คาดคิดได้
- ตัวอย่างเช่น ระหว่างการทดสอบภายในของ Autofill ทีมพบว่าพนักงานจำนวนมากนำไปใช้เพื่อการแปล จึงพัฒนาฟีเจอร์นี้ให้เป็นเวอร์ชันแปลที่เหมาะสมยิ่งขึ้น
-
ฟีดแบ็กและวิธีประเมินผลิตภัณฑ์ AI
- ปุ่มฟีดแบ็กแบบชอบและไม่ชอบไม่ค่อยมีประโยชน์ต่อผู้ใช้ จึงไม่ถูกใช้งานบ่อยนัก
- อีกทั้งในระดับขนาดผู้ใช้ของ Notion ก็ไม่สามารถเก็บข้อมูลได้เพียงพอจากปุ่มฟีดแบ็กประเภทนี้
- อย่างไรก็ตาม บางครั้งมันก็ช่วยจับกรณีพิเศษที่ไม่พบจาก use case อื่นได้ จึงยังมีประโยชน์อยู่บ้าง
- ภายในทีมมีการประเมินความสามารถของโมเดลต่ออินพุตที่ไม่คาดคิดผ่าน adversarial testing
- adversarial testing มีประโยชน์ในการทำความเข้าใจขีดจำกัดของประสิทธิภาพโมเดลและระบุจุดที่เกิดปัญหา
- ทีมมอนิเตอร์จุดแข็งและจุดอ่อนของโมเดลอย่างต่อเนื่องผ่านข้อมูลการใช้งานจริง
-
องค์ประกอบสำคัญของการพัฒนาผลิตภัณฑ์ AI
- การประเมินผลและล็อกคือสิ่งที่สำคัญที่สุด
- จำเป็นต้องสร้างล็อกที่ครอบคลุม สมบูรณ์ และสามารถเริ่มรันใหม่ได้ทั้งหมด
- จากตัวอย่างเอาต์พุตที่แย่จากการใช้งานจริงหรือผลการทดสอบภายใน ทีมสามารถสร้าง pipeline ใหม่และดีบักได้
- แต่ละตัวอย่างสามารถนำมารันใหม่ในสภาพแวดล้อมพัฒนา เพื่อทดสอบกับพรอมป์ต์หรือโมเดลใหม่และหาทางแก้
- หลังแก้ปัญหาแล้ว ตัวอย่างนั้นจะถูกเพิ่มเข้าไปในชุดข้อมูลทดสอบเพื่อป้องกันไม่ให้ปัญหาเดิมเกิดขึ้นอีก
-
บทเรียนสำคัญของการพัฒนา AI
- ควรใช้งานผลิตภัณฑ์ตั้งแต่เนิ่น ๆ และทดสอบบ่อย ๆ เพื่อทำความเข้าใจงานให้ละเอียดขึ้น
- ปัจจัยสร้างความแตกต่างใน AI ไม่ใช่ประสิทธิภาพของโมเดล แต่คือความเข้าใจในงานที่ทำ
- เมื่อต้องสร้างแอปพลิเคชัน AI สำหรับผู้ใช้ปลายทาง ทีม AI ต้องเข้าใจทั้งความยากของงานและข้อจำกัดของโมเดลอย่างลึกซึ้ง
- สิ่งสำคัญคือการแตกงานออกเป็นส่วนย่อย ๆ และเข้าใจว่าจุดไหนที่โมเดลล้มเหลวบ่อย กับจุดไหนที่ทำได้ดีตามธรรมชาติ
- การใช้งานผลิตภัณฑ์บ่อย ๆ และวิเคราะห์เอาต์พุตเพื่อเข้าใจสาเหตุของข้อผิดพลาดของโมเดล คือวิธีที่ดีที่สุดในการเข้าใจความยากของงาน
-
สิ่งที่ต้องระวังในการพัฒนาผลิตภัณฑ์ AI
- ในสเปกผลิตภัณฑ์ นอกจากอินเทอร์เฟซและฟังก์ชันแล้ว ควรระบุเกณฑ์การประเมินและมาตรฐานของเอาต์พุตที่ดีไว้ด้วย
- เกณฑ์การประเมินถูกใช้เป็นจุดสื่อสารหลักระหว่างผู้รับผิดชอบผลิตภัณฑ์ วิศวกร และนักวิจัย
- ประสบการณ์ด้านแมชชีนเลิร์นนิงแบบดั้งเดิมยังนำมาปรับใช้กับ LLM และโมเดล generative AI ได้ ซึ่งให้มุมมองเชิงลึกมากกว่าที่คิด
- อย่างไรก็ตาม ในแมชชีนเลิร์นนิงแบบดั้งเดิมมักจัดการกับชุดข้อมูลขนาดใหญ่และวิเคราะห์คลัสเตอร์หรือบางส่วนขนาดใหญ่ แต่ใน language model จะตรวจดูกรณีล้มเหลวรายกรณีและล็อกรายรายการบ่อยกว่า
- เพราะฉะนั้น งานกับ language model จึงต้องใช้เครื่องมือและเวิร์กโฟลว์ที่ต่างออกไป
-
ความสำคัญและแนวทางของการประเมินโมเดล AI
- การประเมินผลมีผู้ใช้และสิ่งที่ผู้ใช้ทำจริงเป็นแหล่งความจริงสูงสุด
- ดังนั้น เอกสารหรือข้อมูลสำหรับการประเมินควรสะท้อน use case จริงโดยอิงจากข้อมูลการใช้งานทั้งภายในและภายนอก
- ความท้าทายสำคัญในกระบวนการประเมินคือการทำให้ครอบคลุมพื้นที่อินพุตทั้งหมดที่เราต้องการให้ระบบทำงานได้ดี
- การสร้าง automated evaluation pipeline จะช่วยประหยัดเวลาในภายหลังเมื่อต้องจัดการข้อมูลจำนวนมาก แต่ในช่วงแรกการที่สมาชิกทีมลงมาตรวจดูและทำความเข้าใจเอาต์พุตด้วยตนเองเป็นสิ่งสำคัญ
- สิ่งนี้ช่วยให้เข้าใจสาเหตุความล้มเหลวของโมเดลและแนวโน้มของโมเดลต่อแต่ละงานได้
-
วิธีจัดทีม AI
- มีอยู่ 2 แนวทางหลัก โดยแนวทางแรกคือเปลี่ยนทีมแมชชีนเลิร์นนิงเดิมให้เป็นทีม AI
- วิธีนี้จะทำให้ทีมมุ่งเน้นที่ข้อมูล การตรวจสอบ และ benchmark จึงต้องประเมินให้สอดคล้องกับความต้องการของผู้ใช้และความคาดหวังในโลกจริง
- แนวทางที่สองคือให้ทีมวิศวกรเดิมเรียนรู้ language model API เช่น OpenAI API ซึ่ง Notion ก็ใช้วิธีนี้ ดังนั้นทีม AI ช่วงแรกจึงส่วนใหญ่เป็นวิศวกรเว็บ
- จุดแข็งของทีมลักษณะนี้คือมีความเข้าใจผู้ใช้และเก่งด้านการทดสอบเชิงทดลอง แต่ก็ต้องเรียนรู้ความสำคัญของการประเมินอย่างเข้มงวดและชุดข้อมูลคุณภาพสูง
- นอกจากนี้ สุขอนามัยของข้อมูลและเวิร์กโฟลว์ในการดูแลชุดข้อมูลก็มีความสำคัญมาก ดังนั้นการรักษาคุณภาพของ data point ระดับสูงจึงเป็นสิ่งจำเป็น
ยังไม่มีความคิดเห็น