نویسنده(های): رونیل پاتیل
در ابتدا منتشر شد به سمت هوش مصنوعی.
فهرست مطالب
– مقدمه
–چالش
–مکانیسم کش
–کش کردن با 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