rubicon-ml เป็นเครื่องมือวิทยาศาสตร์ข้อมูลที่รวบรวมและจัดเก็บข้อมูลการฝึกโมเดลและการดำเนินการ เช่น พารามิเตอร์และผลลัพธ์ ในลักษณะที่ทำซ้ำและค้นหาได้ การบูรณาการ git
จะเชื่อมโยงอินพุตและเอาท์พุตเหล่านี้โดยตรงกับโค้ดโมเดลที่สร้างขึ้น เพื่อให้มั่นใจว่าทั้งนักพัฒนาและผู้มีส่วนได้ส่วนเสียสามารถตรวจสอบและทำซ้ำได้อย่างสมบูรณ์ ขณะทดลอง แดชบอร์ดทำให้ง่ายต่อการสำรวจ กรอง แสดงภาพ และแบ่งปันงานที่บันทึกไว้
ป.ล. หากคุณกำลังมองหา Rubicon ซึ่งเป็นสะพาน Java/ObjC Python ให้ไปที่สิ่งนี้แทน
rubicon-ml ประกอบด้วยสามส่วน:
fsspec
dash
intake
ใช้ rubicon_ml
เพื่อบันทึกอินพุตและเอาต์พุตของโมเดลเมื่อเวลาผ่านไป สามารถรวมเข้ากับโมเดลหรือไปป์ไลน์ Python ที่มีอยู่ได้อย่างง่ายดาย และรองรับทั้งการบันทึกพร้อมกัน (เพื่อให้สามารถบันทึกการทดลองหลายรายการพร้อมกันได้) และการสื่อสารแบบอะซิงโครนัสกับ S3 (ดังนั้นการอ่านและเขียนเครือข่ายจะไม่ถูกบล็อก)
ในขณะเดียวกัน ให้ตรวจสอบข้อมูลที่บันทึกไว้ภายในแดชบอร์ด Rubicon เป็นระยะๆ เพื่อควบคุมกระบวนการปรับแต่งโมเดลไปในทิศทางที่ถูกต้อง แดชบอร์ดช่วยให้คุณมองเห็นแนวโน้มได้อย่างรวดเร็วโดยการสำรวจและกรองผลลัพธ์ที่บันทึกไว้ และแสดงภาพว่าอินพุตโมเดลส่งผลต่อเอาท์พุตของโมเดลอย่างไร
เมื่อแบบจำลองพร้อมสำหรับการตรวจสอบ Rubicon จะทำให้การแบ่งปันชุดย่อยของข้อมูลกับผู้ตรวจสอบแบบจำลองและผู้มีส่วนได้ส่วนเสียเป็นเรื่องง่าย ทำให้พวกเขามีบริบทที่จำเป็นสำหรับการตรวจทานและอนุมัติแบบจำลองโดยสมบูรณ์
ลองดูสมุดบันทึกแบบโต้ตอบใน Binder นี้เพื่อลองใช้ rubicon_ml
ด้วยตัวคุณเอง
นี่เป็นตัวอย่างง่ายๆ:
from rubicon_ml import Rubicon
rubicon = Rubicon (
persistence = "filesystem" , root_dir = "/rubicon-root" , auto_git_enabled = True
)
project = rubicon . create_project (
"Hello World" , description = "Using rubicon to track model results over time."
)
experiment = project . log_experiment (
training_metadata = [ SklearnTrainingMetadata ( "sklearn.datasets" , "my-data-set" )],
model_name = "My Model Name" ,
tags = [ "my_model_name" ],
)
experiment . log_parameter ( "n_estimators" , n_estimators )
experiment . log_parameter ( "n_features" , n_features )
experiment . log_parameter ( "random_state" , random_state )
accuracy = rfc . score ( X_test , y_test )
experiment . log_metric ( "accuracy" , accuracy )
จากนั้นสำรวจโครงการโดยเรียกใช้แดชบอร์ด:
rubicon_ml ui --root-dir /rubicon-root
หากต้องการดูภาพรวมทั้งหมด โปรดไปที่เอกสาร หากคุณมีข้อเสนอแนะหรือพบข้อบกพร่อง โปรดเปิดปัญหา
ไลบรารี Python มีอยู่ใน Conda Forge ผ่าน conda
และ PyPi ผ่าน pip
conda config --add channels conda-forge
conda install rubicon-ml
หรือ
pip install rubicon-ml
โปรเจ็กต์ใช้ conda เพื่อจัดการสภาพแวดล้อม ขั้นแรกให้ติดตั้ง conda จากนั้นใช้ conda เพื่อตั้งค่าสภาพแวดล้อมการพัฒนา:
conda env create -f environment.yml
conda activate rubicon-ml-dev
สุดท้าย ให้ติดตั้ง rubicon_ml
ภายในเครื่องในสภาพแวดล้อมที่สร้างขึ้นใหม่
pip install -e " .[all] "
การทดสอบจะแยกออกเป็นการทดสอบหน่วยและการทดสอบบูรณาการ สามารถทำงานได้โดยตรงในสภาพแวดล้อม dev ที่เปิดใช้งานผ่าน pytest tests/unit
หรือ pytest tests/integration
หรือเพียงแค่เรียกใช้ pytest
เพื่อดำเนินการทั้งหมด
หมายเหตุ : การทดสอบการรวมบางรายการมี marked
เพื่อควบคุมเมื่อเรียกใช้ (เช่น ไม่ใช่ระหว่าง CICD) การทดสอบเหล่านี้รวมถึง:
การทดสอบการรวมที่เขียนไปยังระบบไฟล์จริง - ภายในและ S3 ไฟล์ในเครื่องจะถูกเขียนไปที่ ./test-rubicon
โดยสัมพันธ์กับตำแหน่งที่ทำการทดสอบ ต้องระบุเส้นทาง S3 เพื่อรันการทดสอบเหล่านี้ ตามค่าเริ่มต้น การทดสอบเหล่านี้จะถูกปิดใช้งาน หากต้องการเปิดใช้งาน ให้รัน:
pytest -m "write_files" --s3-path "s3://my-bucket/my-key"
การทดสอบบูรณาการที่รันโน้ตบุ๊ก Jupyter การทดสอบเหล่านี้ช้ากว่าการทดสอบอื่นๆ ในชุดโปรแกรมเล็กน้อยเนื่องจากจำเป็นต้องเปิดเซิร์ฟเวอร์ Jupyter โดยค่าเริ่มต้น จะเปิดใช้งานอยู่ หากต้องการปิดใช้งานให้รัน:
pytest -m "not run_notebooks and not write_files"
หมายเหตุ : เมื่อรัน pytest
เพียงอย่างเดียว -m "not write_files"
จะเป็นค่าเริ่มต้น ดังนั้นเราจึงจำเป็นต้องใช้เมื่อปิดใช้งานการทดสอบโน้ตบุ๊ก
ติดตั้งและกำหนดค่าการคอมมิตล่วงหน้าเพื่อรัน black
, flake8
และ isort
โดยอัตโนมัติระหว่างการคอมมิต:
pre-commit install
เพื่อตั้งค่าสคริปต์ git hook ตอนนี้ pre-commit
จะทำงานโดยอัตโนมัติบนคอมไพล์คอมมิต และจะทำให้มั่นใจว่ามีรูปแบบโค้ดที่สอดคล้องกันตลอดทั้งโปรเจ็กต์ คุณสามารถจัดรูปแบบโดยไม่ต้องกระทำผ่าน pre-commit run
หรือข้ามการตรวจสอบเหล่านี้ด้วย git commit --no-verify