اجرای مدل‌های هوش مصنوعی محلی با Docker Model Runner

Docker Model Runner امکان اجرای مستقیم مدل‌های هوش مصنوعی روی سخت‌افزار میزبان را فراهم می‌کند، به‌جای اجرای آن‌ها داخل کانتینر، و این کار دسترسی سریع‌تری به GPU می‌دهد در حالی که همچنان کاملاً با اکوسیستم داکر یکپارچه است. این مقاله نحوه کارکرد آن، دریافت و تست مدل‌ها و اتصال آن به اپلیکیشن‌های چت‌بات مبتنی بر Compose را بررسی می‌کند.

Docker Model Runnerمدل هوش مصنوعی محلیOpenAI API

~4 دقیقه مطالعه · آخرین به‌روزرسانی ۱۴ شهریور ۱۴۰۵

مقدمه

داکر دو روش برای اجرای محلی اپلیکیشن‌های هوش مصنوعی ارائه می‌دهد: Docker Model Runner (DMR) و کانتینرهای معمولی. DMR روش ترجیحی است، زیرا مدل‌ها را مستقیماً روی سخت‌افزار میزبان اجرا می‌کند، نه داخل کانتینر، و این کار دسترسی بسیار بهتری به سخت‌افزار شتاب‌دهنده مانند GPU فراهم می‌کند.

چرا مدل‌ها خارج از کانتینر اجرا می‌شوند

بیشتر سخت‌افزارهای شتاب‌دهنده هوش مصنوعی — GPU، NPU و TPU — به درایورها و SDKهای اختصاصی وابسته‌اند که پشتیبانی پایدار از آن‌ها برای رانتایم‌های کانتینری بسیار دشوار است. اگرچه GPUهای NVIDIA را می‌توان با نصب NVIDIA Container Toolkit در اختیار کانتینرها قرار داد، این فرآیند پیچیده است و فقط به دستگاه‌های دارای قابلیت CUDA محدود می‌شود. با اجرای مدل‌ها مستقیماً روی میزبان، DMR این محدودیت را به‌طور کامل دور می‌زند، در حالی که همچنان با اکوسیستم گسترده‌تر داکر یکپارچه باقی می‌ماند.

معماری

DMR به‌عنوان یک فرآیند میزبان، جدا از Docker Engine اجرا می‌شود و یک لایه runtime قابل‌جایگزینی — در حال حاضر llama.cpp — را در بر می‌گیرد که مدل‌ها را بارگذاری و اجرا می‌کند. این ابزار بر اساس تقاضا مدل‌ها را به‌صورت پویا بارگذاری و تخلیه کرده و آن‌ها را از طریق endpointهای سازگار با OpenAI در دسترس قرار می‌دهد. کانتینرها می‌توانند به این endpointها از طریق hostname ویژه model-runner.docker.internal دسترسی داشته باشند، در حالی که اپلیکیشن‌های محلی یا راه‌دور می‌توانند از طریق شبکه روی پورت 12434 به آن‌ها دسترسی پیدا کنند.

نصب Docker Model Runner

DMR به نسخه Docker Desktop v4.41 یا جدیدتر نیاز دارد. می‌توان آن را از صفحه Settings → Features in development در Docker Desktop، با فعال کردن گزینه Enable Docker Model Runner فعال کرد. پس از فعال‌سازی، وضعیت آن با دستور زیر قابل بررسی است:

docker model status

دریافت و تست مدل‌ها

Docker Hub یک کاتالوگ گزیده از مدل‌های تأییدشده را زیر namespace به نام ai میزبانی می‌کند. یک مدل را می‌توان درست مانند یک ایمیج دانلود کرد:

docker model pull ai/gemma3:4B-Q4_K_M

مدل‌های محلی را می‌توان با docker model ls و docker model inspect فهرست و بررسی کرد. در پشت صحنه، مدل‌ها به‌عنوان نوع جدیدی از OCI artifact ذخیره و توزیع می‌شوند، به این معنا که می‌توانند از رجیستری‌های کانتینری موجود در کنار ایمیج‌ها، SBOMها و Helm chartها استفاده کنند.

مدل‌ها را می‌توان به‌سرعت از طریق یک نشست تعاملی CLI تست کرد:

docker model run ai/gemma3:4B-Q4_K_M

یا از طریق رابط چت داخلی Docker Desktop، که علاوه بر این، زمینه گفتگو را بین سؤالات مختلف حفظ می‌کند.

فراخوانی مستقیم API

DMR هم endpointهای بومی برای مدیریت مدل و هم endpointهای inference سازگار با OpenAI ارائه می‌دهد. یک درخواست چت را می‌توان مستقیماً با curl ارسال کرد:

curl -s http://localhost:12434/engines/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "ai/gemma3:4B-Q4_K_M", "messages": [{"role": "user", "content": "How long is a day on Mars?"}]}'

استفاده از Docker Model Runner با Compose

DMR از طریق یک افزونه اختصاصی به نام provider با Docker Compose یکپارچه می‌شود و امکان تعریف یک مدل به‌عنوان یک وابستگی سرویس درجه‌یک را فراهم می‌کند:

dmr:
  provider:
    type: model
    options:
      model: ${LLM_MODEL_NAME}

این ویژگی امکان ساخت یک استک کامل چت‌بات — یک فرانت‌اند، یک API بک‌اند و یک سرور مدل — را فراهم می‌کند که در آن بک‌اند به‌صورت داخلی از طریق http://model-runner.docker.internal/engines/v1 با DMR ارتباط برقرار می‌کند، و همه با یک دستور واحد docker compose up مستقر می‌شوند.

استفاده از Docker Model Runner با اپلیکیشن‌های شخص‌ثالث

از آنجا که endpointهای inference داکر با OpenAI سازگارند، ابزارهای شخص‌ثالثی مانند Open WebUI می‌توانند مستقیماً به آن متصل شوند و یک رابط محلی شیک و شبیه به ChatGPT ارائه دهند، همراه با امکان تعویض مدل، حفظ تاریخچه گفتگو و system promptهای قابل‌تنظیم.

نتیجه‌گیری

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

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

داکر چگونه از فناوری‌های امنیتی لینوکس استفاده می‌کند

مدل امنیتی داکر بر پایه دفاع چندلایه ساخته شده و فناوری‌های شناخته‌شده kernel لینوکس را با تنظیمات پیش‌فرض معقول ترکیب می‌کند. این مقاله توضیح می‌دهد که namespaceها، control groupها، capabilityها، Mandatory Access Control و seccomp چگونه در کنار هم کانتینرها را ایزوله و ایمن می‌کنند.

ادامه

مدیریت داده‌های ماندگار در داکر با Volume

کانتینرها به‌طور پیش‌فرض یک لایه نوشتنی موقت دریافت می‌کنند که با حذف کانتینر از بین می‌رود — این برای داده‌های موقتی خوب است، اما برای هر چیزی که ارزش نگهداری دارد ریسک‌آور است. این مقاله توضیح می‌دهد که volumeهای داکر چگونه داده‌های ماندگار را از چرخه حیات کانتینر جدا می‌کنند و نحوه ساخت، استفاده و اشتراک‌گذاری امن آن‌ها را بررسی می‌کند.

ادامه

شبکه‌های Overlay در داکر چگونه کار می‌کنند؛ نگاهی به VXLAN

شبکه‌های overlay امکان می‌دهند کانتینرهای روی هاست‌های مختلف طوری با هم ارتباط برقرار کنند که گویی یک شبکه مسطح مشترک دارند، و ستون فقرات بیشتر اپلیکیشن‌های میکروسرویس ابرمحور را تشکیل می‌دهند. این مقاله نحوه ساخت، رمزنگاری و تست یک شبکه overlay داکر روی یک کلاستر Swarm را بررسی کرده و فناوری تونل‌زنی VXLAN پشت آن را توضیح می‌دهد.

ادامه

اتصال کانتینرهای داکر به VLAN و توزیع بار با Swarm

فراتر از شبکه‌های ساده bridge، داکر امکاناتی برای اتصال مستقیم کانتینرها به VLANهای فیزیکی موجود، تفکیک خودکار نام سرویس‌ها و توزیع ترافیک در سراسر یک کلاستر Swarm ارائه می‌دهد. این مقاله درایور macvlan، سرویس داخلی Service Discovery و مکانیزم Ingress Load Balancing در Swarm را بررسی می‌کند.

ادامه

شبکه‌سازی در داکر؛ آشنایی با CNM، Libnetwork و شبکه‌های Bridge

شبکه‌سازی در داکر بر پایه یک طراحی باز به نام Container Network Model ساخته شده که توسط libnetwork پیاده‌سازی و با درایورهای قابل‌جایگزینی گسترش می‌یابد. این مقاله تئوری پشت شبکه داکر را بررسی کرده و نحوه ساخت و تست شبکه‌های bridge تک‌هاست، از جمله تفکیک نام و نگاشت پورت را توضیح می‌دهد.

ادامه

استقرار و مدیریت کلاستر چندنودی با Docker Swarm

Docker Swarm گروهی از نودهای داکر را به یک کلاستر امن و بسیار در دسترس با قابلیت ارکستریشن داخلی تبدیل می‌کند. این مقاله ساخت یک swarm چندنودی، استقرار یک اپلیکیشن میکروسرویس به‌صورت اعلانی و انجام به‌روزرسانی‌های تدریجی بدون از دست دادن سازگاری با وضعیت مطلوب را بررسی می‌کند.

ادامه