บทช่วยสอน TFX Airflow

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

ภาพรวม

ภาพรวม

บทช่วยสอนนี้ออกแบบมาเพื่อช่วยให้คุณเรียนรู้วิธีสร้างไปป์ไลน์การเรียนรู้ของเครื่องของคุณเองโดยใช้ 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 ที่นี่

ชุดข้อมูลแท็กซี่ชิคาโก

แท็กซี่.jpg

ชิคาโก้.png

คุณจะใช้ ชุดข้อมูล Taxi Trips ที่เผยแพร่โดย City of Chicago

เป้าหมายแบบจำลอง - การจำแนกประเภทไบนารี

ลูกค้าจะให้ทิปมากหรือน้อยกว่า 20%?

ตั้งค่าโครงการ Google Cloud

ก่อนที่คุณจะคลิกปุ่มเริ่มแล็บ โปรดอ่านคำแนะนำเหล่านี้ แล็บหมดเวลาและคุณไม่สามารถหยุดชั่วคราวได้ ตัวจับเวลาซึ่งเริ่มต้นเมื่อคุณคลิก Start Lab จะแสดงระยะเวลาที่ทรัพยากร Google Cloud จะพร้อมใช้งานสำหรับคุณ

ห้องปฏิบัติการเชิงปฏิบัตินี้ช่วยให้คุณทำกิจกรรมในห้องปฏิบัติการได้ด้วยตนเองในสภาพแวดล้อมระบบคลาวด์จริง ไม่ใช่ในสภาพแวดล้อมจำลองหรือสาธิต ซึ่งทำได้โดยการให้ข้อมูลรับรองชั่วคราวใหม่แก่คุณ ซึ่งคุณใช้ในการลงชื่อเข้าใช้และเข้าถึง Google Cloud ในช่วงระยะเวลาของแล็บ

สิ่งที่คุณต้องการ ในการทำแล็บนี้ให้เสร็จสมบูรณ์ คุณต้องมี:

  • เข้าถึงอินเทอร์เน็ตเบราว์เซอร์มาตรฐาน (แนะนำเบราว์เซอร์ Chrome)
  • ได้เวลาทำแล็บ

วิธีเริ่มแล็บและลงชื่อเข้าใช้ Google Cloud Console 1. คลิกปุ่ม เริ่มแล็บ หากคุณต้องการชำระค่าห้องปฏิบัติการ ป๊อปอัปจะเปิดขึ้นเพื่อให้คุณเลือกวิธีการชำระเงิน ทางด้านซ้ายคือแผงที่มีข้อมูลรับรองชั่วคราวที่คุณต้องใช้สำหรับแล็บนี้

qwiksetup1.png

  1. คัดลอกชื่อผู้ใช้ แล้วคลิก เปิด Google Console ห้องปฏิบัติการหมุนทรัพยากร จากนั้นเปิดแท็บอื่นที่แสดงหน้า ลงชื่อเข้า ใช้

qwiksetup2.png

เคล็ดลับ: เปิดแท็บในหน้าต่างแยกกัน เคียงข้างกัน

qwiksetup3.png

  1. ในหน้า ลงชื่อเข้า ใช้ ให้วางชื่อผู้ใช้ที่คุณคัดลอกมาจากแผงด้านซ้าย จากนั้นคัดลอกและวางรหัสผ่าน
  1. คลิกผ่านหน้าต่อไปนี้:
  2. ยอมรับข้อกำหนดและเงื่อนไข
  • อย่าเพิ่มตัวเลือกการกู้คืนหรือการรับรองความถูกต้องด้วยสองปัจจัย (เนื่องจากเป็นบัญชีชั่วคราว)

  • อย่าสมัครทดลองใช้ฟรี

หลังจากนั้นสักครู่ Cloud Console จะเปิดขึ้นในแท็บนี้

qwiksetup4.png

เปิดใช้งาน Cloud Shell

Cloud Shell เป็นเครื่องเสมือนที่เต็มไปด้วยเครื่องมือในการพัฒนา มีโฮมไดเร็กทอรี 5GB ถาวรและทำงานบน Google Cloud Cloud Shell ให้การเข้าถึงบรรทัดคำสั่งไปยังทรัพยากร Google Cloud ของคุณ

ใน Cloud Console ในแถบเครื่องมือด้านขวาบน ให้คลิกปุ่ม เปิดใช้งาน Cloud Shell

qwiksetup5.png

คลิกดำเนินการ ต่อ

qwiksetup6.png

ใช้เวลาสักครู่เพื่อจัดเตรียมและเชื่อมต่อกับสภาพแวดล้อม เมื่อคุณเชื่อมต่อแล้ว แสดงว่าคุณได้รับการรับรองความถูกต้องแล้ว และโครงการจะถูกตั้งค่าเป็น _PROJECT ID ของคุณ ตัวอย่างเช่น:

qwiksetup7.png

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

  1. ใน Cloud Shell ให้ใช้ gcloud เพื่อเปิดใช้งานบริการที่ใช้ในห้องปฏิบัติการ gcloud services enable notebooks.googleapis.com

ปรับใช้อินสแตนซ์ Vertex Notebook

  1. คลิกที่ เมนู นำทางและไปที่ Vertex AI จากนั้นไปที่ Workbench

จุดยอด-ai-workbench.png

  1. ในหน้าอินสแตนซ์ของ Notebook ให้คลิก New Notebook

  2. ในเมนูปรับแต่งอินสแตนซ์ เลือก TensorFlow Enterprise และเลือกเวอร์ชันของ TensorFlow Enterprise 2.x (พร้อม LTS) > ไม่มี GPU

จุดสุดยอดสมุดบันทึกสร้าง 2.png

  1. ในกล่องโต้ตอบ อินสแตนซ์สมุดบันทึกใหม่ คลิกไอคอนดินสอเพื่อ แก้ไข คุณสมบัติของอินสแตนซ์

  2. สำหรับ ชื่ออินสแตนซ์ ให้ป้อนชื่อสำหรับอินสแตนซ์ของคุณ

  3. สำหรับ Region เลือก us-east1 และสำหรับ Zone เลือกโซนภายในภูมิภาคที่เลือก

  4. เลื่อนลงไปที่การกำหนดค่าเครื่อง และเลือก e2-standard-2 สำหรับประเภทเครื่อง

  5. ปล่อยให้ฟิลด์ที่เหลือเป็นค่าเริ่มต้น แล้วคลิก สร้าง

หลังจากนั้นไม่กี่นาที คอนโซล Vertex AI จะแสดงชื่ออินสแตนซ์ของคุณ ตามด้วย Open Jupyterlab

  1. คลิก เปิด JupyterLab หน้าต่าง JupyterLab จะเปิดขึ้นในแท็บใหม่

ตั้งค่าสภาพแวดล้อม

โคลนที่เก็บห้องปฏิบัติการ

ต่อไป คุณจะโคลนที่เก็บ tfx ในอินสแตนซ์ JupyterLab ของคุณ 1. ใน JupyterLab คลิกไอคอน เทอร์มินัล เพื่อเปิดเทอร์มินัลใหม่

หมายเหตุ: หากได้รับแจ้ง ให้คลิก Cancel สำหรับบิวด์ที่แนะนำ

  1. หากต้องการโคลนที่เก็บ tfx Github ให้พิมพ์คำสั่งต่อไปนี้แล้วกด Enter
git clone https://github.com/tensorflow/tfx.git
  1. เพื่อยืนยันว่าคุณได้โคลนที่เก็บแล้ว ให้ดับเบิลคลิกที่ไดเร็กทอรี tfx และยืนยันว่าคุณสามารถดูเนื้อหาได้

repo-directory.png

ติดตั้งการพึ่งพาห้องปฏิบัติการ

  1. เรียกใช้สิ่งต่อไปนี้เพื่อไปที่ 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

การไหลของอากาศ-home.png

การกำหนดค่าเซิร์ฟเวอร์ Airflow

สร้างกฎไฟร์วอลล์เพื่อเข้าถึงเซิร์ฟเวอร์ airflow ในเบราว์เซอร์

  1. ไปที่ <a href="https://console.cloud.google.com/networking/firewalls/list">https://console.cloud.google.com/networking/firewalls/list</a> และตรวจสอบว่า มีการเลือกชื่อโครงการอย่างเหมาะสม
  2. คลิกที่ตัวเลือก CREATE FIREWALL RULE ที่ด้านบน

ไฟร์วอลล์-rule.png

ใน กล่องโต้ตอบสร้างไฟร์วอลล์ ให้ทำตามขั้นตอนด้านล่าง

  1. สำหรับ Name ให้ใส่ airflow-tfx
  2. สำหรับ ลำดับความสำคัญ ให้เลือก 1
  3. สำหรับ เป้าหมาย เลือก All instances in the network
  4. สำหรับ ช่วง IPv4 ต้นทาง ให้เลือก 0.0.0.0/0
  5. สำหรับ โปรโตคอลและพอร์ต คลิกที่ tcp และป้อน 7000 ในช่องถัดจาก tcp
  6. คลิก Create

สร้าง-ไฟร์วอลล์-dialog.png

เรียกใช้เซิร์ฟเวอร์ 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 ภายนอกของคุณ

  1. ใน Cloud Shell ให้ใช้ gcloud เพื่อรับ IP ภายนอก
gcloud compute instances list

gcloud-อินสแตนซ์-ip.png

เรียกใช้ DAG/ไปป์ไลน์

ในเบราว์เซอร์

เปิดเบราว์เซอร์และไปที่ http:// :7000

  • ในหน้าล็อกอิน ให้ป้อนชื่อผู้ใช้ ( admin ) และรหัสผ่าน ( admin ) ที่คุณเลือกเมื่อรันคำสั่ง airflow users create

airflow-login.png

Airflow โหลด DAG จากไฟล์ต้นฉบับ Python ใช้เวลาแต่ละไฟล์และดำเนินการ จากนั้นจะโหลดวัตถุ DAG ใดๆ จากไฟล์นั้น ไฟล์ . .py ทั้งหมดที่กำหนดวัตถุ DAG จะแสดงเป็นไปป์ไลน์ในหน้าแรกของการไหลของอากาศ

ในบทช่วยสอนนี้ Airflow จะสแกนโฟลเดอร์ ~/airflow/dags/ เพื่อหาวัตถุ DAG

หากคุณเปิด ~/airflow/dags/taxi_pipeline.py และเลื่อนลงไปด้านล่าง คุณจะเห็นว่ามันสร้างและจัดเก็บวัตถุ DAG ในตัวแปรชื่อ DAG ดังนั้นมันจะแสดงเป็นไปป์ไลน์ในโฮมเพจการไหลของอากาศดังที่แสดงด้านล่าง:

dag-home-full.png

หากคุณคลิกที่แท็กซี่ คุณจะถูกนำไปยังมุมมองตารางของ DAG คุณสามารถคลิกตัวเลือก Graph ด้านบนเพื่อรับมุมมองกราฟของ DAG

กระแสลม-dag-graph.png

ทริกเกอร์ไปป์ไลน์รถแท็กซี่

ในหน้าแรก คุณจะเห็นปุ่มที่สามารถใช้เพื่อโต้ตอบกับ DAG

dag-buttons.png

ภายใต้หัวข้อ การดำเนินการ คลิกที่ปุ่ม ทริก เกอร์เพื่อทริกเกอร์ไปป์ไลน์

ในหน้าแท็กซี่ DAG ให้ใช้ปุ่มทางด้านขวาเพื่อรีเฟรชสถานะของมุมมองกราฟของ DAG ขณะที่ไปป์ไลน์ทำงาน นอกจากนี้ คุณสามารถเปิดใช้การ รีเฟรชอัตโนมัติ เพื่อสั่งให้ Airflow รีเฟรชมุมมองกราฟโดยอัตโนมัติเมื่อสถานะเปลี่ยน

dag-ปุ่มรีเฟรช.png

คุณยังสามารถใช้ Airflow CLI ในเทอร์มินัลเพื่อเปิดใช้งานและทริกเกอร์ DAG ของคุณ:

# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>

# trigger
airflow trigger_dag <your DAG name>

รอให้ท่อส่งเสร็จสมบูรณ์

หลังจากที่คุณทริกเกอร์ไปป์ไลน์ของคุณแล้ว ในมุมมอง DAG คุณสามารถดูความคืบหน้าของไปป์ไลน์ของคุณในขณะที่กำลังทำงาน ขณะที่แต่ละส่วนประกอบทำงาน สีโครงร่างของส่วนประกอบในกราฟ DAG จะเปลี่ยนไปเพื่อแสดงสถานะ เมื่อส่วนประกอบเสร็จสิ้นการประมวลผล โครงร่างจะเปลี่ยนเป็นสีเขียวเข้มเพื่อแสดงว่าเสร็จสิ้น

dag-step7.png

ทำความเข้าใจกับส่วนประกอบ

ตอนนี้เราจะดูที่ส่วนประกอบของไปป์ไลน์นี้โดยละเอียด และดูทีละผลลัพธ์ที่ผลิตโดยแต่ละขั้นตอนในไปป์ไลน์

  1. ใน JupyterLab ไปที่ ~/tfx/tfx/examples/airflow_workshop/taxi/notebooks/

  2. เปิด notebook.ipynb โน๊ตบุ๊ค-ipynb.png

  3. ทำแล็บต่อในสมุดบันทึก และเรียกใช้แต่ละเซลล์โดยคลิก เรียกใช้ ( run-button.png ) ที่ด้านบนของหน้าจอ หรือคุณสามารถรันโค้ดในเซลล์ด้วย SHIFT + ENTER

อ่านคำบรรยายและตรวจสอบให้แน่ใจว่าคุณเข้าใจสิ่งที่เกิดขึ้นในแต่ละเซลล์