การเรียนรู้ของเครื่อง
วิธีใช้ Comet Registry เพื่อติดตามโมเดล Machine Learning ของคุณ
บทช่วยสอนเกี่ยวกับพลังของ Comet Registry
เมื่อเร็วๆ นี้ ฉันสนุกกับการใช้ "Comet" ในการทดลอง และฉันรู้สึกประหลาดใจกับคุณสมบัติใหม่ๆ ที่ฉันค้นพบอยู่เสมอ วันนี้ฉันอยากจะพูดคุยกับคุณเกี่ยวกับความเป็นไปได้ที่ Comet มอบให้ในการติดตามโมเดล Machine Learning เพื่อส่งเข้าสู่การใช้งานจริง
สมมติว่าเราทำการทดลองต่างๆ มากมายเพื่อแก้ปัญหาบางอย่าง หลังจากการทดสอบหลายครั้ง เราก็เข้าใจว่ารุ่น X นั้นดีที่สุด และเราต้องการเลือกเป็นรุ่นที่ใช้งานจริง Comet ช่วยให้เราทำสิ่งนี้ได้ด้วยฟังก์ชันที่ รีจิสทรี มอบให้
Comet Registry คือที่ที่จัดเก็บโมเดลที่ลงทะเบียนไว้ทั้งหมด โมเดลที่ลงทะเบียนคือโมเดลที่บันทึกไว้ในโครงการ Comet มีข้อดีอย่างน้อยสองประการในการลงทะเบียนโมเดลใน Comet:
- ติดตามทุกขั้นตอนของโครงการของเรา
- ใช้ Registry เป็นที่เก็บข้อมูลที่ปลอดภัย
หากต้องการให้โมเดลพร้อมใช้งานใน Comet Registry ขั้นแรกเราจำเป็นต้องลงทะเบียนโมเดลดังกล่าว เราสามารถปฏิบัติตามสองกลยุทธ์ในการลงทะเบียนแบบจำลอง:
- ใช้
experiment.log_model(name, file_name)
— เมธอดของคลาสExperiment()
นี้จะบันทึกโมเดลเป็นอาร์ติแฟกต์ จากนั้นเราจำเป็นต้องเพิ่มโมเดลลงใน Registry ด้วยตนเอง - ใช้
experiment.register_model(MODEL_NAME)
— เมธอดของคลาสExperiment()
นี้จะลงทะเบียนการทดลองทั้งหมดและเพิ่มลงใน Registry
ในบทความนี้ ฉันจะอธิบายวิธีเพิ่มโมเดลลงใน Registry ผ่านเมธอด log_model()
บทความนี้ถูกจัดเรียงดังนี้:
- การตั้งค่าสถานการณ์
- บันทึกโมเดลใน Comet
- ลงทะเบียนโมเดลใน Comet
การตั้งค่าสถานการณ์
ในตัวอย่างนี้ เราจะสร้างโมเดลชุดข้อมูลเดียวกันกับโมเดล Machine Learning สองโมเดลที่แตกต่างกัน และเราจะใช้ Comet เพื่อเลือกโมเดลที่ดีที่สุด เพื่อเป็นชุดข้อมูลตัวอย่าง เราจะใช้ "ชุดข้อมูลโรคเบาหวาน" แบบคลาสสิกที่จัดทำโดยแพ็คเกจ scikit-learn Python
ประการแรก เรานำเข้าชุดข้อมูล:
from sklearn.datasets import load_diabetes diabetes_dataset = load_diabetes() X = diabetes_dataset.data y = diabetes_dataset.target
จากนั้น เราแบ่งมันออกเป็นชุดการฝึกและการทดสอบ โดยใช้ฟังก์ชัน train_test_split() ที่จัดทำโดย scikit-learn:
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)
บันทึกโมเดล
ตอนนี้เรากำหนดฟังก์ชันชื่อ run_experiment()
ที่ได้รับชื่อและวัตถุโมเดลเป็นอินพุต:
import numpy as np import pickle from comet_ml import Experiment from sklearn.linear_model import LinearRegression, LogisticRegression from sklearn import metrics def run_experiment(name, model): experiment = Experiment( api_key="MY_API_KEY", project_name="MY_PROJECT_NAME", workspace="MY_WORKSPACE", ) model.fit(X_train,y_train) file_name = name + '.pkl' with open(file_name, 'wb') as file: pickle.dump(model, file) y_pred = model.predict(X_test) RMSE = np.sqrt(metrics.mean_squared_error(y_test, y_pred)) experiment.log_metric("RMSE", RMSE) experiment.log_model(name, file_name)
ฟังก์ชั่นก่อนหน้านี้ดำเนินการดังต่อไปนี้:
- สร้างการทดสอบใหม่
- พอดีกับโมเดล
- ดัมพ์โมเดลไปยังไฟล์ผ่านแพ็คเกจของดอง
- คำนวณค่า Root Mean Squared Error (RMSE)
- บันทึกค่า RMSE และโมเดลใน Comet
โปรดทราบว่าเราได้ใช้เมธอด log_model()
เพื่อบันทึกโมเดลใน Comet ในกรณีนี้ เราได้บันทึกเฉพาะโมเดลเท่านั้น หากเราต้องการบันทึกการทดลองทั้งหมด เราจะต้องใช้วิธี register_model()
สุดท้ายนี้ เราเรียกใช้ฟังก์ชันที่กำหนดเพื่อทำการทดลองสองครั้ง ดังนี้:
model = LinearRegression() run_experiment('LinearRegression', model) model = LogisticRegression() run_experiment('LogisticnRegression', model)
เราได้สร้างแบบจำลองการถดถอยเชิงเส้นและแบบจำลองการถดถอยโลจิสติก เรารันโค้ดและเข้าถึงผลลัพธ์โดยตรงใน Comet
ทั้งสองอย่างใดจะทำงานได้ดีกว่า เรามาค้นหาคำตอบกัน!
เราสามารถเปรียบเทียบผลลัพธ์ของการทดลองทั้งสองได้โดยตรงในแดชบอร์ด Comet เราสามารถเลือกทั้งการทดลองแล้วเปรียบเทียบ RMSE ตามลำดับ:
การทดลองครั้งที่สอง (ซึ่งสอดคล้องกับการถดถอยเชิงเส้น) มีประสิทธิภาพเหนือกว่าการทดลองครั้งแรก
ต้องการดูการทำงานของ Comet เพิ่มเติมหรือไม่ ดูเซสชันการทำงาน วิดีโอสาธิต และอื่นๆ อีกมากมายใน "ช่อง YouTube" ของเรา
ลงทะเบียนโมเดล
ใต้ส่วนการทดลอง เรามีการทดลองสองรายการ การทดลองหนึ่งสำหรับการถดถอยเชิงเส้น และอีกการทดลองหนึ่งสำหรับการถดถอยโลจิสติก ดังแสดงในรูปต่อไปนี้:
เราคลิกที่การทดสอบแรก และเลือกแท็บสินทรัพย์และสิ่งประดิษฐ์
ภายใต้ไดเร็กทอรี models เราสามารถค้นหาไฟล์โมเดลเฉพาะได้ ดังแสดงในรูปต่อไปนี้:
เราสามารถดาวน์โหลดโมเดลได้หากต้องการ ทางด้านขวาของหน้าจอจะมีปุ่มชื่อ ลงทะเบียน เราสามารถคลิกเพื่อเพิ่มโมเดลลงใน Registry ได้ หน้าต่างต่อไปนี้จะเปิดขึ้น:
เราสามารถเพิ่มโมเดลลงใน Registry ที่มีอยู่หรือจะลงทะเบียนโมเดลใหม่ก็ได้ ในกรณีของเรา เราลงทะเบียนโมเดลใหม่
เราสามารถทำซ้ำขั้นตอนเดียวกันสำหรับการทดลองครั้งที่สอง แต่เมื่อเราต้องการเพิ่มแบบจำลองลงใน Registry เราจะบันทึกแบบจำลองนั้นลงในแบบจำลองที่มีอยู่ นั่นคือแบบจำลองก่อนหน้า ในกรณีนี้เราจำเป็นต้องเปลี่ยนเวอร์ชันของโมเดล เช่น 1.0.1.
ขณะนี้เราสามารถเข้าถึง Model Registry ได้จากแดชบอร์ดหลักของ Comet เราจำเป็นต้องออกจากโครงการปัจจุบัน เราควรมีทัศนะที่คล้ายกับความเห็นต่อไปนี้:
เราคลิกปุ่มดูโมเดล เรามีสองรุ่น:
ขณะนี้เราสามารถตั้งค่าระยะของเวอร์ชัน 1.0.1 ซึ่งสอดคล้องกับการถดถอยเชิงเส้นเป็นการใช้งานจริงได้โดยการคลิกลูกศรทางด้านซ้าย ดังที่แสดงในวิดีโอสั้นต่อไปนี้:
สรุป
ยินดีด้วย! คุณเพิ่งเรียนรู้วิธีใช้ Comet Registry เพื่อติดตาม Machine Learning Model ที่ดีที่สุดของคุณ!
การใช้ Comet Registry สามารถช่วยให้คุณรักษาโค้ดของคุณให้เป็นระเบียบและเป็นระเบียบได้ดี
หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Comet คุณสามารถอ่านบทความก่อนหน้าของฉันได้:
ขอให้มีความสุขในการเขียนโค้ด! สุขสันต์วันดาวหาง!
หมายเหตุบรรณาธิการ: Heartbeat เป็นสิ่งพิมพ์ออนไลน์ที่ขับเคลื่อนโดยผู้ร่วมให้ข้อมูลและชุมชนที่อุทิศให้กับการจัดหาทรัพยากรทางการศึกษาชั้นนำสำหรับวิทยาศาสตร์ข้อมูล การเรียนรู้ของเครื่อง และผู้ปฏิบัติงานด้านการเรียนรู้เชิงลึก เรามุ่งมั่นที่จะสนับสนุนและสร้างแรงบันดาลใจให้กับนักพัฒนาและวิศวกรจากทุกสาขาอาชีพ
Heartbeat เป็นอิสระด้านบรรณาธิการ สนับสนุนและเผยแพร่โดย Comet ซึ่งเป็นแพลตฟอร์ม MLOps ที่ช่วยให้นักวิทยาศาสตร์ข้อมูลและทีม ML สามารถติดตาม เปรียบเทียบ อธิบาย และเพิ่มประสิทธิภาพการทดลองของพวกเขา เราจ่ายเงินให้กับผู้ร่วมให้ข้อมูล และเราไม่ขายโฆษณา
หากคุณต้องการมีส่วนร่วม ตรงไปที่ เรียกผู้ร่วมให้ข้อมูล ของเรา คุณยังสามารถลงทะเบียนเพื่อรับจดหมายข่าวรายสัปดาห์ของเรา ("Deep Learning Weekly" และ "Comet Newsletter") เข้าร่วมกับเราที่ « ""Slack" และติดตาม Comet บน "Twitter" และ "LinkedIn" เพื่อดูแหล่งข้อมูล กิจกรรม และ อีกมากมายที่จะช่วยให้คุณสร้างโมเดล ML ที่ดีขึ้น เร็วขึ้น