Answer Bot: Chatbot Natural Language Processing (NLP) ของ Zendesk

Share on facebook
Share on twitter
Share on linkedin

วันนี้แอดมินไปงาน Meetup เกี่ยวกับ Data Science และ Big Data แล้วมี Session เกี่ยวกับ การสร้างระบบแชทบอท ที่ใช้ Natural Language Processing ของ Zendesk แอดเห็นว่ามีเรื่องของ Data Engineer ที่น่าสนใจมาก เลยยกมาเล่าให้ฟังกันครับ

บริษัท Zendesk คือใคร ทำอะไร

zendesk support chat tool data
ระบบแชทของ Zendesk มีบริการทั้งหน้าบ้านหลังบ้านให้ครบ ใช้งานง่าย

ถ้าใครทำงานสายเว็บ และต้องหาระบบ Chat มาติดเว็บ น่าจะเคยยินชื่อ Zendesk กันมาบ้างครับ เพราะเค้าเป็นอันดับต้น ๆ ในบริการด้านนี้เลย

Zendesk เป็นบริษัทที่ให้บริการระบบ Support Chat บนเว็บไซต์ที่ได้รับความนิยมมาก มีออฟฟิสอยู่หลายประเทศ ซึ่ง Headquarter ด้าน Development อยู่ที่เมลเบิร์นนั่นเอง และจากที่แอดไปลองหาข้อมูลมาเมื่อครู่ ก็พบว่าตอนนี้ Zendesk เข้าตลาดหุ้นไปแล้วครับ

Answer Bot: Chatbot ของ Zendesk

how answer bot work zendesk dee learning
how answer bot work zendesk dee learning

Zendesk ได้พัฒนาระบบ Answer Bot ขึ้นมาโดยใช้ Machine Learning ซึ่งงานในวันนี้ก็มี Senior Engineer มาเล่าให้ฟังว่าเค้าสร้างขึ้นมาได้ยังไงครับ

AnswerBot เป็นบอทที่ใช้ AI ช่วยตอบคำถามแทนพนักงานมนุษย์ มันจะวิเคราะห์จากคำถามของลูกค้าด้วยระบบ Natural Language Processing เพื่อหา Knowledgebase (คำถามที่พบบ่อย) ที่ใกล้เคียงที่สุดมาตอบลูกค้า

หลักการของระบบ (เท่าที่เค้าอธิบายแล้วแอดมินเข้าใจ) คือ

  • ทำ Word Embedding = นำคำใน Knowledgebase ทั้งหมดมาแปลงเป็น Vector เพื่อให้โมเดล Machine Learning สามารถอ่านค่าได้
  • สร้างไฟล์ Pickle สำหรับใช้ในโมเดลทำนายผล

ปัญหาต่าง ๆ ในการรันแชทบอท Answer Bot

โดยระบบ Answer Bot เวอร์ชั่นแรก เค้าส่งข้อมูลจาก MySQL ไปที่ Kafka แล้วทำเป็น Python API Service หลังจากนั้นก็สร้างโมเดลใน Library บน Python ชื่อ Scikit Learn (หลาย ๆ คนที่เล่น Kaggle บ่อย ๆ ต้องรู้จักแน่ ๆ)

แต่พอรัน Production จริง ปรากฏว่า… ระบบช้ามาก

เค้าเลยเปลี่ยนจาก Scikit Learn ไปใช้ Tensorflow เพราะ TF สามารถส่งโมเดลเดียวกันไปรันบนหลายเซิร์ฟเวอร์พร้อมกันได้ ซึ่งก็ช่วยเพิ่มความเร็วในการรันโมเดล

แต่ก็พบปัญหาต่อมา คือ เค้าไม่สามารถเทสโมเดลหลาย ๆ เวอร์ชั่นพร้อมกันได้ ทำให้ไม่สามารถรู้ได้เลยว่าโมเดลเวอร์ชั่นใหม่นั้น ทำงานได้ดีกว่าโมเดลเวอร์ชั่นเก่าหรือไม่ ปัญหานี้มาจากว่า Tensorflow Serving (ระบบสำหรับ Deploy โมเดล Tensorflow) ไม่รองรับโมเดลหลายเวอร์ชั่น

ปัญหานี้สามารถแก้ได้โดยการทำ Tensorflow Serving จากคนละเซิร์ฟเวอร์ แต่ก็จะจัดการได้ยากครับ หรืออาจจะต้องเขียนเครื่องมือมาจัดการเองเลย

zendesk data team
ทีม Data ที่ Zendesk – รูปจาก บทความ Medium

เนื่องจากว่า Zendesk เป็นดินแดนรวม Engineer เก่ง ๆ มากมาย เค้าเลย แก้ปัญหาด้วยการเขียน Patch Tensorflow Serving มาใช้เอง

เขียนเสร็จแล้วยังใจดี ส่งเข้า Github ให้คนอื่นได้ใช้ด้วยนะ ตอนนี้ TF เลยรองรับการรันโมเดลหลายเวอร์ชั่นพร้อมกัน เพื่อให้สามารถทำ A/B Testing ได้

นอกจากนั้น Zendesk ยังเพิ่มความเร็วของโมเดลไปอีกขึ้น โดยรันระบบบน GPU จากระบบเดิมที่รันบน CPU เฉยๆ ซึ่งได้ผลว่า GPU ทำงานเร็วกว่ามาก ๆ เค้าวัดมาได้ผลว่า พอใช้ GPU 1 ตัว จะเร็วเท่ากับ CPU 8 ตัวเลยทีเดียว

จะเรียกว่าใช้เงินแก้ปัญหาก็ถูกครับ เพราะราคา GPU ไม่ใช่ถูก ๆ T_T

zendesk tensorflow model architecture
Architecture ของโมเดล – รูปจาก บทความ Medium

ปัญหาที่เค้าพบต่อมา คือ ถ้า Knowledgebase มีการเปลี่ยนแปลงโดยลูกค้า แล้วระบบประมวลผลใหม่ทันที (Real-time processing) เพื่อสร้างโมเดลใหม่ ระบบจะช้ามาก

เค้าแก้ปัญหาโดยเปลี่ยนมาใช้วิธี Batch Processing แทน Real-time Processing นั่นคือ รอให้มี Request การเปลี่ยนแปลงเข้ามาจำนวนหนึ่งก่อน ค่อยสร้างโมเดลใหม่อีกรอบ

ซึ่งพอทำแบบนี้เค้าก็สามารถแยก Server ออกเป็น

  • Server ที่ไม่ต้องประมวลผลเยอะ ต้องการความเร็วสูง (Low Latency) สำหรับให้แชทบอทตอบลูกค้า
  • Server ที่ต้องประมวลผลเยอะ รองรับงาน Batch Processing เพื่อสร้างโมเดลใหม่

อัพเดท: แอดไปเจอว่า Senior Engineer ที่มาพูดวันนี้ เค้าได้ไปเขียนบทความบน Medium ชื่อ How Zendesk Serves TensorFlow Models in Production ด้วยครับ ไปเก็บข้อมูลเพิ่มเติมกันได้เลย

เราจะเห็นได้ว่า งานด้าน Data Engineer ที่เป็นคนทำระบบสำหรับ Deploy Model สำคัญมากกกกกกกก ถ้าขาดคนพวกนี้ เราก็ไม่สามารถนำโมเดลไปใช้ประโยชน์ได้เวลามีข้อมูลเยอะ ๆ ครับ

ใครอยากเป็น Data Engineer ห้ามพลาดบทความ คู่มือเปลี่ยนอาชีพ Data Engineer ที่แอดเคยเขียนไว้ครับ บทความนั้นความรู้เต็ม ๆ ตอนใหม่มาเร็ว ๆ นี้ครับ รอติดตามกันได้เลย

Leave a comment

อ่านจบแล้วอยากพูดคุยต่อ? พิมพ์ไว้ตรงนี้ได้เลย แอดมาอ่านทุกอันครับ