- รหัสหรือชื่อการทดสอบ
- รันไอดี
- พารามิเตอร์และค่า
- ตัวชี้วัดและค่านิยม
- แท็ก
- คุณลักษณะอื่นๆ ที่เกี่ยวข้องกับการรัน
การรันสามารถกรองตามสถานะ เวลาเริ่มต้น เวลาสิ้นสุด และระยะเวลาได้โดยใช้ MLflow search API ทำให้ง่ายต่อการกรองการวิ่งหลายรอบและค้นหาการวิ่งเฉพาะที่ผู้ใช้สนใจ
ฟังก์ชั่นการค้นหา MLflow
ใช้ฟังก์ชัน mlflow.search_runs() เพื่อเข้าถึง API การค้นหา MLflow ฟังก์ชันนี้ยอมรับอาร์กิวเมนต์ที่หลากหลายดังต่อไปนี้:
- รหัสหรือชื่อการทดสอบ
- กรองสตริงหรือข้อความ
- จำนวนการรันสูงสุดที่จะส่งคืนระบุโดยอาร์กิวเมนต์ max_results
รูปแบบที่เรียบง่ายของ SQL (Structured Query Language) WHERE clause คือสตริงตัวกรองหรือข้อความ สามารถใช้เพื่อระบุเกณฑ์ที่เราต้องการเรียงลำดับการวิ่ง
ไวยากรณ์ของฟังก์ชัน MLflow Search_Runs()
รหัสจริงหรือชื่อของการทดสอบที่เราต้องการค้นหาจะต้องแทนที่ด้วย 'experiment_id หรือ comparison_name' ในตัวอย่างต่อไปนี้ ตัวแปร search_criteria ช่วยให้สามารถป้อนเกณฑ์การค้นหาได้ตามต้องการ เกณฑ์เหล่านี้อาจกำหนดโดยเมตริก แท็ก พารามิเตอร์ หรือคุณลักษณะเพิ่มเติม ไวยากรณ์พื้นฐานของฟังก์ชัน search_runs() เป็นดังนี้:
# นำเข้า API การค้นหา mlflow เพื่อใช้ฟังก์ชัน search_runs
นำเข้า มลโฟลว์
# ระบุรหัสหรือชื่อการทดสอบ (เป็นทางเลือก; )
exp_id = 'รหัสการทดสอบหรือ NAME'
# กำหนดเกณฑ์การค้นหาสำหรับการวิ่ง
ค้นหา_สตริง = 'metrics.accuracy > 0.8 และ params.learning_rate = '0.01' และ params.efficiency_rate > '80''
#ดำเนินการค้นหา
วิ่ง = มลโฟลว์ ค้นหา_รัน ( การทดลอง_ids = exp_id , filter_string = ค้นหา_สตริง )
#แสดงผลลัพธ์
พิมพ์ ( 'ผลการค้นหา:' )
พิมพ์ ( วิ่ง )
ดำเนินการค้นหาโดยใช้เกณฑ์จำนวนมาก
1. ค้นหาตามค่าเมตริก
การรันสามารถกรองได้ด้วยค่าของตัววัดเฉพาะโดยใช้ช่องตัววัดใน API การค้นหา MLflow ชุดชื่อเมตริกที่คั่นด้วยเครื่องหมายจุลภาคจะปรากฏในช่องเมตริก ตัวอย่างเช่น สตริงตัวกรองต่อไปนี้ค้นหาการรันทั้งหมดที่มีค่าความแม่นยำมากกว่า 0.9:
เมตริก ความแม่นยำ > 0.9
รายการเมตริกทั้งหมดที่พร้อมใช้งานในช่องเมตริกมีดังนี้:
- ความแม่นยำ
- อค
- f1
- ความแม่นยำ
- จำ
- แผนที่
- ล็อกลอส
- การจำแนกประเภท_ข้อผิดพลาด
- multi_class_logloss
นอกจากนี้ ผู้ใช้สามารถกรองการรันตามช่วงค่าของเมตริกโดยใช้ฟิลด์เมตริก ตัวอย่างเช่น สตริงตัวกรองถัดไปจะค้นหาการทำงานทั้งหมดที่มีการวัดความแม่นยำด้วยค่าระหว่าง 0.4 ถึง 0.8:
เมตริก ความแม่นยำ ระหว่าง 0.4 และ 0.8
ในช่องหน่วยเมตริก ตัวดำเนินการ AND และ OR รวมหน่วยเมตริกเพื่อค้นหาการทำงานที่มีความแม่นยำของหน่วยเมตริกและค่า f1 ที่สูงกว่า 0.3 และ 0.8:
เมตริก ความแม่นยำ > 0.3 และตัวชี้วัด f1 > 0.82. ค้นหาตามค่าพารามิเตอร์
ใช้ช่องพารามิเตอร์ใน API การค้นหา MLflow เพื่อทำการค้นหาด้วยค่าพารามิเตอร์ ชื่อและค่าพารามิเตอร์แสดงอยู่ในฟิลด์พารามิเตอร์โดยใช้เครื่องหมายจุลภาค ในตัวอย่างนี้ สตริงตัวกรองที่กล่าวมาข้างต้นค้นหาตำแหน่งการรันทั้งหมดด้วยพารามิเตอร์ num_boost_round ที่มีค่า 100:
พารามิเตอร์ num_boost_round = '100'ตัวอย่างเพิ่มเติมของสตริงการค้นหาสำหรับค่าพารามิเตอร์:
- params.num_boost_round = 900
- params.learning_rate ระหว่าง 0.001 ถึง 0.01
- params.num_boost_round=’70’ และ params.learning_rate=’0.01′
3. ค้นหาด้วยแท็ก
นี่คือตัวอย่างการค้นหาโดยใช้แท็ก:
ค้นหา_เกณฑ์ = 'tags.mlflow.source.type = 'พจนานุกรม''ตัวอย่างค่า Matric และพารามิเตอร์เพื่อดำเนินการฟังก์ชัน Mlflow.search_runs()
มาดูตัวอย่างการตั้งค่าการทดสอบ MLflow การดำเนินการบันทึก จากนั้นใช้ mlflow.search_runs() เพื่อเริ่มต้นการค้นหา เพื่อให้เข้าใจโค้ดโดยสมบูรณ์ ให้ทำตามขั้นตอนเหล่านี้:
ขั้นตอนที่ 1: สร้างการทดลอง MLflow
เราเริ่มต้นด้วยการตั้งค่าการทดสอบ MLflow โดยจะดึงข้อมูลการทดสอบที่มีอยู่หากมีการทดสอบอยู่แล้ว ถ้าไม่เช่นนั้นก็จะสร้างใหม่
คำอธิบายรหัส:
ไลบรารี MLflow จะถูกนำเข้าในบรรทัดแรกของโค้ด และ Experiment_name ถูกตั้งค่าเป็น “My First MLflow Experiment” ในบรรทัดถัดไป เมื่อส่ง Experiment_name ไปยังฟังก์ชัน “mlflow.get_experiment_by_name” ฟังก์ชันนั้นจะส่งคืน “None” หากไม่มีการทดสอบและวัตถุของการทดสอบเป็นอย่างอื่น
ตรวจสอบการมีอยู่ของการทดลองในคำสั่งแบบมีเงื่อนไข หากมีการทดสอบอยู่แล้ว ให้ตั้งค่าการทดลอง_id มิฉะนั้น ให้ใช้ 'mlflow.create_experiment' เพื่อสร้างการทดสอบใหม่ รหัสการทดสอบจะถูกส่งกลับโดยฟังก์ชันนี้ แสดงรหัสการทดสอบบนคอนโซลหรือหน้าจอเทอร์มินัลเมื่อสิ้นสุดการทดสอบ คัดลอกโค้ดต่อไปนี้ลงในแผ่นจดบันทึกและบันทึกไฟล์ด้วยชื่อที่ต้องการและมีนามสกุล “.py”:
# นำเข้าไลบรารี mlflowนำเข้า มลโฟลว์
# สร้างหรือดึงข้อมูลการทดสอบ
exp_name = 'การทดลอง MLflow ครั้งแรกของฉัน'
# ดึงข้อมูลการทดลองตามชื่อโดยใช้ฟังก์ชัน mlflow get_experiment_by_name
ประสบการณ์ = มลโฟลว์ get_experiment_by_name ( exp_name )
# ตรวจสอบว่าไม่มีการทดสอบอยู่แล้ว
ถ้า ประสบการณ์ เป็น ไม่มี : :
# สร้างการทดลองใหม่และส่งชื่อการทดลองไปที่ฟังก์ชัน mlflow.create_experiment
exp_id = มลโฟลว์ create_experiment ( exp_name )
# แสดงข้อความแสดงความสำเร็จบนหน้าจอ
พิมพ์ ( 'ไม่มีการทดลอง สร้างการทดสอบสำเร็จแล้ว!' )
อื่น : :
# ดึงข้อมูลการทดลอง_idของการทดสอบที่มีอยู่
exp_id = ประสบการณ์ การทดลอง_id
พิมพ์ ( 'มีการทดลองแล้ว!' )
# แสดงรหัสการทดสอบ
พิมพ์ ( 'รหัสการทดสอบ:' , exp_id )
ตอนนี้ ให้เปิดโปรแกรมในหน้าต่างพร้อมรับคำสั่งหรือหน้าต่างเทอร์มินัลโดยใช้คอมไพเลอร์ Python แล้วพิมพ์ “Python” จากนั้นชื่อไฟล์ซึ่งในกรณีนี้คือ “MyFirstMlflowExperiment.py” เมื่อเรียกใช้การทดสอบครั้งแรก ยังไม่มีการทดสอบดังกล่าว ดังนั้น MLFlow จึงสร้างรหัสการทดลองขึ้นและพิมพ์รหัสการทดลองบนหน้าจอคอนโซล:
เรียกใช้โค้ดอีกครั้งเพื่อยืนยันว่าไม่ได้สร้างการทดสอบใหม่และเพื่อแสดงรหัสของการทดสอบที่มีอยู่แล้ว ภาพหน้าจอต่อไปนี้แสดงว่ามีการทดสอบอยู่แล้ว:
ขั้นตอนที่ 2: บันทึกการวิ่งด้วยหน่วยวัดและพารามิเตอร์
ตอนนี้เรามาลองบันทึกการทำงานด้วยเมตริกและพารามิเตอร์สำหรับการทดสอบที่เพิ่งสร้างขึ้นกันดีกว่า ในสถานการณ์จริง เราพัฒนาโมเดลการเรียนรู้ของเครื่องและบันทึกข้อมูลที่เกี่ยวข้อง เช่น ตัวชี้วัดและพารามิเตอร์ เมื่อสิ้นสุดการดำเนินการแต่ละครั้ง ในที่นี้ ความแม่นยำจะถูกใช้เป็นค่าเมทริกซ์ และในกรณีนี้คือ 0.95 ค่าพารามิเตอร์สำหรับการเรียนรู้และอัตราประสิทธิภาพคือ 0.01 และ 90 ตามลำดับ นี่คือรหัส:
# เริ่มเรียกใช้ MLflow เพื่อบันทึกเมตริกและพารามิเตอร์กับ มลโฟลว์ start_run ( การทดลอง_id = exp_id ) : :
# รหัสการเรียนรู้ของเครื่องของคุณที่นี่ (นี่เป็นเพียงตัวอย่างจำลอง)
รุ่น_ความแม่นยำ = 0.95
อัตราการเรียนรู้ของเครื่องจักร = 0.01
ประสิทธิภาพ_อัตรา = 90
# บันทึกตัวชี้วัดและพารามิเตอร์
มลโฟลว์ log_metric ( 'ความแม่นยำ' , รุ่น_ความแม่นยำ )
มลโฟลว์ log_param ( 'อัตราการเรียนรู้' , อัตราการเรียนรู้ของเครื่องจักร )
มลโฟลว์ log_param ( 'ประสิทธิภาพ_อัตรา' , ประสิทธิภาพ_อัตรา )
ผลลัพธ์เมื่อรันโค้ดข้างต้นจะแสดงที่นี่ ผลลัพธ์ก็เหมือนเดิม:
ขั้นตอนที่ 3: ทำการค้นหาโดยใช้ Mlflow.search_runs()
สุดท้ายนี้ เราจะทำการค้นหาการวิ่งที่บันทึกไว้โดยใช้พารามิเตอร์บางตัว และแสดงผลลัพธ์บนหน้าจอเทอร์มินัล:
# กำหนดเกณฑ์การค้นหาสำหรับการวิ่งDefin_search_criteria = 'metrics.accuracy > 0.8 และ params.learning_rate = '0.01' และ params.efficiency_rate = '90''
#ดำเนินการค้นหา
วิ่ง = มลโฟลว์ ค้นหา_รัน ( การทดลอง_ids = exp_id , filter_string = Defin_search_criteria )
#แสดงผลลัพธ์
พิมพ์ ( 'ผลการค้นหา:' )
พิมพ์ ( วิ่ง )
คำเตือนที่เกี่ยวข้องกับเครื่องมือ Git นั้นเกิดจากการเรียกใช้ฟังก์ชัน search_runs:
เพิ่มโค้ดที่ด้านบนของไฟล์ Python เพื่อปิดใช้งานคำเตือนนี้ นี่คือส่วนสั้น ๆ ของรหัส:
นำเข้า คุณ
คุณ . ประมาณ [ 'GIT_PYTHON_REFRESH' ] = 'เงียบ'
ฟังก์ชัน “mlflow.search_runs” จะดำเนินการได้สำเร็จเมื่อมีการเพิ่มบรรทัดโค้ดเหล่านี้:
บทสรุป
ฟังก์ชัน “mlflow.search_runs” ช่วยให้ผู้ใช้สามารถสำรวจและประเมินการทดลองของแมชชีนเลิร์นนิงได้อย่างรวดเร็ว วิเคราะห์การทำงานจำนวนมาก และระบุรูปแบบหรือแบบจำลองไฮเปอร์พารามิเตอร์ที่เหมาะสมที่สุดซึ่งส่งผลให้เกิดผลลัพธ์ที่ต้องการ เป็นเครื่องมือที่มีประสิทธิภาพในการดูแล วางแผน และวิเคราะห์เวิร์กโฟลว์แมชชีนเลิร์นนิง