برنامه نویسی

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

در این راهنما ، شما می آموزید که چگونه به سرعت یک محیط توسعه مجازی را برای پروژه های ML خود با استفاده از DevPod ایجاد کنید ، و چگونه می توانید آثار باستانی ML خود را به راحتی به عنوان یک مدل با استفاده از کیتوپ ها بسته بندی و به اشتراک بگذارید.

برای مهندسان یادگیری ماشین (ML) ، محیط های متناقض ، سوء استفاده از وابستگی و محدودیت های سخت افزاری محلی تنگناهای متداول هستند. این مسائل نه تنها پیشرفت را به تأخیر می اندازد بلکه مانع همکاری و سوار شدن می شود. تصور کنید که یک عضو تیم جدید را فقط برای صرف ساعت ها در تکرار محیط زیست سوار کنید. این یک اتلاف وقت بزرگ است. آیا راهی برای خروج از این آشفتگی وجود دارد؟

DevPod محیط های کانتینر شده و از قبل پیکربندی شده را ارائه می دهد که ورود به سیستم ، تضمین سازگاری و پشتیبانی از توسعه از راه دور را ارائه می دهد و تیم ها را قادر می سازد تا کارآمدتر کار کنند. این منبع باز و مستقل از زیرساخت ها است ، به این معنی که با پشته ای که تیم شما قبلاً از آن استفاده کرده و ترجیح می دهد کار می کند.

به طور مشابه ، ModelKits با اجازه دادن به توسعه دهندگان برای ایجاد یک مصنوعات واحد برای پروژه های ML خود که به راحتی به اشتراک گذاشته می شوند ، نسخه ، مدیریت و مستقر می شوند ، همکاری را تسهیل می کنند. با ذخیره سازی و نسخه سازی کانتینر ، سازمان ها می توانند اطمینان حاصل کنند که همه با جدیدترین مدل ها و تنظیمات کار می کنند. چک های مرتبط با هر نسخه ، امنیت برنامه توسعه یافته را تقویت می کند ، و قالب بسته بندی مبتنی بر Kitops به این معنی است که ModelKit شما با ابزارهایی که تیم شما به عشق و اعتماد رسیده است سازگار است.

نصب و پیکربندی devpod

می توانید با استفاده از ابزارهای خط فرمان ، DevPod را نصب و پیکربندی کنید. برای آسانتر کردن کارها ، راهنمای زیر از رابط کاربری گرافیکی (GUI) استفاده می کند. برای همکاری با DevPod ، باید به یک خوشه Kubernetes ، یک ارائه دهنده ابر یا یک ظرف Docker متصل شوید. از آنجا که Docker برای نصب و راه اندازی ساده ترین است ، شما DevPod خود را به یک ظرف Docker وصل می کنید.

  1. docker را بارگیری و نصب کنید.
  2. فایل اجرایی صحیح را از سایت رسمی بارگیری کرده و آن را نصب کنید.
  3. devpod را باز کنید و روی کلیک کنید + ایجاد دکمه برای ایجاد یک فضای کاری جدید.

صفحه نمایش فضای کاری DevPod

  1. در گفتگوی جدید که ظاهر می شود ، 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.
    

پیکربندی فضای کاری DevPod

  1. یک نام معنی دار برای فضای کاری خود در نام فضای کاری بخش

پیکربندی فضای کاری DevPod

  1. روی کلیک کنید فضای کاری ایجاد کنید دکمه برای ایجاد فضای کاری.

توجه: شما نیاز به در حال اجرا Docker دارید.

  1. اکنون باید یک جدید ببینید vscode پنجره یا یک صفحه وب با vscodeبشر
    vscode on devpod

اکنون شما می توانید از این فضای کاری تازه ایجاد شده برای پروژه خود استفاده کنید. می توانید نوشتن فیلمنامه خود را شروع کنید داده ها ، داده های تمیز را بارگیری کنید یا یک مدل ML را آموزش دهیدبشر شما می توانید از آن استفاده کنید که گویی ویرایشگر محلی شما است. بیایید از فضای کاری تازه ایجاد شده برای ایجاد یک طبقه بندی کننده با کیفیت شراب استفاده کنیم.

مدل طبقه بندی شراب را آموزش دهید

  1. مجموعه داده کیفیت شراب را از Kaggle بارگیری کنید و آن را ذخیره کنید winequality.csv در داخل dataset پوشه در فضای کاری شما.

  2. نصب کردن pandas وت scikit-learn و با اجرای دستورات زیر الزامات را مسدود کنید:

    pip install pandas scikit-learn
    pip freeze > requirements.txt
    
  3. یک فایل جدید ایجاد کنید ، 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}")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. اجرا 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 بپیوندید ، یا برای شروع کار راهنمای ما را بررسی کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا