BLOGS

ไม่ใช่ Data Scientist ก็ทำ Machine Learning ได้แบบจบครบ Loop เป็น APIs ด้วย BigQuery

Suwat.T • 13/07/2023
Google Cloud Solutions Specialist

ปัจจุบันการทำ Machine Learning โมเดลมีเครื่องมือหลาย ๆ ตัวที่ช่วยให้เราสร้างโมเดลได้ง่าย ๆ แต่ทว่าการทำโมเดลผู้ใช้ก็จะต้องเข้าใจในเรื่องของ Programing Language ด้วยเช่น R Programing หรือ Python Programing ก็ดี ที่ต้องเข้าใจ Syntax ในการเขียน ซึ่งอาจเป็นข้อจำกัดสำหรับคนที่ไม่ถนัดการเขียนโปรแกรม แต่บน Google Cloud Platform เราไม่จำเป็นต้องมีทักษะเขียนโปรแกรมก็ทำ Machine Learning Model ได้ด้วย BigQuery

ในบทความนี้เราจะทำการสร้าง Machine Learning Model ด้วย BigQuery ML โดยใช้โครงสร้าง SQL Syntax ผู้ใช้ไม่จำเป็นต้องเขียนโปรแกรมที่ซับซ้อนอีกทั้งยังสามารถนำผลลัพธ์ไปใช้ประโยชน์ต่อในมุมต่าง ๆ ในรูปแบบ APIs ได้

เรามาทำความรู้จักกับ BigQuery กันก่อน

                    BigQuery เป็น Modern Data Warehouse ที่แตกต่างจาก Data Warehouse แบบเดิม ๆ ที่เรารู้จักโดย BigQuery เป็น Serverless ทำให้เวลาที่เราจะเริ่มต้นใช้งานเราไม่ต้องมานั่ง Provisioning CPU, RAM ไม่ต้อง Start หรือ Stop Instances เลย แค่เพียง Login เข้าไปที่ BigQuery เท่านั้นก็สามารถใช้งานได้

Features ที่ทำให้ BigQuery มันเป็น Modern Data Warehouse ก็จะมีหลาย ๆ ฟีเจอร์ด้วยกัน เช่น

  1. Automate Data Delivery
    • ช่วยให้โหลดข้อมูลได้ง่ายขึ้นรองรับหลากหลาย Platform มากกว่า 100 ตัว
  2. Make Data Insights Accessible
    • ช่วยให้การเข้าถึง Insight ของข้อมูลเป็นเรื่องง่ายด้วยการเชื่อมต่อ BigQuery กับ Google Sheets, Looker Studio ได้อย่าง Seamless ทำให้ผู้ใช้ไม่จำเป็นต้องเขียน SQL Syntax แต่เข้าถึงข้อมูลบน BigQuery ได้
  3. Build the Foundation for ML and AI
    • บน BigQuery สามารถรองรับการสร้าง Machine Learning Model ได้ในตัวเป็น Built-in function ด้วย SQL Syntax
  4. Tee Up Real-time Insights
    • BigQuery รองรับข้อมูลที่เป็น Real-time ได้ทำให้ผู้ใช้ได้ Insight ที่ไวและนำไปออก Action ได้อย่างทันที
  5. Protect Your Business Data and Investment
    • ในเรื่องของ Security BigQuery ก็จัดการได้อย่างสมบูรณ์แบบไม่ว่าจะเป็นการรับส่งข้อมูลมีการ Encryption ข้อมูลให้และยังจัดการในเรื่อง Data Governace ได้อย่างละเอียดอีกด้วย
  6. Simplified Data Operations
    • ในเรื่องของการใช้งานเราสามารถใช้งาน BigQuery ได้เลยไม่ต้องทำการ Start Instances หรือ Provisioning ใด ๆ ทั้งสิ้น

นอกเหนือจากที่ผมได้กล่าวไป BigQuery ยังมีความสามารถอื่น ๆ อีกมากมาย
สามารถไปดูได้ที่ Webinar ของ Tangerine https://www.youtube.com/watch?v=VeRVpOBsISE
หรือ Blog ต่อไปนี้ได้เลย  https://ex.tangerine.co.th/tag/bigquery/

เริ่มต้นสร้าง Machine Learning Model กันเลย!

                    ในวันนี้เราจะทำการสร้าง Machine Learning Model ด้วยการใช้ BigQuery ด้วย Feature BigQuery ML กันโดยเราจะใช้ข้อมูล Ecommerce ในการทำ Churn Prediction Model กันซึ่ง Churn Prediction Model เป็นโมเดลการทำนายลักษณะลูกค้าที่กำลังจะยกเลิกบริการ ซึ่งขั้นตอนในการทำก็จะมีขั้นตอนดังนั้น

ตัวอย่างข้อมูล Ecommerce 

1. สร้าง Machine Learning Model (Create Model)

                    เพื่อไม่ให้เป็นการเสียเวลาเรามาเริ่มกันเลย สมมติเรามีข้อมูลอยู่บน BigQuery เรียบร้อยแล้วเราจะเริ่มกันที่ขั้นตอนการสร้างโมเดลด้วย SQL Syntax ด้านล่างนี้ครับ

  • CREATE OR REPLACE MODEL
    คือคำสั่งที่เอาไว้สร้างโมเดล หรือถ้ามีโมเดลอยู่แล้วให้ทำการเขียนทับโมเดลเดิมโดยโมเดลจะถูกเก็บไว้ตาม Path บน BigQuery
    ที่เรากำหนดจากในตัวอย่างคือ `tangerine-data-demo.demo_bigqueryml.churn_model`
  • OPTIONS : เอาไว้กำหนดรายละเอียดของโมเดลเช่นในตัวอย่างกำหนด
    • model_type (require) : เอาไว้ระบุประเภทของโมเดลที่จะใช้ในการทำนาย 
    • input_label_cols (require): เอาไว้ใส่ชื่อคอลัมน์ที่เป็น Label 
    • model_registry (optional) : เป็นที่เก็บโมเดลบน Vertex AI ถ้าอยากจะ Deploy เป็น APIs ก็ต้องใส่ Model_registry ด้วย ‘vertex_ai’
    • vertex_ai_model_id (optional) : เอาไว้ตั้ง id name สำหรับการ Deploy เป็น APIs
    • vertex_ai_model_version_aliases (optional) : เอาไว้ติด tag ช่วยในการ Manage Version ของโมเดลโดยที่เราไม่ต้องระบุ Version ID

นอกจาก Options ที่ใส่ในตัวอย่างยังสามารถดู Syntax เพิ่มเติมได้ที่ Link 

  • ในส่วน SELECT สุดท้ายคือเราจะทำการเลือกคอลัมน์ (Feature) ตัวแปรอื่น ๆ นอกเหนือจาก input_label_cols เข้าไป Train Model จากในตัวอย่างคือเราเลือกทุกคอลัมน์ยกเว้นคอลัมน์ CustomerID
  • เมื่อเรา Train Model เรียบร้อยแล้วเราสามารถเข้าไปดูผลลัพธ์หรือค่าสถิติของ Model ที่เรา Train ได้อีกด้วยโดยเราไม่ต้องเขียน Python Programing ใด ๆ ทั้งสิ้น

ตัวอย่างหน้า Evaluation

                    ข้อดีของการใช้ BigQuery ML คือเราจะเห็นได้ว่ากระบวนการในการทำโมเดลเบื้องต้นเราไม่ต้องทำในขั้นตอน Pre-process Data เลยซึ่ง BigQuery มี Automatic Feature Preprocessing ดูรายละเอียดเพิ่มเติมได้ที่ https://cloud.google.com/bigquery/docs/auto-preprocessing  จัดการให้เรียบร้อยซึ่งถ้าดูจากตัวอย่างเราจะให้ได้ว่าคอลัมน์ Tenure มีค่าที่เป็น Null อยู่ด้วยตรงนี้ BigQuery ก็จะจัดการให้หรือถ้าเราต้องการจะ Process data เองเราก็สามารถทำเป็น Manual Feature Preprocessing ก็ได้เช่นกัน

2. ทำนายข้อมูลด้วยการ Make Predictions

                    เราสามารถทำการทำนาย (Prediction) ข้อมูลที่โมเดลไม่เคยเห็นมาก่อนได้ (Unseen Data) กับ Model ที่เรา Train ไว้เมื่อสักครู่โดยเราจะใช้คำสั่ง ML.PREDICT ในการทำนาย ส่วนผลลัพธ์ที่ได้ออกมาก็จะมีค่า Probability ไว้บอกว่าแต่ละ Transaction มีความน่าจะเป็นที่จะ Churn เป็นเท่าไรโดยกรอบสีแดงคือสิ่งที่ Prediction Model ส่วนกรอบสีเขียวคือค่าที่เกิดขึ้นจริงที่เราใช้สำหรับวัดผลโมเดล

นำผลลัพธ์จาก ML ไปใช้ประโยชน์ต่อกัน!

                    หลังจากที่เราได้ Churn Prediction Model กันมาแล้วเราสามารถสร้างมูลค่าเพิ่มจากผลลัพธ์ของ ML ด้วยการส่งต่อให้กับทีม Business ในรูปแบบต่าง ๆ เช่น อาทิ เป็น Google Sheets ไปเลยหรือจะ Export เป็นไฟล์ แต่ที่นิยมที่สุดมักจะส่งเป็นรายงาน ซึ่ง Looker Studio ถือว่าเป็นเครื่องมือในการทำรายงานหรือ Dashboard ได้ยอดเยี่ยมและไม่มีค่าใช้จ่าย นักทำโมเดลหลายคนจึงเลือกใช้เพื่อต่อยอดครับ ด้านล่างนี้เป็นตัวอย่างการนำไปใช้งานต่อยอดครับ

ตัวอย่าง Dashboard บน Looker Studio

                   นอกเหนือจากการนำไปออก Dashboard แล้วในวันนี้ที่เราจะพูดถึงการนำไปทำในมุม Downstream Application คือองค์กรของเราอาจจะมีการนำโมเดลไปต่อกับ Application มาเชื่อมต่อกับ Machine Learning Model ซึ่งปกติการนำไปต่อ Application ก็จะมีความยากตรงที่ต้องเขียนเป็น APIs เองหรือนำไปทำเป็น Docker เพื่อไปรันบน Application แต่เครื่องมือของ Google Cloud Platform จะเข้ามาช่วยเราในการทำเป็น APIs Endpoint

ทำ Downstream Application ด้วย Vertex AI Endpoints กัน

                    จากขั้นตอนที่เราได้ทำการสร้าง Churn Prediction Model บน BigQuery โดยเราได้ทำการหนด OPTIONS เพิ่มเติมให้มีการเก็บ Model บน Vertex AI ทำให้เราสามารถใช้ความสามารถของ Vertex AI ในการทำ Online Prediction ได้ซึ่งถ้าใครอยากรู้ว่า Vertex AI คืออะไรโดยสามารถอ่านเพิ่มเติมในเรื่อง Vertex AI ได้ที่ https://ex.tangerine.co.th/google-cloud/vertex-ai-workbench-tool-for-datascientist/

1. เริ่มสร้าง APIs Endpoints ด้วย Vertex AI กันเลย !

                    Churn Prediction Model ที่เราสร้างขึ้นที่ BigQuery หากเรากำหนด model_registry = ‘vertex_ai’ ตัว Model ที่ Bigquery สร้างขึ้นนอกจากจะอยู่บน BigQuery แล้วก็จะปรากฎอยู่บน Model Registry บน Vertex AI ให้อัตโนมัติเช่นกัน และเมื่อเราคลิกเข้ามาดูก็จะเห็นรายละเอียดต่าง ๆ ของ Model สำหรับขั้นตอนในการทำเป็น APIs จะเป็นเมนู Deploy to endpoint ในกรอบหมายเลข 5

                    สิ่งที่เราต้องกำหนดเมื่อกด Deploy to endpoint แล้วคือการตั้งชื่อ Endpoint Name โดยในตัวอย่างมีการตั้งชื่อว่า “demo-bqml-endpoint”

หลังจากนั้นในส่วนอื่น ๆ เราปล่อยให้เป็นค่า Default แล้วคลิก CONTINUE ได้เลย

                    ในขั้นตอนถัดมาเราทำการกำหนด Traffic split และทำการเลือก Machine Type ในการ Deploy Endpoints โดยในตัวอย่างเราเลือกตัวที่เป็น n1-standard-2 ที่เป็นเป็นตัวเริ่มต้น หลังจากนั้นค่าอื่น ๆ เราก็ปล่อยให้เป็นค่า Default 

                    ในขั้นตอนสุดท้ายเป็นการ Enable model monitoring for this endpoint เป็นการ Monitor  Model ว่า Model ที่เราได้ทำการ Deploy นั้น ทำงานเป็นปกติตามที่เราต้องการหรือไม่ หรือถ้าทำงานผิดปกติ เช่น ทำนายคลาดเคลื่อน  ก็อาจถึงเวลาทีต้อง Retrain Model ใหม่หรือไม่ เพียงเท่านี้เราก็จะได้ Endpoint โดยที่เราไม่ต้องเขียนโค้ดเลย

3. ทดสอบการเรียกใช้งาน APIs Endpoints

                    เมื่อเรา Deploy to endpoint เรียบร้อยแล้วจะมี Status ของ Endpoints ว่า Active และในการเรียกใช้งาน Endpoints เราสามารถเรียกใช้ได้หลายวิธีโดยวิธีการหลัก ๆ จะแบ่งการเรียกเป็นแบบ REST APIs หรือ Python Programing ก็ได้ซึ่งเมื่อเราคลิกเข้ามาที่ Sample Request ก็จะมีตัวอย่างการใช้งานให้ดูทำให้เราใช้งานได้ง่ายมากขึ้น

                    ในส่วนสุดท้ายนี้ทางทีมอาจจะไม่ได้แสดงถึงขั้นตอนการเรียกใช้งานแต่ต้องการให้ทุกท่าน ๆ เห็นมุมมองในการ Deploy to endpoint ว่าใช้งานง่ายในบทความนี้เป็นตัวอย่างการสร้าง Machine Learning Model ด้วย BigQuery ML และ Deploy to endpoints ด้วย Vertex AI ซึ่งนอกเหนือจากการ Training Model ด้วย BigQuery ML เรายังสามารถสร้าง Model ด้วย Python และ Deploy to endpoint ได้เช่นกัน

หากสนใจบริการต่าง ๆ หรือต้องการคำปรึกษาเพิ่มเติมติดต่อเรา
ได้ที่ marketing@uat.tangerine.co.th หรือ โทร 02 285 5511
ท่านจะได้รับคำตอบจากผู้เชี่ยวชาญที่ได้รับการรับรองมาตรฐาน

Get a Free Consultation
Contact Form_EN Sources (#25)