บทช่วยสอนการไหลของอากาศ TFX

ภาพรวม

ภาพรวม

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

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

แท็กซี่.jpg

ชิคาโก.png

คุณจะใช้ ชุดข้อมูล Taxi Trips ที่เผยแพร่โดยเมืองชิคาโก

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

ลูกค้าจะให้ทิปมากหรือน้อยกว่า 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 เป็นเครื่องเสมือนที่เต็มไปด้วยเครื่องมือการพัฒนา มีโฮมไดเร็กทอรีถาวรขนาด 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

คุณแสดงรายการรหัสโปรเจ็กต์ได้ด้วยคำสั่งนี้: 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 คลิก สมุดบันทึกใหม่

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

จุดยอด-โน๊ตบุ๊ค-สร้าง-2.png

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

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

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

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

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

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

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

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

โคลนพื้นที่เก็บข้อมูลในห้องปฏิบัติการ

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

หมายเหตุ: หากได้รับแจ้ง คลิก 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. สำหรับ Protocols and ports ให้คลิกที่ 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

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

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

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

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

dag-home-full.png

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

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

เรียกท่อส่งรถแท็กซี่

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

dag-buttons.png

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

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

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

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