เหตุใดจึงมีอยู่และใช้งานอย่างไรใน Beam Pipeline Components
TensorFlow Extended (TFX) เป็นแพลตฟอร์มแบบ end-to-end สำหรับการปรับใช้ไปป์ไลน์ ML ที่ใช้งานจริง
เวอร์ชันปัจจุบันของ ML Metadata ณ เวลาที่บทความนี้เผยแพร่คือ v0.22(tfx ก็คือ v0.22 เช่นกัน) API มีความสมบูรณ์เพียงพอที่จะรองรับการใช้งานและการปรับใช้กระแสหลักบนคลาวด์สาธารณะ Tensorflow Extended ใช้สิ่งนี้อย่างกว้างขวางสำหรับส่วนประกอบ เช่น การสื่อสารส่วนประกอบ การติดตาม Lineage และงานอื่นๆ
เราจะใช้งานไปป์ไลน์ง่ายๆ ที่เพิ่งจะสร้างสถิติและสคีมาสำหรับ csv ตัวอย่างของชุดข้อมูล Chicago Taxi Trips ที่มีชื่อเสียง มันเป็นไฟล์ขนาดเล็ก ~10mb และไปป์ไลน์สามารถทำงานได้ในเครื่อง
เรียกใช้หนึ่งครั้งแล้วเปิดไฟล์ metadata_store.db
เพื่อตรวจสอบ
ML Metadata จัดเก็บข้อมูลเกี่ยวกับ 3 สิ่ง:
- ข้อมูลเมตาเกี่ยวกับอาร์ติแฟกต์ที่สร้างขึ้น
- ข้อมูลเมตาเกี่ยวกับการดำเนินการของส่วนประกอบเหล่านี้ — ขั้นตอน
- ข้อมูลเมตาเกี่ยวกับไปป์ไลน์และข้อมูลเชื้อสายที่เกี่ยวข้อง
ส่วนประกอบ Apache Beam Pipeline TFX จะไม่ส่งผ่านส่วนไบนารีทั้งหมด (ที่จะประมวลผลโดย ParDo
พร้อม IO หลายตัว) โดยโหนดถัดไป แต่ URI ของสิ่งประดิษฐ์จะถูกส่งผ่านไปแทน โดยทั่วไป อาร์ติแฟกต์จะถูกจัดเก็บไว้ในระบบไฟล์บนคลาวด์บางประเภท เช่น ที่เก็บข้อมูลบนคลาวด์
แม้แต่ TFRecord tf.Exampleไฟล์ที่บันทึกไว้ก็ยังถูกมองว่าเป็นสิ่งประดิษฐ์ระดับกลาง มีไฟล์ gzip เพื่อประหยัดพื้นที่
> SELECT * FROM `Artifact`;
คุณจะเห็นว่าไดเร็กทอรีพาเรนต์ที่สร้างขึ้นทั้งหมดเหล่านี้ถูกจัดเก็บไว้ พร้อมด้วยตัวเลข (เพิ่มเติมเกี่ยวกับตัวเลขในภายหลัง) เวลาที่สร้างและอัปเดต
ในกรณีของ CsvExampleGen/examples/1
เรามีไดเร็กทอรีย่อย 2 ไดเร็กทอรี train
และ eval
ซึ่งจัดเก็บเป็นอาร์ติแฟกต์เดียวกัน ส่วน /examples ของเส้นทางนี้คือชื่อของส่วนที่สร้างขึ้นที่ example_gen
สร้างขึ้น (ดูที่โค้ดไปป์ไลน์) ซึ่ง statistics_gen
ใช้เป็นอินพุต
ค่า NULL อาจอยู่ระหว่างดำเนินการเนื่องจากร้านค้าอยู่ในเวอร์ชัน v0.xx คุณสามารถดูได้ใน การประกาศบัฟเฟอร์โปรโตคอลซอร์สโค้ดn สามารถเป็น UNKNOWN — PENDING — LIVE — MARKED_FOR_DELETION — DELETED
และชื่อนั้นก็คือชื่อ นอกเหนือจาก type_id
ตาราง Types
เทียบเท่ากับ type_id
ตามที่คาดไว้:
สิ่งประดิษฐ์สนับสนุนแผนที่ของคุณสมบัติเช่นกัน สิ่งเหล่านี้ถูกสรุปไว้ในตาราง ArtifactProperty
(เช่น เช็คซัมสำหรับไฟล์ TFRecord ที่บันทึกไว้ ซึ่งใช้ผ่าน TFX เพื่อแคชขั้นตอนกลาง)
- บริบทประกอบด้วยสิ่งประดิษฐ์ การดำเนินการ และเหตุการณ์หลายรายการ
- เหตุการณ์ ประกอบด้วยสิ่งประดิษฐ์และการดำเนินการ
- โดยทั่วไปการดำเนินการจะเป็นขั้นตอนไปป์ไลน์แบบสแตนด์อโลน
สำหรับการติดตามการดำเนินการของสิ่งประดิษฐ์และความสามารถในการติดตามเชื้อสาย (เช่น การบอกว่าโมเดลหรือสถิติใดสอดคล้องกับชุดข้อมูลหรือไปป์ไลน์ใดที่ทำงาน) เราต้องจัดการกับเหตุการณ์ บริบท และการดำเนินการ
- กิจกรรม เชื่อมโยง
artifact_ids
กับexecution_ids
- การดำเนินการติดตามเฉพาะ
type_ids
และการประทับเวลา - บริบทมีความสัมพันธ์
type_ids
กับการเรียกใช้ไปป์ไลน์และข้อมูลการประทับเวลา
ตาราง การดำเนินการคุณสมบัติ และ บริบทคุณสมบัติ มีข้อมูลเพิ่มเติมในรูปแบบคีย์ — ค่า
- ExecutionPropertiesมีการกำหนดค่าอินพุตและเอาต์พุตที่ส่งผ่านไปยังแต่ละส่วนประกอบ พร้อมด้วยไปป์ไลน์และไดเร็กทอรีรูทขั้นตอน และตำแหน่ง IO ของส่วนต่างๆ
- ContextPropertiesเชื่อมโยง
context_ids
กับชื่อส่วนประกอบไปป์ไลน์และการประทับเวลา
อาร์ติแฟกต์ที่สร้างขึ้นมีรูปแบบเดียวกันไม่มากก็น้อยสำหรับขั้นตอนอื่นๆ ของไปป์ไลน์ที่ใหญ่กว่า เช่น การตรวจสอบโมเดลและการอวยพร
การเข้าถึงข้อมูล
มีข้อมูลจำนวนมหาศาล เพียงสำหรับไปป์ไลน์ 3 ขั้นตอนง่ายๆ ที่ทำงานภายในเครื่อง ไปป์ไลน์นี้สามารถทำงานบนคลาวด์บนรันเนอร์ Dataflow
ได้ เช่น โดยมีการเปลี่ยนแปลงการกำหนดค่าขั้นต่ำ
ในสถานการณ์นี้ การใช้ข้อมูลที่จัดเก็บไว้ในฐานข้อมูลจะง่ายกว่ามาก แทนที่จะเรียกดูที่เก็บข้อมูลบนคลาวด์และ VM บนเซิร์ฟเวอร์ฟาร์ม
จากจุดนี้ไป คุณสามารถเชื่อมต่อกับที่เก็บข้อมูลเมตา ML จากการเชื่อมต่อ SQL โดยตรง หรือโดย gRPC (ผ่าน stub หรือการเรียกแบบเก่าธรรมดา) จากนั้น ก็เป็นเรื่องของการเลือกประเภทข้อมูลที่คุณต้องการตรวจสอบด้วยตนเอง นี่อาจเป็นสคีมาหรือโปรโตบัฟทางสถิติ เป็นต้น
โดยทั่วไป คุณจะต้องเข้าถึงตัวระบุทรัพยากรของทรัพยากรเท่านั้น คุณควรเข้าถึงได้ผ่าน URI เท่านั้นหากอยู่ในสภาพแวดล้อมเดียวกัน (เช่น โน้ตบุ๊กภายใน GCP Project VM)
ตัวอย่างการใช้งาน
สมมติว่าคุณมีไปป์ไลน์ที่ทำงานในช่วงเวลาหนึ่ง (หรือการทริกเกอร์ตามเหตุการณ์) และในบางครั้ง คุณต้องการดูสถิติข้อมูลของไปป์ไลน์ล่าสุดโดยเปรียบเทียบกับการทำงานครั้งก่อน
- คุณต้องมี StatisticsGen/statisticsสิ่งประดิษฐ์ของการเรียกใช้ไปป์ไลน์ 2 รายการที่แตกต่างกัน (นี่คือประเภท ExampleStatistics โดยมี
type_id
8) สามารถดูได้จากตารางArtifact
- คุณต้องเข้าถึงอาร์ติแฟกต์จากการเรียกใช้ไปป์ไลน์ที่ถูกต้องด้วย ตาราง
Attribution
เชื่อมโยงcontext_id
กับartifact_id
สิ่งเดียวที่ขาดหายไปคือระบุ 2context_id
ที่คุณต้องการเพื่อสร้างแบบสอบถามแบบใช้เลือกข้อมูลอย่างง่าย - ตาราง
Context
ยังมีข้อมูลการประทับเวลาด้วย ตัวอย่างเช่น แถวPipeline .2020–07–14T23:45:00.508181.StatisticsGen
มีcontext_id
5
รหัสบริบท 5 สอดคล้องกับรหัสวัตถุ 3 จากตารางการระบุแหล่งที่มา Artifact Id 3 เป็นสิ่งประดิษฐ์ทางสถิติที่เราต้องการ
โชคดีที่ไปป์ไลน์ kubeflow ทำการแสดงภาพนี้โดยอัตโนมัติแล้ว
บทสรุป
ตอนนี้คุณควรมีความเข้าใจอย่างแน่ชัดแล้วว่าที่เก็บข้อมูลเมตาของ ML ประกอบด้วยอะไรบ้าง และเหตุใดจึงเป็นองค์ประกอบที่มีประโยชน์ของระบบนิเวศ TFX
ขอบคุณที่อ่านจนจบ!