ภาพรวม
ภาพรวม
บทช่วยสอนนี้ออกแบบมาเพื่อช่วยให้คุณเรียนรู้การสร้างไปป์ไลน์แมชชีนเลิร์นนิงของคุณเองโดยใช้ TensorFlow Extended (TFX) และ Apache Airflow เป็นผู้เรียบเรียง โดยทำงานบน Vertex AI Workbench และแสดงการผสานรวมกับ TFX และ TensorBoard รวมถึงการโต้ตอบกับ TFX ในสภาพแวดล้อม Jupyter Lab
คุณจะทำอะไร?
คุณจะได้เรียนรู้วิธีสร้างไปป์ไลน์ ML โดยใช้ TFX
- ไปป์ไลน์ TFX คือ Directed Acyclic Graph หรือ "DAG" เรามักจะเรียกไปป์ไลน์ว่า DAG
- ไปป์ไลน์ TFX มีความเหมาะสมเมื่อคุณจะปรับใช้แอปพลิเคชัน ML ที่ใช้งานจริง
- ไปป์ไลน์ TFX มีความเหมาะสมเมื่อชุดข้อมูลมีขนาดใหญ่หรืออาจขยายใหญ่ขึ้น
- ไปป์ไลน์ TFX มีความเหมาะสมเมื่อการฝึกอบรม/การให้บริการมีความสม่ำเสมอเป็นสิ่งสำคัญ
- ไปป์ไลน์ TFX มีความเหมาะสมเมื่อการจัดการเวอร์ชันสำหรับการอนุมานมีความสำคัญ
- Google ใช้ไปป์ไลน์ TFX สำหรับ ML ที่ใช้งานจริง
โปรดดู คู่มือผู้ใช้ TFX เพื่อเรียนรู้เพิ่มเติม
คุณจะปฏิบัติตามกระบวนการพัฒนา ML ทั่วไป:
- การนำเข้า ทำความเข้าใจ และทำความสะอาดข้อมูลของเรา
- คุณสมบัติทางวิศวกรรม
- การฝึกอบรม
- การวิเคราะห์ประสิทธิภาพของโมเดล
- ฟอง ล้าง ทำซ้ำ
- พร้อมสำหรับการผลิต
Apache Airflow สำหรับการจัดวางท่อ
ผู้ดำเนินการ TFX มีหน้าที่รับผิดชอบในการกำหนดเวลาส่วนประกอบของไปป์ไลน์ TFX โดยอิงตามการขึ้นต่อกันที่กำหนดโดยไปป์ไลน์ TFX ได้รับการออกแบบมาให้พกพาได้กับสภาพแวดล้อมและกรอบงานการประสานที่หลากหลาย หนึ่งในออเคสตราเริ่มต้นที่ TFX รองรับคือ Apache Airflow แล็บนี้สาธิตการใช้ Apache Airflow สำหรับการจัดการไปป์ไลน์ TFX Apache Airflow เป็นแพลตฟอร์มสำหรับเขียน กำหนดเวลา และตรวจสอบเวิร์กโฟลว์โดยทางโปรแกรม TFX ใช้ Airflow เพื่อสร้างเวิร์กโฟลว์เป็นกราฟอะไซคลิกโดยตรง (DAG) ของงาน อินเทอร์เฟซผู้ใช้ที่หลากหลายทำให้ง่ายต่อการเห็นภาพไปป์ไลน์ที่ใช้งานจริง ติดตามความคืบหน้า และแก้ไขปัญหาเมื่อจำเป็น เวิร์กโฟลว์ Apache Airflow ถูกกำหนดให้เป็นโค้ด ทำให้สามารถบำรุงรักษา กำหนดเวอร์ชันได้ ทดสอบได้ และทำงานร่วมกันได้มากขึ้น Apache Airflow เหมาะสำหรับไปป์ไลน์การประมวลผลเป็นชุด มันมีน้ำหนักเบาและง่ายต่อการเรียนรู้
ในตัวอย่างนี้ เราจะเรียกใช้ไปป์ไลน์ TFX บนอินสแตนซ์โดยการตั้งค่า Airflow ด้วยตนเอง
ออเคสตราเริ่มต้นอื่นๆ ที่ TFX รองรับ ได้แก่ Apache Beam และ Kubeflow Apache Beam สามารถทำงานบนแบ็คเอนด์การประมวลผลข้อมูลหลายตัว (Beam Ruunners) Cloud Dataflow คือบีมรันเนอร์ชนิดหนึ่งที่ใช้สำหรับการรันไปป์ไลน์ TFX ได้ Apache Beam สามารถใช้กับทั้งสตรีมมิ่งและไปป์ไลน์การประมวลผลแบบแบตช์
Kubeflow เป็นแพลตฟอร์ม ML แบบโอเพ่นซอร์สโดยเฉพาะเพื่อทำให้เวิร์กโฟลว์แมชชีนเลิร์นนิง (ML) ใช้งานบน Kubernetes ได้ง่าย พกพาสะดวก และปรับขนาดได้ Kubeflow สามารถใช้เป็นตัวประสานสำหรับไปป์ไลน์ TFFX ได้เมื่อจำเป็นต้องปรับใช้บนคลัสเตอร์ Kubernetes นอกจากนี้ คุณยังสามารถใช้ ตัวกำหนดออร์เคสตรา ที่คุณกำหนดเองเพื่อรันไปป์ไลน์ TFX ได้อีกด้วย
อ่านเพิ่มเติมเกี่ยวกับ Airflow ที่นี่
ชุดข้อมูลแท็กซี่ชิคาโก
คุณจะใช้ ชุดข้อมูล Taxi Trips ที่เผยแพร่โดยเมืองชิคาโก
เป้าหมายแบบจำลอง - การจำแนกไบนารี
ลูกค้าจะให้ทิปมากหรือน้อยกว่า 20% หรือไม่?
ตั้งค่าโครงการ Google Cloud
ก่อนที่คุณจะคลิกปุ่มเริ่มแล็บ โปรด อ่านคำแนะนำเหล่านี้ ห้องทดลองมีการกำหนดเวลาและคุณไม่สามารถหยุดชั่วคราวได้ ตัวจับเวลาซึ่งเริ่มต้นเมื่อคุณคลิก Start Lab จะแสดงระยะเวลาที่ทรัพยากร Google Cloud จะพร้อมใช้งานสำหรับคุณ
ห้องปฏิบัติการเชิงปฏิบัตินี้ช่วยให้คุณทำกิจกรรมห้องปฏิบัติการได้ด้วยตัวเองในสภาพแวดล้อมคลาวด์จริง ไม่ใช่ในสภาพแวดล้อมจำลองหรือสาธิต โดยให้ข้อมูลประจำตัวใหม่ชั่วคราวที่คุณใช้ในการลงชื่อเข้าใช้และเข้าถึง Google Cloud ตลอดระยะเวลาของแล็บ
สิ่งที่คุณต้องการ เพื่อให้ห้องปฏิบัติการนี้เสร็จสมบูรณ์ คุณต้องมี:
- เข้าถึงอินเทอร์เน็ตเบราว์เซอร์มาตรฐาน (แนะนำเบราว์เซอร์ Chrome)
- ถึงเวลาที่จะเสร็จสิ้นห้องปฏิบัติการ
วิธีเริ่มห้องปฏิบัติการของคุณและลงชื่อเข้าใช้ Google Cloud Console 1. คลิกปุ่ม เริ่มห้องปฏิบัติการ หากคุณต้องการชำระค่าห้องปฏิบัติการ จะมีป๊อปอัปเปิดขึ้นเพื่อให้คุณเลือกวิธีการชำระเงิน ทางด้านซ้ายเป็นแผงที่มีข้อมูลรับรองชั่วคราวที่คุณต้องใช้สำหรับแล็บนี้
- คัดลอกชื่อผู้ใช้ จากนั้นคลิก เปิด Google Console แล็บหมุนเวียนทรัพยากร จากนั้นเปิดแท็บอื่นที่แสดงหน้า ลงชื่อเข้าใช้
เคล็ดลับ: เปิดแท็บในหน้าต่างแยกกันแบบเคียงข้างกัน
- ในหน้า ลงชื่อ เข้าใช้ ให้วางชื่อผู้ใช้ที่คุณคัดลอกมาจากแผงด้านซ้าย จากนั้นคัดลอกและวางรหัสผ่าน
- คลิกผ่านหน้าถัดไป:
- ยอมรับข้อกำหนดและเงื่อนไข
อย่าเพิ่มตัวเลือกการกู้คืนหรือการตรวจสอบสิทธิ์แบบสองปัจจัย (เนื่องจากนี่เป็นบัญชีชั่วคราว)
อย่าลงทะเบียนเพื่อทดลองใช้ฟรี
หลังจากนั้นสักครู่ Cloud Console จะเปิดขึ้นในแท็บนี้
เปิดใช้งานคลาวด์เชลล์
Cloud Shell เป็นเครื่องเสมือนที่เต็มไปด้วยเครื่องมือการพัฒนา มีโฮมไดเร็กทอรีถาวรขนาด 5GB และทำงานบน Google Cloud Cloud Shell ให้สิทธิ์เข้าถึงทรัพยากร Google Cloud ของคุณโดยใช้บรรทัดคำสั่ง
ใน Cloud Console ที่แถบเครื่องมือด้านบนขวา ให้คลิกปุ่ม เปิดใช้งาน Cloud Shell
คลิก ดำเนินการต่อ
ใช้เวลาสักครู่ในการจัดเตรียมและเชื่อมต่อกับสภาพแวดล้อม เมื่อคุณเชื่อมต่อ คุณจะได้รับการรับรองความถูกต้องแล้ว และโครงการได้รับการตั้งค่าเป็น _PROJECT ID ของคุณ ตัวอย่างเช่น:
gcloud
เป็นเครื่องมือบรรทัดคำสั่งสำหรับ Google Cloud มีการติดตั้งไว้ล่วงหน้าบน Cloud Shell และรองรับการเติมแท็บให้สมบูรณ์
คุณสามารถแสดงรายการชื่อบัญชีที่ใช้งานได้ด้วยคำสั่งนี้:
gcloud auth list
(เอาท์พุต)
ใช้งานอยู่: * บัญชี: Student-01-xxxxxxxxxxxx@qwiklabs.net หากต้องการตั้งค่าบัญชีที่ใช้งานอยู่ ให้เรียกใช้: $ gcloud config set account
ACCOUNT
คุณแสดงรายการรหัสโปรเจ็กต์ได้ด้วยคำสั่งนี้: gcloud config list project
(Output)
[หลัก] โครงการ =
(ตัวอย่างเอาต์พุต)
[หลัก] โครงการ = qwiklabs-gcp-44776a13dea667a6
สำหรับเอกสารฉบับสมบูรณ์ของ gcloud โปรดดู ภาพรวมเครื่องมือบรรทัดคำสั่ง gcloud
เปิดใช้งานบริการ Google Cloud
- ใน Cloud Shell ให้ใช้ gcloud เพื่อเปิดใช้งานบริการที่ใช้ในแล็บ
gcloud services enable notebooks.googleapis.com
ปรับใช้อินสแตนซ์ Vertex Notebook
- คลิกที่ เมนูการนำทาง และไปที่ Vertex AI จากนั้นไปที่ Workbench
บนหน้าอินสแตนซ์ Notebook คลิก สมุดบันทึกใหม่
ในเมนูปรับแต่งอินสแตนซ์ ให้เลือก TensorFlow Enterprise และเลือกเวอร์ชันของ TensorFlow Enterprise 2.x (พร้อม LTS) > ไม่มี GPU
ในกล่องโต้ตอบ อินสแตนซ์สมุดบันทึกใหม่ คลิกไอคอนดินสอเพื่อ แก้ไข คุณสมบัติอินสแตนซ์
สำหรับ ชื่ออินสแตนซ์ ให้ป้อนชื่อสำหรับอินสแตนซ์ของคุณ
สำหรับ ภูมิภาค ให้เลือก
us-east1
และสำหรับ โซน ให้เลือกโซนภายในภูมิภาคที่เลือกเลื่อนลงไปที่การกำหนดค่าเครื่อง และเลือก e2-standard-2 สำหรับประเภทเครื่อง
ปล่อยฟิลด์ที่เหลือไว้ตามค่าเริ่มต้นแล้วคลิก สร้าง
หลังจากนั้นไม่กี่นาที คอนโซล Vertex AI จะแสดงชื่ออินสแตนซ์ของคุณ ตามด้วย Open Jupyterlab
- คลิก เปิด JupyterLab หน้าต่าง JupyterLab จะเปิดขึ้นในแท็บใหม่
ตั้งค่าสภาพแวดล้อม
โคลนพื้นที่เก็บข้อมูลในห้องปฏิบัติการ
ถัดไป คุณจะโคลนพื้นที่เก็บ tfx
ในอินสแตนซ์ JupyterLab ของคุณ 1. ใน JupyterLab คลิกไอคอน Terminal เพื่อเปิดเทอร์มินัลใหม่
Cancel
สำหรับการสร้างที่แนะนำ
- หากต้องการโคลนพื้นที่เก็บข้อมูล
tfx
Github ให้พิมพ์คำสั่งต่อไปนี้แล้วกด Enter
git clone https://github.com/tensorflow/tfx.git
- เพื่อยืนยันว่าคุณได้โคลนพื้นที่เก็บข้อมูลแล้ว ให้ดับเบิลคลิกที่ไดเร็กทอรี
tfx
และยืนยันว่าคุณสามารถดูเนื้อหาได้
ติดตั้งการพึ่งพาห้องปฏิบัติการ
- รันสิ่งต่อไปนี้เพื่อไปที่โฟลเดอร์
tfx/tfx/examples/airflow_workshop/taxi/setup/
จากนั้นรัน./setup_demo.sh
เพื่อติดตั้งการขึ้นต่อกันของแล็บ:
cd ~/tfx/tfx/examples/airflow_workshop/taxi/setup/
./setup_demo.sh
รหัสข้างต้นจะ
- ติดตั้งแพ็คเกจที่จำเป็น
- สร้างโฟลเดอร์
airflow
ในโฟลเดอร์โฮม - คัดลอกโฟลเดอร์
dags
จากtfx/tfx/examples/airflow_workshop/taxi/setup/
ไปยังโฟลเดอร์~/airflow/
- คัดลอกไฟล์ csv จาก
tfx/tfx/examples/airflow_workshop/taxi/setup/data
ไปที่~/airflow/data
กำลังกำหนดค่าเซิร์ฟเวอร์ Airflow
สร้างกฎไฟร์วอลล์เพื่อเข้าถึงเซิร์ฟเวอร์ airflow ในเบราว์เซอร์
- ไปที่
<a href="https://console.cloud.google.com/networking/firewalls/list">https://console.cloud.google.com/networking/firewalls/list</a>
และตรวจสอบให้แน่ใจ ชื่อโครงการถูกเลือกอย่างเหมาะสม - คลิกที่ตัวเลือก
CREATE FIREWALL RULE
ที่ด้านบน
ใน กล่องโต้ตอบสร้างไฟร์วอลล์ ให้ทำตามขั้นตอนด้านล่าง
- สำหรับ Name ให้ใส่
airflow-tfx
- สำหรับ ลำดับความสำคัญ เลือก
1
- สำหรับ เป้าหมาย ให้เลือก
All instances in the network
- สำหรับ ช่วง IPv4 ต้นทาง ให้เลือก
0.0.0.0/0
- สำหรับ Protocols and ports ให้คลิกที่
tcp
และป้อน7000
ในช่องถัดจากtcp
- คลิก
Create
เรียกใช้เซิร์ฟเวอร์ airflow จากเชลล์ของคุณ
ในหน้าต่าง Jupyter Lab Terminal ให้เปลี่ยนเป็นโฮมไดเร็กทอรี รันคำสั่ง airflow users create
เพื่อสร้างผู้ใช้ที่เป็นผู้ดูแลระบบสำหรับ Airflow:
cd
airflow users create --role Admin --username admin --email admin --firstname admin --lastname admin --password admin
จากนั้นรันคำสั่ง airflow webserver
และ airflow scheduler
เพื่อรันเซิร์ฟเวอร์ เลือกพอร์ต 7000
เนื่องจากได้รับอนุญาตผ่านไฟร์วอลล์
nohup airflow webserver -p 7000 &> webserver.out &
nohup airflow scheduler &> scheduler.out &
รับ IP ภายนอกของคุณ
- ใน Cloud Shell ให้ใช้
gcloud
เพื่อรับ IP ภายนอก
gcloud compute instances list
การเรียกใช้ DAG/ไปป์ไลน์
ในเบราว์เซอร์
เปิดเบราว์เซอร์แล้วไปที่ http://
- ในหน้าเข้าสู่ระบบ ให้ป้อนชื่อผู้ใช้ (
admin
) และรหัสผ่าน (admin
) ที่คุณเลือกเมื่อรันคำสั่งairflow users create
Airflow โหลด DAG จากไฟล์ต้นฉบับ Python มันรับแต่ละไฟล์และดำเนินการมัน จากนั้นจะโหลดวัตถุ DAG ใดๆ จากไฟล์นั้น ไฟล์ .py
ทั้งหมดที่กำหนดออบเจ็กต์ DAG จะแสดงรายการเป็นไปป์ไลน์ในหน้าแรกของ Airflow
ในบทช่วยสอนนี้ Airflow จะสแกนโฟลเดอร์ ~/airflow/dags/
เพื่อหาอ็อบเจ็กต์ DAG
หากคุณเปิด ~/airflow/dags/taxi_pipeline.py
และเลื่อนลงไปด้านล่าง คุณจะเห็นว่ามันสร้างและจัดเก็บวัตถุ DAG ในตัวแปรชื่อ DAG
ดังนั้นมันจะถูกแสดงเป็นไปป์ไลน์ในหน้าแรกของ airflow ดังที่แสดงด้านล่าง:
หากคุณคลิกที่แท็กซี่ คุณจะถูกนำไปยังมุมมองตารางของ DAG คุณสามารถคลิกตัวเลือก Graph
ที่ด้านบนเพื่อดูมุมมองกราฟของ DAG
เรียกท่อส่งรถแท็กซี่
ในหน้าแรก คุณจะเห็นปุ่มต่างๆ ที่สามารถใช้เพื่อโต้ตอบกับ DAG
ใต้ส่วนหัว ของการดำเนินการ ให้คลิกที่ปุ่ม ทริกเกอร์ เพื่อทริกเกอร์ไปป์ไลน์
ในหน้า DAG ของแท็กซี่ ให้ใช้ปุ่มทางด้านขวาเพื่อรีเฟรชสถานะของมุมมองกราฟของ DAG ในขณะที่ไปป์ไลน์ทำงาน นอกจากนี้ คุณยังสามารถเปิดใช้งาน การรีเฟรชอัตโนมัติ เพื่อสั่งให้ Airflow รีเฟรชมุมมองกราฟโดยอัตโนมัติเมื่อสถานะเปลี่ยนแปลง
คุณยังสามารถใช้ Airflow CLI ในเทอร์มินัลเพื่อเปิดใช้งานและทริกเกอร์ DAG ของคุณ:
# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>
# trigger
airflow trigger_dag <your DAG name>
รอให้ไปป์ไลน์เสร็จสมบูรณ์
หลังจากที่คุณทริกเกอร์ไปป์ไลน์ของคุณแล้ว ในมุมมอง DAG คุณสามารถดูความคืบหน้าของไปป์ไลน์ของคุณในขณะที่กำลังทำงานอยู่ ขณะที่แต่ละส่วนประกอบทำงาน สีเค้าร่างของส่วนประกอบในกราฟ DAG จะเปลี่ยนเพื่อแสดงสถานะ เมื่อส่วนประกอบเสร็จสิ้นการประมวลผล โครงร่างจะเปลี่ยนเป็นสีเขียวเข้มเพื่อแสดงว่าเสร็จสิ้นแล้ว
ทำความเข้าใจกับส่วนประกอบต่างๆ
ตอนนี้เราจะดูส่วนประกอบของไปป์ไลน์นี้โดยละเอียด และดูผลลัพธ์ที่สร้างโดยแต่ละขั้นตอนในไปป์ไลน์เป็นรายบุคคล
ใน JupyterLab ให้ไปที่
~/tfx/tfx/examples/airflow_workshop/taxi/notebooks/
เปิด notebook.ipynb
ดำเนินการแล็บต่อในสมุดบันทึก และเรียกใช้แต่ละเซลล์โดยคลิกปุ่ม เรียกใช้ ( ) ที่ด้านบนของหน้าจอ หรือคุณสามารถรันโค้ดในเซลล์ด้วย SHIFT + ENTER
อ่านเรื่องราวและให้แน่ใจว่าคุณเข้าใจสิ่งที่เกิดขึ้นในแต่ละเซลล์