1. บทนำ
Kubeflow เป็นชุดเครื่องมือแมชชีนเลิร์นนิงสำหรับ Kubernetes โปรเจ็กต์นี้มีวัตถุประสงค์เพื่อให้การติดตั้งใช้งานเวิร์กโฟลว์ของแมชชีนเลิร์นนิง (ML) บน Kubernetes มีความเรียบง่าย พกพาได้ และรองรับการปรับขนาด โดยมีเป้าหมายเพื่อนำเสนอวิธีที่ตรงไปตรงมาในการทำให้ระบบโอเพนซอร์สที่ดีที่สุดสำหรับ ML ใช้งานได้กับโครงสร้างพื้นฐานที่หลากหลาย |
การติดตั้งใช้งาน Kubeflow มีลักษณะอย่างไร
การติดตั้งใช้งาน Kubeflow
- แบบพกพา - ทำงานได้กับคลัสเตอร์ Kubernetes ใดก็ได้ ไม่ว่าจะใช้งานบน Google Cloud Platform (GCP), ภายในองค์กร หรือจากผู้ให้บริการหลายราย
- รองรับการปรับขนาด - ใช้ประโยชน์จากทรัพยากรที่ผันผวนได้และถูกจำกัดโดยจำนวนทรัพยากรที่จัดสรรไปยังคลัสเตอร์ Kubernetes เท่านั้น
- เขียนได้ - เพิ่มประสิทธิภาพด้วย Service Worker เพื่อให้ทำงานแบบออฟไลน์หรือเครือข่ายที่มีคุณภาพต่ำ
ซึ่งเป็นวิธีจัดระเบียบ Microservice ที่มีการเชื่อมต่อแบบหลวมๆ ให้เป็นหน่วยเดียวและทำให้ใช้งานได้ในหลากหลายสถานที่ ไม่ว่าจะเป็นแล็ปท็อปหรือระบบคลาวด์
Codelab นี้จะแนะนำวิธีสร้างการติดตั้งใช้งาน Kubeflow ของคุณเองโดยใช้ MiniKF และเรียกใช้เวิร์กโฟลว์ Kubeflow Pipelines จากภายในสมุดบันทึก Jupyter
สิ่งที่คุณจะสร้าง
ใน Codelab นี้ คุณจะได้สร้างไปป์ไลน์วิทยาศาสตร์ข้อมูลที่ซับซ้อนด้วย Kubeflow Pipelines โดยไม่ต้องใช้คำสั่ง CLI หรือ SDK โดยไม่จำเป็นต้องมีความรู้เกี่ยวกับ Kubernetes หรือ Docker เมื่อดำเนินการเสร็จสมบูรณ์แล้ว โครงสร้างพื้นฐานของคุณจะประกอบด้วย:
- VM ของ MiniKF (Mini Kubeflow) ที่ติดตั้งโดยอัตโนมัติ
- Kubernetes (โดยใช้ Minikube)
- Kubeflow
- Kale ซึ่งเป็นเครื่องมือในการแปลงสมุดบันทึก Jupyter อเนกประสงค์เป็นเวิร์กโฟลว์ Kubeflow Pipelines ( GitHub)
- Arrikto Rok สำหรับการกำหนดเวอร์ชันและการทำซ้ำของข้อมูล
สิ่งที่คุณจะได้เรียนรู้
- วิธีติดตั้ง Kubeflow กับ MiniKF
- วิธีแปลงสมุดบันทึก Jupyter เป็นไปป์ไลน์ Kubeflow โดยไม่ต้องใช้คำสั่งหรือ SDK ของ CLI
- วิธีเรียกใช้ไปป์ไลน์ Kubeflow จากภายในสมุดบันทึกด้วยการคลิกเพียงปุ่มเดียว
- วิธีสร้างเวอร์ชันข้อมูลในสมุดบันทึกโดยอัตโนมัติและในทุกขั้นตอนของไปป์ไลน์
สิ่งที่คุณต้องมี
- โปรเจ็กต์ GCP ที่ใช้งานอยู่ซึ่งคุณมีสิทธิ์ระดับเจ้าของ
นี่คือ Codelab ขั้นสูงที่เน้น Kubeflow ดูข้อมูลเบื้องต้นเพิ่มเติมและข้อมูลเบื้องต้นเกี่ยวกับแพลตฟอร์มได้ในเอกสารประกอบข้อมูลเบื้องต้นเกี่ยวกับ Kubeflow แนวคิดและโค้ดบล็อกที่ไม่เกี่ยวข้องจะปรากฎขึ้นและเพื่อให้คุณคัดลอกและวางได้อย่างง่ายดาย
2. ตั้งค่าสภาพแวดล้อม
ตั้งค่ารหัสโปรเจ็กต์ GCP และชื่อคลัสเตอร์
หากต้องการดูรหัสโปรเจ็กต์ ให้ไปที่แผงหน้าแรกของคอนโซล GCP ซึ่งอยู่ในเมนูแฮมเบอร์เกอร์ที่ด้านซ้ายบน ถ้าหน้าจอว่างเปล่า ให้คลิก ใช่ เมื่อได้รับข้อความแจ้งเพื่อสร้างหน้าแดชบอร์ด
หากยังไม่ได้เลือกโปรเจ็กต์ ให้คลิกเลือกโปรเจ็กต์
แล้วเลือกโปรเจ็กต์ คุณควรมีข้อมูลต่อไปนี้เพียงรายการเดียวเท่านั้น
3. ติดตั้ง MiniKF
สร้างอินสแตนซ์ Compute
ใน GCP Marketplace ให้ค้นหา "MiniKF"
เลือกเครื่องเสมือน MiniKF โดย Arrikto
คลิกปุ่มเปิดใช้งานบน Compute Engine แล้วเลือกโปรเจ็กต์
ในส่วนกำหนดค่าและ ทำให้หน้าต่างใช้งานได้ เลือกชื่อสำหรับอินสแตนซ์ MiniKF และปล่อยตัวเลือกเริ่มต้นไว้ จากนั้นคลิกปุ่มทำให้ใช้งานได้
รอให้อินสแตนซ์ MiniKF Compute เริ่มทำงาน
ลงชื่อเข้าสู่ระบบ MiniKF
เมื่อ MiniKF VM พร้อมใช้งานแล้ว ให้เชื่อมต่อและเข้าสู่ระบบโดยคลิกปุ่ม SSH ทำตามวิธีการบนหน้าจอเพื่อเรียกใช้คำสั่ง minikf
ซึ่งจะเริ่มการติดตั้งใช้งาน Minikube, Kubeflow และ Rok ซึ่งอาจใช้เวลาดำเนินการสักครู่
เข้าสู่ระบบ Kubeflow
เมื่อติดตั้งเสร็จแล้วและพ็อดทั้งหมดพร้อมแล้ว ให้ไปที่หน้าแดชบอร์ด MiniKF เข้าสู่ระบบ Kubeflow โดยใช้ชื่อผู้ใช้และรหัสผ่าน MiniKF
ผู้ใช้ Chrome จะเห็นหน้าจอนี้
ผู้ใช้ Firefox จะเห็นหน้าจอนี้:
ผู้ใช้ Safari จะเห็นหน้าจอนี้
เข้าสู่ระบบ Rok
หลังจากเข้าสู่ระบบ Kubeflow แล้ว ให้เปิดเมนูด้านซ้ายโดยคลิกไอคอนแฮมเบอร์เกอร์ ไปที่ Snapshot Store แล้วเข้าสู่ระบบ Rok ด้วยชื่อผู้ใช้และรหัสผ่าน MiniKF
ยินดีด้วย คุณทำให้ MiniKF ใช้งานได้บน GCP เรียบร้อยแล้ว ตอนนี้คุณสร้างสมุดบันทึก เขียนโค้ด ML และเรียกใช้ Kubeflow Pipelines ได้แล้ว ใช้ Rok สำหรับการกำหนดเวอร์ชันของข้อมูลและการทำซ้ำ
4. เรียกใช้ไปป์ไลน์จากใน Notebook ของคุณ
ในส่วนนี้ คุณจะได้สัมผัสตัวอย่างเรือไททานิก ซึ่งเป็นการแข่งขัน Kaggle ที่คาดการณ์ว่าผู้โดยสารคนใดรอดชีวิตจากเหตุการณ์เรือไททานิกอับปางได้
สร้างเซิร์ฟเวอร์ของสมุดบันทึก
ไปที่ลิงก์เซิร์ฟเวอร์สมุดบันทึกบนแดชบอร์ด Kubeflow Central
คลิกเซิร์ฟเวอร์ใหม่
ระบุชื่อสำหรับเซิร์ฟเวอร์สมุดบันทึกของคุณ
ตรวจสอบว่าคุณได้เลือกรูปภาพนี้แล้ว
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
เพิ่มปริมาณข้อมูลใหม่ที่ว่างเปล่าขนาด 5GB และตั้งชื่อเป็น data
คลิกเปิดเพื่อสร้างเซิร์ฟเวอร์สมุดบันทึก
เมื่อเซิร์ฟเวอร์สมุดบันทึกพร้อมใช้งาน ให้คลิกเชื่อมต่อเพื่อเชื่อมต่อ
ดาวน์โหลดข้อมูลและสมุดบันทึก
แท็บใหม่จะเปิดขึ้นพร้อมหน้า Landing Page ของ JupyterLab สร้างเทอร์มินัลใหม่ใน JupyterLab
ในหน้าต่างเทอร์มินัล ให้เรียกใช้คำสั่งเหล่านี้เพื่อไปยังโฟลเดอร์ข้อมูล และดาวน์โหลดสมุดบันทึกและข้อมูลที่คุณจะใช้สำหรับส่วนที่เหลือของห้องทดลอง
cd data/ git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples
ที่เก็บนี้ประกอบด้วยชุดตัวอย่างที่มีการดูแลจัดการพร้อมข้อมูลและสมุดบันทึกที่มีคำอธิบายประกอบ ไปที่โฟลเดอร์ data/examples/titanic-ml-dataset/
ในแถบด้านข้าง และเปิดสมุดบันทึก titanic_dataset_ml.ipynb
สำรวจโค้ด ML ในชาเลนจ์เรือไททานิก
เรียกใช้สมุดบันทึกทีละขั้นตอน โปรดทราบว่าโค้ดล้มเหลวเนื่องจากไม่มีไลบรารี
กลับไปที่เทอร์มินัลและติดตั้งไลบรารีที่ขาดหายไป
pip3 install --user seaborn
รีสตาร์ทเคอร์เนลของสมุดบันทึกโดยคลิกไอคอนรีเฟรช
เรียกใช้เซลล์อีกครั้งด้วยการติดตั้งไลบรารีที่ถูกต้องและดูการทำงานสำเร็จ
แปลงสมุดบันทึกเป็นไปป์ไลน์ Kubeflow
เปิดใช้ Kale โดยคลิกไอคอน Kubeflow ในแผงด้านซ้าย
สำรวจทรัพยากร Dependency ต่อเซลล์ ดูว่าหลายเซลล์เป็นส่วนหนึ่งของขั้นตอนไปป์ไลน์เดียวได้อย่างไร และวิธีที่ขั้นตอนของไปป์ไลน์อาจขึ้นอยู่กับขั้นตอนก่อนหน้า
คลิกปุ่มคอมไพล์และเรียกใช้
ดูความคืบหน้าของสแนปชอต
ดูความคืบหน้าของการเรียกใช้ไปป์ไลน์
คลิกลิงก์เพื่อไปยัง UI ไปป์ไลน์ Kubeflow และดูการเรียกใช้
โปรดรอให้การดำเนินการเสร็จสมบูรณ์
ยินดีด้วย คุณเพิ่งเรียกใช้ Kubeflow Pipeline ตั้งแต่ต้นจนจบโดยเริ่มต้นจากสมุดบันทึก
5. ความสามารถในการทำซ้ำด้วยสแนปชอตของวอลุ่ม
ตรวจสอบผลลัพธ์
ดูบันทึกสำหรับผลลัพธ์ของขั้นตอนที่ 2 ถึงขั้นสุดท้ายในบันทึก โปรดสังเกตว่าตัวคาดการณ์ทั้งหมดแสดงคะแนนเป็น 100% นักวิทยาศาสตร์ข้อมูลที่มากประสบการณ์จะดูน่าสงสัยทันที ข้อมูลนี้เป็นตัวชี้วัดที่ดีว่าโมเดลของเราไม่ได้แปลงเป็นข้อมูลทั่วไป แต่กลับมีชุดข้อมูลการฝึกมากเกินไป ซึ่งน่าจะเกิดจากปัญหาเกี่ยวกับข้อมูลที่โมเดลใช้
จำลองสถานะก่อนหน้า
โชคดีที่ Rok จะดูแลการกำหนดเวอร์ชันข้อมูลและจำลองสภาพแวดล้อมทั้งหมดให้เหมือนกับที่คุณคลิกปุ่มคอมไพล์และเรียกใช้ วิธีนี้ทำให้คุณมีเครื่องย้อนเวลาสำหรับข้อมูลและโค้ด มาทำให้สถานะของไปป์ไลน์กลับมาทำงานอีกครั้งกันก่อนที่จะฝึกโมเดล 1 โมเดลและดูว่าเกิดอะไรขึ้น ลองดูขั้นตอน randomforest จากนั้นคลิกอาร์ติแฟกต์
ทำตามขั้นตอนในมาร์กดาวน์ กล่าวคือ ดูภาพรวมใน Rok UI โดยคลิกลิงก์ที่เกี่ยวข้อง
คัดลอก URL ของ Rok
ไปที่ลิงก์เซิร์ฟเวอร์สมุดบันทึก
คลิกเซิร์ฟเวอร์ใหม่
วาง URL ของ Rok ที่คัดลอกไว้ก่อนหน้านี้แล้วคลิกปุ่มป้อนข้อความอัตโนมัติ
ระบุชื่อให้สมุดบันทึก
ตรวจสอบว่าคุณได้เลือกรูปภาพนี้แล้ว
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
คลิกเปิดเพื่อสร้างเซิร์ฟเวอร์สมุดบันทึก
เมื่อเซิร์ฟเวอร์สมุดบันทึกพร้อมใช้งาน ให้คลิกเชื่อมต่อเพื่อเชื่อมต่อ
โปรดทราบว่าสมุดบันทึกจะเปิดขึ้นในเซลล์ของขั้นตอนไปป์ไลน์ที่คุณสร้างขึ้น
ในเบื้องหลัง Kale ได้ทำให้สมุดบันทึกกลับมาทำงานอีกครั้งด้วยการนำเข้าไลบรารีทั้งหมดและโหลดตัวแปรจากขั้นตอนก่อนหน้า
แก้ไขข้อบกพร่องสถานะก่อนหน้า
เพิ่มคำสั่งพิมพ์ลงในเซลล์นี้
print(acc_random_forest)
เรียกใช้เซลล์ที่ใช้งานอยู่โดยกด Shift + Return เพื่อฝึกฟอเรสต์แบบสุ่มอีกครั้งและพิมพ์คะแนน เท่ากับ 100
ตอนนี้ถึงเวลาดูว่ามีสิ่งแปลกๆ ในข้อมูลการฝึกหรือไม่ หากต้องการสำรวจและแก้ไขปัญหานี้ ให้เพิ่มเซลล์เหนือเครื่องหมาย Random Forest โดยเลือกเซลล์ก่อนหน้า แล้วคลิกไอคอนบวก (+)
เพิ่มข้อความต่อไปนี้และเรียกใช้เซลล์เพื่อพิมพ์ชุดการฝึก
train_df
อ๊ะ คอลัมน์ที่มีป้ายกำกับการฝึก ("รอดแล้ว") รวมอยู่ในฟีเจอร์อินพุตด้วยความผิดพลาด โมเดลได้เรียนรู้วิธีเน้นที่ "การรอดชีวิต" ทำงานแบบไม่ต้องสนใจเนื้อหาที่เหลือ ซึ่งจะก่อให้เกิดมลพิษต่ออินพุต คอลัมน์นี้ตรงกับเป้าหมายของโมเดลทุกประการและไม่ปรากฏระหว่างการคาดการณ์ ดังนั้นจึงต้องนำออกจากชุดข้อมูลการฝึกเพื่อให้โมเดลเรียนรู้จากฟีเจอร์อื่นๆ
เพิ่มแก้ไขข้อบกพร่อง
หากต้องการนำคอลัมน์นี้ออก ให้แก้ไขเซลล์เพื่อเพิ่มคำสั่งนี้
train_df.drop('Survived', axis=1, inplace=True) train_df
เปิดใช้ Kale และตรวจสอบว่าเซลล์ที่นําป้ายกำกับ Survived ออกเป็นส่วนหนึ่งของขั้นตอนไปป์ไลน์ featureengineering (ควรมีสีโครงร่างเดียวกัน)
เรียกใช้ไปป์ไลน์อีกครั้งโดยคลิกปุ่มคอมไพล์และเรียกใช้
คลิกลิงก์เพื่อไปยัง UI ไปป์ไลน์ Kubeflow และดูการเรียกใช้
รอให้ขั้นตอนผลลัพธ์เสร็จสมบูรณ์ และดูบันทึกเพื่อดูผลลัพธ์สุดท้าย ตอนนี้คุณมีคะแนนการคาดการณ์ที่สมจริงแล้ว
6. ล้างข้อมูล
ทำลาย MiniKF VM
ไปที่เครื่องมือจัดการการทำให้ใช้งานได้ในคอนโซล GCP และลบการทำให้ใช้งานได้ minikf-1
7. ขอแสดงความยินดี
ยินดีด้วย คุณใช้เวิร์กโฟลว์วิทยาศาสตร์ข้อมูลแบบครบวงจรโดยใช้ Kubeflow (MiniKF), Kale และ Rok สำเร็จแล้ว
สิ่งที่ต้องทำต่อไป
เข้าร่วมชุมชน Kubeflow
- github.com/kubeflow
- Kubeflow Slack
- kubeflow-discuss@googlegroups.com
- พูดคุยกับชุมชนในวันอังคาร