تسریع در توسعه ML با devpods و modelkits

در این راهنما ، شما می آموزید که چگونه به سرعت یک محیط توسعه مجازی را برای پروژه های ML خود با استفاده از DevPod ایجاد کنید ، و چگونه می توانید آثار باستانی ML خود را به راحتی به عنوان یک مدل با استفاده از کیتوپ ها بسته بندی و به اشتراک بگذارید.
برای مهندسان یادگیری ماشین (ML) ، محیط های متناقض ، سوء استفاده از وابستگی و محدودیت های سخت افزاری محلی تنگناهای متداول هستند. این مسائل نه تنها پیشرفت را به تأخیر می اندازد بلکه مانع همکاری و سوار شدن می شود. تصور کنید که یک عضو تیم جدید را فقط برای صرف ساعت ها در تکرار محیط زیست سوار کنید. این یک اتلاف وقت بزرگ است. آیا راهی برای خروج از این آشفتگی وجود دارد؟
DevPod محیط های کانتینر شده و از قبل پیکربندی شده را ارائه می دهد که ورود به سیستم ، تضمین سازگاری و پشتیبانی از توسعه از راه دور را ارائه می دهد و تیم ها را قادر می سازد تا کارآمدتر کار کنند. این منبع باز و مستقل از زیرساخت ها است ، به این معنی که با پشته ای که تیم شما قبلاً از آن استفاده کرده و ترجیح می دهد کار می کند.
به طور مشابه ، ModelKits با اجازه دادن به توسعه دهندگان برای ایجاد یک مصنوعات واحد برای پروژه های ML خود که به راحتی به اشتراک گذاشته می شوند ، نسخه ، مدیریت و مستقر می شوند ، همکاری را تسهیل می کنند. با ذخیره سازی و نسخه سازی کانتینر ، سازمان ها می توانند اطمینان حاصل کنند که همه با جدیدترین مدل ها و تنظیمات کار می کنند. چک های مرتبط با هر نسخه ، امنیت برنامه توسعه یافته را تقویت می کند ، و قالب بسته بندی مبتنی بر Kitops به این معنی است که ModelKit شما با ابزارهایی که تیم شما به عشق و اعتماد رسیده است سازگار است.
نصب و پیکربندی devpod
می توانید با استفاده از ابزارهای خط فرمان ، DevPod را نصب و پیکربندی کنید. برای آسانتر کردن کارها ، راهنمای زیر از رابط کاربری گرافیکی (GUI) استفاده می کند. برای همکاری با DevPod ، باید به یک خوشه Kubernetes ، یک ارائه دهنده ابر یا یک ظرف Docker متصل شوید. از آنجا که Docker برای نصب و راه اندازی ساده ترین است ، شما DevPod خود را به یک ظرف Docker وصل می کنید.
- docker را بارگیری و نصب کنید.
- فایل اجرایی صحیح را از سایت رسمی بارگیری کرده و آن را نصب کنید.
- devpod را باز کنید و روی کلیک کنید + ایجاد دکمه برای ایجاد یک فضای کاری جدید.
-
در گفتگوی جدید که ظاهر می شود ، Docker را به عنوان ارائه دهنده خود و پایتون به عنوان مترجم انتخاب کنید. اگر VScode نصب شده اید ، می توانید انتخاب کنید vscode به عنوان ویرایشگر پیش فرض یا از VScode در مرورگر با انتخاب استفاده کنید مرورگر VScodeبشر
You can also provide your own container image with all the necessary libraries installed via the **Enter Workspace Source.** Developers can then start working directly without the hassle of installing common libraries and tools.
- یک نام معنی دار برای فضای کاری خود در نام فضای کاری بخش
- روی کلیک کنید فضای کاری ایجاد کنید دکمه برای ایجاد فضای کاری.
توجه: شما نیاز به در حال اجرا Docker دارید.
- اکنون باید یک جدید ببینید vscode پنجره یا یک صفحه وب با vscodeبشر
اکنون شما می توانید از این فضای کاری تازه ایجاد شده برای پروژه خود استفاده کنید. می توانید نوشتن فیلمنامه خود را شروع کنید داده ها ، داده های تمیز را بارگیری کنید یا یک مدل ML را آموزش دهیدبشر شما می توانید از آن استفاده کنید که گویی ویرایشگر محلی شما است. بیایید از فضای کاری تازه ایجاد شده برای ایجاد یک طبقه بندی کننده با کیفیت شراب استفاده کنیم.
مدل طبقه بندی شراب را آموزش دهید
-
مجموعه داده کیفیت شراب را از Kaggle بارگیری کنید و آن را ذخیره کنید
winequality.csv
در داخلdataset
پوشه در فضای کاری شما. -
نصب کردن
pandas
وتscikit-learn
و با اجرای دستورات زیر الزامات را مسدود کنید:pip install pandas scikit-learn pip freeze > requirements.txt
-
یک فایل جدید ایجاد کنید ،
train.py
برای آموزش و ذخیره مدل نهایی. پرونده باید حاوی کد زیر باشد:
# Importing necessary libraries
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
import joblib
# Load the dataset
file_path="dataset/winequality.csv" # Update with the correct file path if needed
df = pd.read_csv(file_path)
# Preprocessing: Separate features and target
X = df.drop('quality', axis=1)
y = df['quality']
# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train a Random Forest Classifier
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
# Evaluate the model
y_pred = model.predict(X_test)
print("Classification Report:")
print(classification_report(y_test, y_pred))
# Save the model to disk
model_path="saved_model/wine_quality_model.pkl" # Specify the desired path to save the model
joblib.dump(model, model_path)
print(f"Model saved to {model_path}")
- اجرا
train.py
اسکریپت با استفاده ازpython train.py
بشر اکنون باید مدل ذخیره شده نهایی را در آن ببینیدsaved_model
دایرکتوری
در این مرحله ، ساختار دایرکتوری شما باید چیزی شبیه به این باشد:
.
├── dataset
│ └── winequality.csv
├── requirements.txt
├── saved_model
│ └── wine_quality_model.pkl
└── train.py
بسته بندی و به اشتراک گذاری با ModelKit
پس از آموزش مدل شما ، مرحله بعدی بسته بندی و به اشتراک گذاری آن است. ModelKit این فرآیند را با بسته بندی کد ، مجموعه داده ها و مدل ها در یک بسته سازگار با OCI که سازگاری و امنیت را تقویت می کند ، ساده می کند.
مزایای اصلی ModelKit
-
بسته بندی کنترل شده و کنترل شده نسخه:
تمام مصنوعات پروژه را در یک بسته نرم افزاری با نسخه و چک های SHA برای یکپارچگی ترکیب کنید. -
ادغام یکپارچه:
با ثبت های سازگار با OCI (به عنوان مثال ، Docker Hub و Jozu Hub) کار می کند و با ابزارهای محبوب مانند Huggingface ، ZENML و GIT ادغام می شود. -
مدیریت وابستگی بی دردسر:
وابستگی های کشتی در کنار کد برای اجرای بدون دردسر.
نحوه استفاده از ModelKit
نصب کیت آسان است زیرا تمام کاری که شما باید انجام دهید بارگیری بسته ، Unarchive IT و انتقال کیت اجرایی به مکانی است که سیستم عامل شما می تواند آن را پیدا کند. در یک تصویر کانتینر بر اساس لینوکس ، می توانید با اجرای دستورات زیر به این هدف برسید:
wget https://github.com/jozu-ai/kitops/releases/latest/download/kitops-linux-x86_64.tar.gz
tar -xzvf kitops-linux-x86_64.tar.gz
sudo mv kit /usr/local/bin/
نصب خود را با اجرای دستور تأیید کنید kit version
بشر خروجی شما باید چیزی شبیه به این باشد:
Version: 0.2.5-29dbdc4
Commit: 29dbdc48bf2b5f9ee801d6454974e0b8474e916b
Built: 2024-06-06T17:53:35Z
Go version: go1.21.6
پس از نصب کیت ، برای مشخص کردن اجزای مختلف کد خود که نیاز به بسته بندی دارند ، باید یک کیتفیل بنویسید. برای ایجاد یک فایل جدید می توانید از هر ویرایشگر متن استفاده کنید Kitfile
بدون هیچ گونه پسوند و جزئیات زیر را وارد کنید:
manifestVersion: "1.0"
package:
name: Wine Classification
version: 0.0.1
authors: ["Bhuwan Bhatt"]
model:
name: wine-classification-v1
path: ./saved_model
description: Wine classification using sklearn
datasets:
- description: Dataset for the wine quality data
name: training data
path: ./dataset
code:
- description: Code for training
path: .
5 مؤلفه اصلی در قطعه کد در بالا وجود دارد:
- مانیفست: نسخه KitFile را مشخص می کند.
- بسته: ابرداده را برای بسته مشخص می کند.
- مدل: جزئیات مدل را که شامل نام مدل ، مسیر آن و توضیحات قابل خواندن انسانی است ، مشخص می کند.
- مجموعه داده ها: مشابه مدل ، مسیر ، نام و توضیحات را برای مجموعه داده ها مشخص کنید.
- کد: دایرکتوری حاوی کدی را که باید بسته بندی شود مشخص می کند.
پس از نصب ابزارهای خط فرمان کیت و آماده سازی KitFile ، باید وارد یک رجیستری کانتینر شوید. برای ورود به DockerHub ، از دستور زیر استفاده کنید:
kit login docker.io # Then enter details like username and password, password is hidden
سپس می توانید با استفاده از دستور زیر ، مصنوعات را در یک ModelKit بسته بندی کنید:
kit pack . -t docker.io//:
# Example: `kit pack . -t docker.io/bhattbhuwan13/wine_classification:v1`
سرانجام ، می توانید ModelKit را به مرکز از راه دور فشار دهید:
kit push docker.io//:
# Example: kit push docker.io/bhattbhuwan13/wine_classification:v1
اکنون ، توسعه دهندگان دیگر شما می توانند اجزای مورد نیاز را از ModelKit یا کل بسته در نمونه خود از DevPod با استفاده از یک دستور واحد بیرون بیاورند. آنها می توانند اجزای خاص را از ModelKit باز کنند:
kit unpack --datasets docker.io//:
# Example: kit unpack --datasets docker.io/bhattbhuwan13/wine_classification:v1
یا ، آنها می توانند کل ModelKit را در نمونه Devpod خود باز کنند:
kit unpack docker.io//:
# Example: kit unpack docker.io/bhattbhuwan13/wine_classification:v1
در این مرحله ، توسعه دهنده همکار شما می تواند تست های لازم را انجام دهد تا تأیید کند که مدل یا کد مطابق آنچه انتظار می رود کار می کند. هنگامی که آزمایشات با موفقیت انجام می شود ، می توانند یک ظرف با اجزای لازم (اسکریپت ها و مصنوعات مدل) ایجاد کنند و آن را به سمت رجیستری سوق دهند و باعث می شود خط لوله استقرار باعث ایجاد و استقرار آخرین مدل شود.
چرا این ابزارها خیلی خوب کار می کنند؟
با ترکیب DevPod با Kitops ModelKits می توانیم سه مزیت اصلی را تحقق بخشیم.
-
قوام در تیم ها: DevPods همه اعضای تیم را قادر می سازد تا در محیط های یکسان کار کنند. انعطاف پذیری برای راه اندازی DevPod در بالای ارائه دهندگان ابر و یک خوشه Kubernetes به تیم ها و سازمانها در تقویت فرآیند تخصیص منابع برای ماشین های فردی کمک می کند. ModelKits نحوه اشتراک پروژه ها را استاندارد می کند.
-
همکاری بهبود یافته: DevPods از پیش تنظیم شده و ModelKits بسته بندی شده را برای دستیابی به یکپارچه بین تیم ها به اشتراک بگذارید. سازمان ها می توانند یک تصویر کانتینر جدید با کیتوپ ها و کتابخانه های ML لازم (پاندا ، Scikit-Learn ، Pytorch و غیره) ایجاد کنند. سپس می توان از تصویر کانتینر برای راه اندازی نمونه های جدید با DevPod استفاده کرد. به این ترتیب ، همه توسعه دهندگان به یک محیط یکسان دسترسی خواهند داشت و در حال توسعه ، همکاری و به اشتراک گذاری مصنوعات پروژه با یکدیگر یا در بین تیم های عملکردی هستند.
-
راندمان پیشرفته: زمان تنظیم را کاهش داده و با خودکارسازی وابستگی ها و اشتراک آثار باستانی روی نوآوری تمرکز کنید.
با استفاده از این ابزارها ، می توانید توسعه را ساده تر کنید ، همکاری را تقویت کنید و استقرار را تسریع کنید.
منابع ما را کاوش کنید ، به مکالمه در Discord بپیوندید ، یا برای شروع کار راهنمای ما را بررسی کنید.