REFACTOR مولتی استیج برای پایتون
ینیییی یهو یدونه داکر ایمیجز گرفتم برگام ریخت از این حجم زیاد البته خیلی تلاش کردم ناموسا تا حجم ایمیج بیسم رو کم کنم با مولتی استیج کردن و راست و کارگو رو خودم نصب کنم و نسخه فقط cpu دارم برای هوش مصنوعی هاش تا حجم شد این
python-base:latest 3.3GB 801MB
شد این
python-base:latest 2.27GB 527MBو تازه نگم که
audio_processor:latest 3.3GB 801MB
به این
audio_processor:latest 2.28GB 527MB
البته خودمونیم تف تو پایتون که اخرش هم هرکاری میکنی 500 مگگگگ حجم میگیره البته که من دهن این داکر رو سرویس میکنم و هرچی کار با پایتون دارم میریزم روش که بصرفه برام این حجم
اینم نسخه ای که جمنای گفت
کاهش حجم لایه به لایهٔ ایمیج به طور مشخص روی دو محور اصلی انجام شد:
۱. تفکیک محیط ساخت (Build-time) از محیط اجرا (Run-time)
کتابخانه DeepFilterNet ساختاری هیبریدی (ترکیبی از Rust و Python) دارد و برای نصب، نیازمند کامپایل کدهای نیتیو است. در یک داکرفایل تکمرحلهای (Single-stage)، کانتینر نهایی باید حامل ابزارهای سنگینی مثل زنجیره ابزار Rust (rustc و cargo با حجم بیش از ۴۰۰ مگابایت) و پکیجهای توسعه سیستمعامل (build-essential) باشد که پس از نصب دیگر هیچ کاربردی ندارند.
با پیادهسازی الگوی Multi-stage Build:
در مرحله اول (builder)، تمام وابستگیها با فلگ --user کامپایل و در مسیر /root/.local نصب شدند.
در مرحله دوم (runner)، بدون انتقال ابزارهای کامپایل و سربارهای سیستمعاملی، صرفاً پوشه محتویات نهایی پایتون (.local) با دستور COPY --from به ایمیج تمیز و سبک python:slim منتقل شد.
۲. سبکسازی PyTorch و حذف کامل لایههای CUDA
پکیج پیشفرض PyTorch به دلیل پشتیبانی از شتابدهندههای انویدیا (CUDA) و لایههای سنگین محاسبات گرافیکی، حجم بسیار بالایی دارد. از آنجا که پردازش صدا در میکروسرویس ما بر بستر پردازنده اصلی (CPU) انجام میشود، نیازی به این درایورها نبود.
با لغو نصب نسخه پیشفرض و استفاده از پرچم زیر:
--index-url https://download.pytorch.org/whl/cpuنسخه سبک و بهینهشده برای CPU پایتورچ دانلود شد که این تغییر به تنهایی حدود ۱.۲ گیگابایت از حجم ایمیج را کاهش داد.