ภาพรวม
ภาพรวม
บทช่วยสอนนี้ออกแบบมาเพื่อช่วยให้คุณเรียนรู้วิธีสร้างไปป์ไลน์การเรียนรู้ของเครื่องของคุณเองโดยใช้ 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 ด้วยตนเอง
Orchestrator เริ่มต้นอื่นๆ ที่สนับสนุนโดย TFX ได้แก่ Apache Beam และ Kubeflow Apache Beam สามารถทำงานบนแบ็กเอนด์การประมวลผลข้อมูลหลายตัว (Beam Ruunners) Cloud Dataflow เป็นบีมรันเนอร์ประเภทหนึ่งที่สามารถใช้สำหรับรันไปป์ไลน์ TFX Apache Beam สามารถใช้กับไปป์ไลน์ทั้งการสตรีมและการประมวลผลแบบแบตช์
Kubeflow เป็นแพลตฟอร์ม ML แบบโอเพ่นซอร์สที่ทุ่มเทให้กับการปรับใช้เวิร์กโฟลว์แมชชีนเลิร์นนิง (ML) บน Kubernetes ที่เรียบง่าย พกพาสะดวก และปรับขนาดได้ สามารถใช้ Kubeflow เป็นออร์เคสตราสำหรับไปป์ไลน์ TFFX เมื่อจำเป็นต้องปรับใช้บนคลัสเตอร์ Kubernetes นอกจากนี้ คุณยังสามารถใช้ ออเคสตราเตอร์ของคุณเอง เพื่อเรียกใช้ไปป์ไลน์ TFX
อ่านเพิ่มเติมเกี่ยวกับ Airflow ที่นี่
ชุดข้อมูลแท็กซี่ชิคาโก
คุณจะใช้ ชุดข้อมูล Taxi Trips ที่เผยแพร่โดย City of Chicago
เป้าหมายแบบจำลอง - การจำแนกประเภทไบนารี
ลูกค้าจะให้ทิปมากหรือน้อยกว่า 20%?
ตั้งค่าโครงการ Google Cloud
ก่อนที่คุณจะคลิกปุ่มเริ่มแล็บ โปรดอ่านคำแนะนำเหล่านี้ แล็บหมดเวลาและคุณไม่สามารถหยุดชั่วคราวได้ ตัวจับเวลาซึ่งเริ่มต้นเมื่อคุณคลิก Start Lab จะแสดงระยะเวลาที่ทรัพยากร Google Cloud จะพร้อมใช้งานสำหรับคุณ
ห้องปฏิบัติการเชิงปฏิบัตินี้ช่วยให้คุณทำกิจกรรมในห้องปฏิบัติการได้ด้วยตนเองในสภาพแวดล้อมระบบคลาวด์จริง ไม่ใช่ในสภาพแวดล้อมจำลองหรือสาธิต ซึ่งทำได้โดยการให้ข้อมูลรับรองชั่วคราวใหม่แก่คุณ ซึ่งคุณใช้ในการลงชื่อเข้าใช้และเข้าถึง Google Cloud ในช่วงระยะเวลาของแล็บ
สิ่งที่คุณต้องการ ในการทำแล็บนี้ให้เสร็จสมบูรณ์ คุณต้องมี:
- เข้าถึงอินเทอร์เน็ตเบราว์เซอร์มาตรฐาน (แนะนำเบราว์เซอร์ Chrome)
- ได้เวลาทำแล็บ
วิธีเริ่มแล็บและลงชื่อเข้าใช้ Google Cloud Console 1. คลิกปุ่ม เริ่มแล็บ หากคุณต้องการชำระค่าห้องปฏิบัติการ ป๊อปอัปจะเปิดขึ้นเพื่อให้คุณเลือกวิธีการชำระเงิน ทางด้านซ้ายคือแผงที่มีข้อมูลรับรองชั่วคราวที่คุณต้องใช้สำหรับแล็บนี้
- คัดลอกชื่อผู้ใช้ แล้วคลิก เปิด Google Console ห้องปฏิบัติการหมุนทรัพยากร จากนั้นเปิดแท็บอื่นที่แสดงหน้า ลงชื่อเข้า ใช้
เคล็ดลับ: เปิดแท็บในหน้าต่างแยกกัน เคียงข้างกัน
- ในหน้า ลงชื่อเข้า ใช้ ให้วางชื่อผู้ใช้ที่คุณคัดลอกมาจากแผงด้านซ้าย จากนั้นคัดลอกและวางรหัสผ่าน
- คลิกผ่านหน้าต่อไปนี้:
- ยอมรับข้อกำหนดและเงื่อนไข
อย่าเพิ่มตัวเลือกการกู้คืนหรือการรับรองความถูกต้องด้วยสองปัจจัย (เนื่องจากเป็นบัญชีชั่วคราว)
อย่าสมัครทดลองใช้ฟรี
หลังจากนั้นสักครู่ Cloud Console จะเปิดขึ้นในแท็บนี้
เปิดใช้งาน Cloud Shell
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
คุณสามารถแสดงรายการ ID โครงการด้วยคำสั่งนี้: 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 ให้คลิก New Notebook
ในเมนูปรับแต่งอินสแตนซ์ เลือก TensorFlow Enterprise และเลือกเวอร์ชันของ TensorFlow Enterprise 2.x (พร้อม LTS) > ไม่มี GPU
ในกล่องโต้ตอบ อินสแตนซ์สมุดบันทึกใหม่ คลิกไอคอนดินสอเพื่อ แก้ไข คุณสมบัติของอินสแตนซ์
สำหรับ ชื่ออินสแตนซ์ ให้ป้อนชื่อสำหรับอินสแตนซ์ของคุณ
สำหรับ Region เลือก
us-east1
และสำหรับ Zone เลือกโซนภายในภูมิภาคที่เลือกเลื่อนลงไปที่การกำหนดค่าเครื่อง และเลือก e2-standard-2 สำหรับประเภทเครื่อง
ปล่อยให้ฟิลด์ที่เหลือเป็นค่าเริ่มต้น แล้วคลิก สร้าง
หลังจากนั้นไม่กี่นาที คอนโซล Vertex AI จะแสดงชื่ออินสแตนซ์ของคุณ ตามด้วย Open Jupyterlab
- คลิก เปิด JupyterLab หน้าต่าง JupyterLab จะเปิดขึ้นในแท็บใหม่
ตั้งค่าสภาพแวดล้อม
โคลนที่เก็บห้องปฏิบัติการ
ต่อไป คุณจะโคลนที่เก็บ tfx
ในอินสแตนซ์ JupyterLab ของคุณ 1. ใน JupyterLab คลิกไอคอน เทอร์มินัล เพื่อเปิดเทอร์มินัลใหม่
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
- สำหรับ โปรโตคอลและพอร์ต คลิกที่
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/dags/
เพื่อหาวัตถุ DAG
หากคุณเปิด ~/airflow/dags/taxi_pipeline.py
และเลื่อนลงไปด้านล่าง คุณจะเห็นว่ามันสร้างและจัดเก็บวัตถุ DAG ในตัวแปรชื่อ DAG
ดังนั้นมันจะแสดงเป็นไปป์ไลน์ในโฮมเพจการไหลของอากาศดังที่แสดงด้านล่าง:
หากคุณคลิกที่แท็กซี่ คุณจะถูกนำไปยังมุมมองตารางของ 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
อ่านคำบรรยายและตรวจสอบให้แน่ใจว่าคุณเข้าใจสิ่งที่เกิดขึ้นในแต่ละเซลล์