การเรียนรู้ของเครื่อง

วิธีใช้ 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 ที่ดีขึ้น เร็วขึ้น