اجرای مدل های بازارچه:

مدل های توسعه داده شده در ماتریکس علاوه بر سایت ماتریکس، به صورت API نیز  در دسترس هستند. به طور کلی دو روش برای استفاده از مدل های بازارچه هوش مصنوعی ماتریکس ماتریکس وجود دارد. 

  1. استفاده از کیت توسعه نرم افزار ماتریکس (Matrix SDK) در پایتون
  2. استفاده از API

اجرای مدل توسط SDK پایتون:

در ابتدا به تفاوت بین مفهوم و کاربرد API و SDK میپردازیم تا هدف نهایی Matrix SDK مشخص شود. همانطوری که میدانید API مخفف Application Programming Interface میباشد و ابزاری است که ارتباط بین اپلیکیشن های مختلف را با استفاده از سرویس های مختلفش امکان پذیر میکند. برای مثال یک برنامه اندروید با درخواست پردازش به API ماتریکس و بدون هیچ دانشی از مدل های موجود در ماتریکس می تواند داده خود را پردازش کند.

از طرفی دیگر (Software Development Kit (SDK مجموعه ای از ابزارها، مثالها و قطعه کدهایی برای توسعه دهندگان است که بر روی یک یا چند API ساخته می شود تا توسعه دهندگان پیاده سازی و استفاده از API را از ابتدا شروع نکنند. SDK ماتریس را می توان به سه بخش تقسیم کرد.

مرحله اول: نصب SDK

جهت نصب کیت توسعه ماتریکس ابتدا باید یک محیط مجازی پایتون (Virtual Environment) داخل سیستم خود بسازید. اگر از آناکوندا برای مدیریت پکیج های خود استفاده میکنید نیازی به ساخت محیط مجازی نیست. اگر با محیط مجازی آشنایی ندارید می توانید آموزش ساخت محیط مجازی را مشاهده کنید.

پس از مشخص شدن Interpreter پایتون، دستور زیر را جهت نصب SDK داخل ترمینال پایتون خود وارد کنید:

pip install matrix-sdk

پس از اجرای این دستور تمامی پکیج های مورد نیاز برای استفاده از کیت ماتریکس نصب خواهند شد. 

جهت حذف پکیج ماتریکس نیز می توانید از دستور زیر استفاده کنید:

pip uninstall matrix

مرحله دوم: ساخت اسکریپت پایتون

جهت ارتباط با ‌API ماتریکس باید از طریق وبسایت یک API Token دریافت کنید و مقدار آن را کپی کنید. اسکریپت client در matrix-sdk وظیفه درخواست به مدل مورد نظر را دارد. شما میتوانید با ساخت آبجکت client از کلاس Client موجود در sdk ماتریکس، درخواست اجرای مدل ها را انجام دهید. کلاس  Client  مقدار API Key و نام مدل را از شما می گیرد. جهت اطلاع از نام مدل مورد نظر خود می توانید از تابع get_repo_list موجود در matrix.client.request استفاده کنید. همچنین می توانید نام مدل مورد نظر خود را در بخش عامل های هوش مصنوعی و با انتخاب مدل خود پیدا کنید. 

from matrix.client.request import Client

MATRIX_TOKEN = "your api token"

model_name = "matrixai/text2image"

client = Client(MATRIX_TOKEN, model_name)

مرحله سوم (اختیاری): آپلود فایل ورودی جهت اجرای مدل

اگر مدل مورد نظر نیاز به فایل خاصی مثل image ,pdf و ... دارد ابتدا باید آن را آپلود نمایید. در پاسخ به درخواست آپلود شما لیست دریافت میکنید که شامل اسم هر فایل و آیدی مربوط به آن فایل در سرور ماتریس است. هر کدام از این آیدی ها را در مرحله بعد ارسال کنید به عنوان ورودی به مدل داده خواهد شد.

files = [
    "/path/to/local-file/example.png",
    "/another/file/path/...",
]
file_ids = client.upload_files(files)
print(file_ids)

مرحله چهارم: اجرای مدل

ثبت درخواست اجرای مدل توسط call انجما می شود. ورودی call به صورت زیر است که در آن repo_name همان اسمی است که در لیست مدلها میبینید. ساختار آن نیز مشخص است._ file_ids در اینجا همان آیدی فایلهایی است که در مرحله قبل بارگذاری نمودید. ( اگر ورودی مدل تنها متن است، نیازی نیست این فیلد را قرار دهید) در پاسخ به شما یک id_task داده می شود که از آن می توانید برای پیگیری وضعیت درخواست خود استفاده کنید:

inputs = {
    "repo_name": "author_username/repo_name",
    "inputs": {
         "text":"your input text", # Required 
         "file_ids":[file_id1, file_id2, ....] # Optional
    }
}
response = client.call(inputs)
print(response)

مرحله پنجم: پیگیری وضعیت درخواست و دریافت نتیجه

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

response = client.request_status(task_id="request task id from last step")

مرحله ششم (اختیاری): دانلود فایل خروجی

اگر خروجی شما به صورت فایل باشد، url فایل خروجی در قسمت قبل برای شما ارسال می شود. شما می توانید با استفاده از متد download_file و ارسال url فایل های خود را دانلود کنید.

file = client.download_file(response["output"]["files"][0])