Docker Model Runner با هدف تسهیل اجرای مدل‌های LLM به صورت محلی

Docker Model Runner که در حال حاضر در نسخه پیش‌نمایش Docker Desktop 4.40 برای macOS روی Apple Silicon قرار دارد، به توسعه‌دهندگان اجازه می‌دهد مدل‌ها را به صورت محلی اجرا کرده و روی کد برنامه با استفاده از مدل‌های محلی تکرار کنند—بدون اینکه گردش کار مبتنی بر کانتینر آن‌ها مختل شود.

استفاده از LLMهای محلی برای توسعه مزایای متعددی از جمله هزینه‌های کم‌تر، بهبود حریم خصوصی داده‌ها، کاهش تأخیر شبکه و کنترل بیشتر بر مدل ارائه می‌دهد.

Docker Model Runner چندین نقطه ضعف برای توسعه‌دهندگانی که LLMها را در برنامه‌های کانتینری ادغام می‌کنند، برطرف می‌کند، مانند برخورد با ابزارهای مختلف، پیکربندی محیط‌ها و مدیریت مدل‌ها خارج از کانتینرهایشان. علاوه بر این، هیچ روش استانداردی برای ذخیره، اشتراک‌گذاری یا ارائه مدل‌ها وجود ندارد. برای کاهش اصطکاک مرتبط با آن، Docker Model Runner شامل موارد زیر است:

یک موتور استنتاج به عنوان بخشی از Docker Desktop، که بر اساس llama.cpp ساخته شده و از طریق API آشنای OpenAI قابل دسترسی است. بدون ابزارهای اضافی، بدون تنظیمات اضافی و بدون گردش کارهای جدا شده. همه چیز در یک مکان باقی می‌ماند، بنابراین می‌توانید به سرعت، درست روی دستگاه خود آزمایش و تکرار کنید.

برای جلوگیری از سربار عملکرد معمولی ماشین‌های مجازی، Docker Model Runner از اجرای مبتنی بر میزبان استفاده می‌کند. این بدان معناست که مدل‌ها مستقیماً روی Apple Silicon اجرا می‌شوند و از شتاب GPU بهره می‌برند، که برای سرعت استنتاج و هموار بودن چرخه توسعه بسیار مهم است.

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

امروزه، می‌توانید به راحتی مدل‌های آماده به استفاده را از Docker Hub بکشید. به زودی، شما همچنین می‌توانید مدل‌های خود را هل دهید، با هر رجیستری کانتینری ادغام شوید، آن‌ها را به خطوط لوله CI/CD خود متصل کنید و از ابزارهای آشنا برای کنترل دسترسی و اتوماسیون استفاده کنید.

اگر از Docker Desktop 4.40 برای macOS روی Apple Silicon استفاده می‌کنید، می‌توانید از دستور docker model استفاده کنید، که از یک گردش کار بسیار شبیه به آنچه که با تصاویر و کانتینرها استفاده می‌کنید، پشتیبانی می‌کند. به عنوان مثال، می‌توانید یک مدل را pull و آن را run کنید. برای تعیین نسخه دقیق مدل، مانند اندازه یا کوانتیزاسیون آن، docker model از تگ‌ها استفاده می‌کند، به عنوان مثال:

docker model pull ai/smollm2:360M-Q4_K_M
 docker model run ai/smollm2:360M-Q4_K_M "Give me a fact about whales."
 

با این حال، مکانیک پشت این دستورات خاص مدل‌ها است، زیرا آن‌ها در واقع یک کانتینر ایجاد نمی‌کنند. در عوض، دستور run وظیفه استنتاج را به یک سرور استنتاج که به عنوان یک فرآیند بومی در بالای llama.cpp اجرا می‌شود، واگذار می‌کند. سرور استنتاج مدل را در حافظه بارگیری می‌کند و آن را برای یک دوره زمانی معین عدم فعالیت کش می‌کند.

می‌توانید از Model Runner با هر کلاینت یا چارچوب سازگار با OpenAI از طریق نقطه پایانی OpenAI آن در http://model-runner.docker.internal/engines/v1 که از داخل کانتینرها در دسترس است، استفاده کنید. همچنین می‌توانید از میزبان به این نقطه پایانی دسترسی پیدا کنید، به شرطی که دسترسی میزبان TCP را با اجرای docker desktop enable model-runner --tcp 12434 فعال کنید.

Docker Hub میزبان انواع مدل‌های آماده به استفاده برای Model Runner از جمله smollm2 برای برنامه‌های روی دستگاه، و همچنین llama3.3 و gemma3 است. Docker همچنین یک آموزش در مورد ادغام Gemma 3 در یک برنامه پردازش نظرات با استفاده از Model Runner منتشر کرده است. این آموزش مراحل متداول مانند پیکربندی OpenAI SDK برای استفاده از مدل‌های محلی، استفاده از خود مدل برای تولید داده‌های آزمایشی و موارد دیگر را طی می‌کند.

Docker Model Runner تنها گزینه برای اجرای LLMها به صورت محلی نیست. اگر به رویکرد کانتینر محور Docker علاقه‌مند نیستید، ممکن است به بررسی Ollama نیز علاقه‌مند باشید. این ابزار به عنوان یک ابزار مستقل کار می‌کند، دارای یک مخزن مدل و جامعه بزرگتر است و به طور کلی برای سفارشی‌سازی مدل انعطاف‌پذیرتر است. در حالی که Docker Model Runner در حال حاضر فقط برای macOS است، Ollama چند پلتفرمی است. با این حال، اگرچه Ollama از شتاب GPU روی Apple Silicon هنگام اجرای بومی پشتیبانی می‌کند، اما این ویژگی هنگام اجرای آن در داخل یک کانتینر در دسترس نیست.