فهرست مندرجات[پنهان شدن][نمایش]
یکی از جنبه های این سناریو ایجاد یک مدل یادگیری ماشینی است. باید در دنیای واقعی قابل استفاده و در دسترس مصرف کنندگان و توسعه دهندگان باشد.
ساده ترین و محبوب ترین راه برای استقرار مدل های یادگیری ماشین، محصور کردن آنها در یک REST API است.
با یک کتابخانه محبوب به نام FastAPI، این دقیقاً همان چیزی است که امروز انجام خواهیم داد.
اما، چیست FastAPI?
چارچوب وب FastAPI Python از ابتدا برای استفاده از قابلیتهای پایتون امروزی ایجاد شده است.
برای ارتباط ناهمزمان و همزمان با مشتریان، از استاندارد ASGI تبعیت می کند، در حالی که می تواند از WSGI نیز استفاده کند.
نقاط پایانی و مسیرها هر دو می توانند از توابع ناهمگام استفاده کنند. علاوه بر این، FastAPI ایجاد مولد برنامههای وب در کدهای پایتون مدرن، تمیز و با تایپ را قادر میسازد.
مورد استفاده اصلی FastAPI، همانطور که از نام آن پیداست، ایجاد نقاط پایانی API است.
استفاده از استاندارد OpenAPI، که شامل یک رابط کاربری Swagger تعاملی است، یا ارائه داده های فرهنگ لغت پایتون به عنوان JSON، هر دو راه های ساده ای برای دستیابی به این هدف هستند. با این حال، FastAPI فقط برای API ها نیست.
میتوان از آن برای ارائه صفحات وب استاندارد با استفاده از موتور قالب Jinja2 و ارائه برنامههایی که از WebSockets استفاده میکنند، علاوه بر تقریباً هر کار دیگری که یک چارچوب وب میتواند انجام دهد، استفاده کرد.
در این مقاله، ما یک مدل یادگیری ماشینی ساده ایجاد می کنیم و سپس از FastAPI برای استقرار آن استفاده می کنیم. شروع کنیم.
نصب FastAPI و ایجاد اولین API
ابتدا باید کتابخانه و سرور ASGI را نصب کنید. Uvuicorn یا Hypercorn کار خواهند کرد. با وارد کردن دستور زیر در ترمینال کار می کند:
اکنون که API ایجاد شده است، می توانید از ویرایشگر کد دلخواه خود استفاده کرده و آن را مرور کنید. برای شروع یک اسکریپت پایتون به نام ml_model.py ایجاد کنید. می توانید نام دیگری را برای نام خود بگذارید، اما به خاطر این پست، من به این فایل با عنوان ml_model.py اشاره می کنم.
برای ایجاد یک API ساده با دو نقطه پایانی، باید کارهای زیر را انجام دهید:
- کتابخانه های FastAPI و Uvicorn را وارد کنید.
- یک نمونه کلاس FastAPI را تنظیم کنید.
- اولین مسیر را اعلام کنید، که در صفحه فهرست، یک شیء ساده JSON تولید می کند.
- مسیر دوم را اعلام کنید، که یک شیء ساده JSON را با یک پیام سفارشی ارائه می دهد. پارامتر نام مستقیماً از URL گرفته شده است (به عنوان مثال، https://127.0.0.1:8000/Jay).
- از Uvicorn برای اجرای API استفاده کنید.
پیاده سازی این پنج مرحله در بیت کد زیر نشان داده شده است. ایجاد یک API ساده
همه چیز تمام شد! بیایید بلافاصله API خود را راه اندازی کنیم. برای انجام این کار، یک پنجره ترمینال در کنار فایل ml model.py باز کنید. بعد، موارد زیر را وارد کنید:
کلید Enter قبل از حرکت، اجازه دهید این ادعا را رد کنیم. اولین برنامه از نام فایل پایتون به تنهایی و بدون پسوند استفاده می کند. برنامه دوم باید همان نام نمونه FastAPI شما باشد.
با استفاده از -reload، به API می گویید که می خواهید هنگام ذخیره فایل به جای شروع از ابتدا، به طور خودکار بارگیری مجدد شود.
اکنون یک مرورگر راه اندازی کنید و به https://127.0.0.1:8000 بروید. نتیجه باید به صورت زیر ظاهر شود:
اکنون میدانید که چگونه با استفاده از FastAPI یک API ساده ایجاد کنید.
ساخت و آموزش مدل یادگیری ماشینی
بدون جمعآوری یا تجزیه و تحلیل دادهها، ما فقط یک مدل ساده را آموزش میدهیم. اینها با استقرار مدل ها ارتباطی ندارند و برای موضوع مورد بحث ضروری نیستند.
یک مدل مبتنی بر مجموعه داده Iris را می توان با استفاده از همان نصب کرد شبکه های عصبی روش نصب
و ما فقط این کار را انجام خواهیم داد: دانلود کنید مجموعه داده عنبیه و مدل را آموزش دهید. این ساده نخواهد بود. برای شروع، یک فایل به نام jaysmlmodel.py بسازید.
در آن، کارهای زیر را انجام خواهید داد:
- واردات - شما به پانداها، scikit-RandomForecastClassifier، BaseModel pydantic Learn's (در مرحله زیر متوجه خواهید شد چرا) و joblib برای ذخیره و بارگذاری مدل ها نیاز دارید.
- یک کلاس IrisSpecies را که از مدل پایه به ارث می برد، اعلام کنید. این کلاس فقط شامل فیلدهای مورد نیاز برای پیشبینی یک گونه گل میباشد (اطلاعات بیشتر در بخش بعدی)
- یک کلاس ایجاد کنید. IrisModel یک ابزار آموزش و پیش بینی مدل است.
- متدی به نام _train model را در IrisModel اعلام کنید. برای آموزش مدل ها با استفاده از تکنیک Random Forests استفاده می شود. مدل آموزش دیده با روش برگردانده می شود.
- یک تابع گونه پیش بینی شده را در داخل IrisModel اعلام کنید. برای پیش بینی بر اساس 4 عامل ورودی (اندازه گیری گل) استفاده می شود. هر دو پیشبینی (گونههای گل) و احتمال پیشبینی توسط الگوریتم برگردانده میشوند.
- سازنده را در IrisModel طوری تغییر دهید که مجموعه داده Iris را بارگیری کند و اگر مدل در پوشه نبود، آن را آموزش دهد. این مشکل آموزش مکرر مدل های جدید را حل می کند. کتابخانه joblib برای بارگیری و ذخیره مدل استفاده می شود.
این هم کل کد:
امیدوارم لیست بالا و نظرات درک آن را آسان کرده باشد، حتی اگر این مقدار قابل توجهی از کد ایجاد شود. اکنون که این مدل توسعه یافته است، اجازه دهید قابلیت های پیش بینی آن را بر روی a منتشر کنیم REST API.
ساخت یک REST API کامل
به فایل ml_model.py برگردید و تمام داده ها را پاک کنید. دیگ بخار اساساً همان چیزی است که قبلاً داشتید، اما ما باید با یک فایل خالی شروع کنیم.
شما این بار فقط یک نقطه پایانی را تعریف خواهید کرد، که برای تعیین نوع گل استفاده می شود. IrisModel.predict species()، که در بخش قبل اعلام شد، توسط این نقطه پایانی برای انجام پیشبینی فراخوانی میشود.
نوع درخواست تغییر بزرگ دیگر است. به منظور انتقال پارامترها در JSON به جای URL، توصیه می شود هنگام استفاده از POST استفاده کنید فراگیری ماشین API ها
جمله بالا ممکن است به نظر بیهوده باشد اگر شما یک دانشمند داده، اما اشکالی ندارد. برای طراحی و استقرار مدلها، لزوماً نیازی نیست که در درخواستهای HTTP و APIهای REST متخصص باشید.
وظایف ml model.py کم و ساده است:
- شما باید موارد زیر را از فایل jaymlmodel.py که قبلا ایجاد شده است وارد کنید: uvicorn، FastAPI، IrisModel و IrisSpecies.
- نمونه هایی از FastAPI و IrisModel ایجاد کنید.
- یک تابع را در https://127.0.0.1:8000/predict برای پیش بینی اعلام کنید.
- متد IrisModel.predict species() یک شی از نوع IrisSpecies را دریافت می کند، آن را به دیکشنری تبدیل می کند و سپس آن را برمی گرداند. بازده کلاس مورد انتظار و احتمال پیش بینی شده است.
- از uvicorn برای اجرای API استفاده کنید.
باز هم، در اینجا کد کل فایل به همراه نظرات آن است:
این همه کاری بود که شما باید انجام میدادید. در مرحله بعد، اجازه دهید API را آزمایش کنیم.
تست API
خط زیر را دوباره وارد ترمینال کنید تا API اجرا شود: uvicorn ml_model:app –reload
صفحه مستندات به این صورت ظاهر می شود:
پس برای امروز همین است. در قسمت بعد از این به جمع بندی می پردازیم.
نتیجه
امروز، با استفاده از یک مثال ساده API و یک مثال ساده یادگیری ماشینی، یاد گرفتید که FastAPI چیست و چگونه از آن استفاده کنید. شما همچنین نحوه ایجاد و مشاهده اسناد API و همچنین نحوه آزمایش آن را یاد گرفته اید.
این مقدار برای یک قطعه بسیار زیاد است، بنابراین اگر برای درک درست چند مطالعه لازم است تعجب نکنید.
کد نویسی مبارک
پاسخ دهید