Supercharge FastAPI با Redis | به سمت هوش مصنوعی


نویسنده(های): رونیل پاتیل

در ابتدا منتشر شد به سمت هوش مصنوعی.

تصویر توسط نویسنده

فهرست مطالب
مقدمه
چالش
مکانیسم کش
کش کردن با DiskCache
ذخیره سازی با Redis
Redis در Upstash
مخزن GitHub
نتیجه گیری

مقدمه

در دنیای پر سرعت برنامه‌های کاربردی وب، سرعت و کارایی مهم‌ترین جنبه‌ها هستند، به خصوص زمانی که مدل‌های هوش مصنوعی را ادغام می‌کنید. FastAPI که به دلیل عملکرد بالای خود شناخته شده است، در حال حاضر به ساده سازی توسعه API کمک می کند. اما با رشد درخواست‌ها و حیاتی شدن زمان پاسخ، تکیه صرف به FastAPI ممکن است کافی نباشد. اینجاست که حافظه پنهان وارد می‌شود. با معرفی حافظه پنهان، می‌توانیم بار مدل‌های هوش مصنوعی خود را به شدت کاهش دهیم، زمان پاسخگویی را بهبود بخشیم و تجربه کلی کاربر را بهبود ببخشیم. در این وبلاگ، ما بررسی خواهیم کرد که چگونه می‌توانیم برنامه FastAPI خود را با استفاده از Redis برای ذخیره کارآمد شارژ کنیم.

چالش

وقتی ما خود را مستقر می کنیم یادگیری ماشینی مدل در تولید، ما بیشتر از طریق API ارتباط برقرار می کنیم. FastAPI سبک است و ساده ترین راه برای ساخت API است. فرض کنید من یک API ساختم و چندین کاربر به طور همزمان برای پاسخ/پیش‌بینی ضربه می‌زنند. وقتی برنامه ما درخواست‌های مکرر را با ورودی‌های یکسان رسیدگی می‌کند، محاسبات اضافی را به‌ویژه با مدل‌های یادگیری عمیق با منابع فشرده آغاز می‌کند. این ناکارآمدی به طور قابل توجهی بر زمان پاسخ‌دهی تأثیر می‌گذارد و در نهایت بر عملکرد محصول و تجربه کاربر تأثیر می‌گذارد.

مکانیسم کش

کش یک حافظه موقت است که داده ها را در خود نگه می دارد تا بتوان به سرعت به آنها دسترسی داشت. به جای واکشی مکرر همان داده ها از هر منبع یا API، داده ها در حافظه پنهان ذخیره می شوند که بازیابی آن بسیار سریعتر است. این روند را سرعت می بخشد و تماس ها و تاخیر را کاهش می دهد.

کش کردن با DiskCache

DiskCache یک کتابخانه کش قدرتمند و سبک برای پایتون است که روشی ساده و کارآمد برای ذخیره داده های کش در حافظه های غیر فرار مانند دیسک یا SSD ارائه می دهد.
به‌طور پیش‌فرض، DiskCache از SQLite به‌عنوان ذخیره‌سازی باطنی خود برای ذخیره‌سازی کارآمد استفاده می‌کند، اما از گزینه‌های مختلف ذخیره‌سازی دیگر نیز پشتیبانی می‌کند.

قطعه کد

خروجی

تصویر توسط نویسنده

ذخیره سازی با Redis

Redis یک پایگاه داده در حافظه است که به طور کامل بر روی رم دستگاه ما اجرا می شود. از آنجایی که دسترسی به داده ها از رم بسیار سریعتر از دیسک است، معمولاً به عنوان کش استفاده می شود. این برای سرعت طراحی شده است و قادر به رسیدگی به میلیون ها درخواست در ثانیه است، و آن را برای برنامه های کاربردی با کارایی بالا مورد علاقه قرار می دهد. برخلاف پایگاه داده‌های سنتی که داده‌ها را روی دیسک ذخیره می‌کنند، Redis داده‌ها را در حافظه نگه می‌دارد و امکان دسترسی سریع رعد و برق را فراهم می‌کند.
اما w8، شما فکر می کنید از آنجایی که داده ها در RAM ذخیره می شوند، اگر سیستم از کار بیفتد یا راه اندازی مجدد شود، از بین می رود و bla bla bla…
نگران نباشید Redis راه‌های متعددی برای ذخیره داده‌ها در دیسک ارائه می‌دهد، که تضمین می‌کند پس از خرابی یا راه‌اندازی مجدد، می‌توان آن‌ها را بازیابی کرد:

  • RDB (پشتیبان گیری از پایگاه داده Redis): ردیس ایجاد می کند عکس های فوری از مجموعه داده در فواصل زمانی مشخص، به عنوان مثال، هر چند دقیقه یا پس از تعداد معینی از نوشتن. این یک نسخه پشتیبان در زمان از داده ها فراهم می کند، بنابراین اگر مشکلی رخ داد، می توانیم آخرین عکس فوری ذخیره شده را بازیابی کنیم. برای بازیابی سریع عالی است، اما ممکن است برخی از داده‌هایی را که از آخرین عکس فوری ذخیره نشده‌اند، از دست بدهیم. اما اشکالی ندارد. مثل ضرب المثل قدیمی است که “شما نمی توانید همه آن را داشته باشید.
  • AOF (فایل فقط پیوست): با AOF، Redis هر عملیات نوشتن را در یک فایل ثبت می کند. این روش دوام بهتری نسبت به RDB ارائه می‌کند، زیرا در صورت خرابی، Redis می‌تواند گزارش را مجدداً پخش کند تا آن را بازسازی کند. مجموعه داده با حداقل از دست دادن اطلاعات می‌توانیم آن را طوری پیکربندی کنیم که هر نوشته‌ای را فوراً ثبت کند، و تقریباً در زمان واقعی ماندگاری می‌دهد. ما می‌توانیم از دست دادن داده‌ها را کاهش دهیم، اما باز هم به قیمت عملکرد تمام می‌شود.

راه های دیگری نیز وجود دارد، اما من به جزئیات نمی پردازم. بنابراین، بیایید جلو برویم و آن را اجرا کنیم.

قطعه کد

خروجی [Client-Server]

تصویر توسط نویسنده

خروجی [Redis server]

تصویر توسط نویسنده
تصویر توسط نویسنده

توجه: Redis ممکن است در سیستم شما در دسترس نباشد. هر ویدیوی YouTube را دنبال کنید یا از Google/ChatGPT برای راهنمایی شما در بارگیری Redis در سیستم خود استفاده کنید.

Redis در Upstash

بالادست یک پلتفرم Redis کاملاً مدیریت شده و بدون سرور است. Redis را به عنوان یک سرویس با قیمت پرداخت به ازای درخواست ارائه می دهد، به این معنی که شما فقط برای آنچه استفاده می کنید پرداخت می کنید، و آن را برای برنامه هایی با ترافیک متغیر یا کم ایده آل می کند. بیایید از آن در API خود استفاده کنیم.
قطعه کد

خروجی [Client-Server]

تصویر توسط نویسنده

خروجی [Upstash Redis Dashboard]

تصویر توسط نویسنده
تصویر توسط نویسنده
تصویر توسط نویسنده

مخزن GitHub

با استفاده از FastAPI + Docker، میکروسرویس‌های ML را توسعه و Dockerize کنید

میکروسرویس‌های ML را با استفاده از FastAPI + Docker – ronylpatil/FastAPI توسعه و Dockerize کنید

github.com

نتیجه گیری

با استفاده از برنامه‌نویسی ناهمزمان با FastAPI و قابلیت‌های کش قوی Redis، می‌توانید برنامه‌های سریع و قابل اعتمادی ایجاد کنید که تجربه کاربری برتری را ارائه می‌دهند. همانطور که به کاوش و پیاده سازی این معماری ادامه می دهید، استراتژی های مختلف بهینه سازی و بهترین شیوه ها را برای به حداکثر رساندن مزایای هر دو فناوری در نظر بگیرید.

اگر این وبلاگ کنجکاوی شما را برانگیخته یا ایده های جدیدی را برانگیخته است، من را دنبال کنید متوسط، GitHub & متصل شود لینکدینو کنجکاوی را زنده نگه داریم.

پرسش‌ها، بازخوردها و دیدگاه‌های شما نه تنها مورد استقبال قرار می‌گیرد، بلکه مورد تمجید قرار می‌گیرد. در صورت داشتن هرگونه سوال یا نظرات خود را به اشتراک بگذارید.

ممنون 🙌 و،
به فشار دادن مرزها ادامه دهید🚀

منتشر شده از طریق به سمت هوش مصنوعی



منبع: https://towardsai.net/p/l/supercharge-fastapi-with-redis