آنچه در این مقاله میخوانید
استفاده از Docker Model Runner برای اجرای بهینه مدل های GenAI بصورت لوکالی
۱۷ اردیبهشت ۱۴۰۴
تحول عظیمی که GenAI در فرآیند توسعه نرمافزار ایجاد کرده است، انکارناپذیر است؛ اما اجرای مدلهای AI بهصورت لوکال و فرآیند بیلد آنها هنوز هم پیچیدگیهایی بیش از حد انتظار دارد.
توسعهدهندگان امروز با چالشهایی نظیر ابزارهای پراکنده (Fragmented Tooling)، مشکلات سازگاری سختافزاری، و جریانهای کاری(Workflow) ناهماهنگ در جریان توسعه نرمافزار مواجهاند—عواملی که مانع تکرار سریع (Iteration) و کاهشدهنده سرعت پیشرفت پروژههای مبتنی بر GenAI هستند.
به همین دلیل، Docker قابلیت Model Runner رو معرفی کرد. راهکاری سریعتر و سادهتر برای اجرای لوکالی و تست مدلهای هوش مصنوعی.

تکامل توسعه LLM ها
توسعه لوکالی برنامههای مبتنی بر LLMها در حال گسترش است و دلایل خوبی برای این موضوع وجود دارد. این روش مزایای زیادی در زمینههای عملکرد، هزینه و حفظ حریم خصوصی دادهها ارائه میدهد. اما در حال حاضر، راهاندازی لوکالی پیچیده است.
توسعهدهندگان مجبورند ابزارهای مختلف را به صورت دستی یکپارچه کنند، محیطها را پیکربندی کرده و مدلها را جدا از جریانهای کاری(Workflow) کانتینری مدیریت کنند. اجرای مدلها بسته به پلتفرم و سختافزار موجود متفاوت است و ذخیرهسازی مدلها به دلیل نبود استانداردی برای ذخیره، به اشتراکگذاری یا سرو کردن مدلها، پراکنده است.
نتیجه؟ هزینههای بالای پردازش ابری و تجربه کاربری ناهماهنگ برای توسعهدهندگان. با انتشار Docker Model Runner، تمرکز اصلی بر کاهش این پیچیدگیهاست تا اجرای مدلهای لوکالی سادهتر، سریعتر و متناسب با روشهای توسعه فعلی شود.
راهی ساده و امن برای اجرای لوکالی مدل های GenAI
درواقع Docker Model Runner طوری طراحی شده است که اجرای مدلهای هوش مصنوعی را به سادگی اجرای یک کانتینر کند. با این نسخه آزمایشی این امکان برای توسعهدهندگان مهیا است که به روشی سریع و کم دردسر برای اجرای مدلها، تست آنها و تکرار کدهای اپلیکیشنهایی که از مدلها بهصورت لوکالی استفاده میکنند، برسند، بدون نیاز به تمام مشکلات معمول راهاندازی. در اینجا نحوه عملکرد آن آمده است:
اجرای لوکالی مدل LLM ها
با Docker Model Runner، اجرای مدلهای هوش مصنوعی بهصورت لوکالی اکنون به سادگی اجرای هر سرویس دیگری در حلقه توسعه شماست. Docker Model Runner این امکان را با گنجاندن یک موتور استنتاج بهعنوان بخشی از Docker Desktop فراهم میکند که بر اساس llama.cpp
ساخته شده و از طریق API آشنا و معمول OpenAI قابل دسترسی است. بدون نیاز به ابزار اضافی، بدون نیاز به تنظیمات پیچیده و بدون جریانهای کاری(Workflow) جداگانه. همهچیز در یک مکان باقی میماند تا بتوانید سریعاً تست کنید و بر روی ماشین خود بهراحتی تکرار (Iteration) انجام دهید.
فعال سازی GPU Acceleration در Apple Silicon
قابلیت GPU Acceleration در Apple Silicon به توسعهدهندگان کمک میکند تا از سختافزار لوکالی خود به بهترین شکل استفاده کرده و استنتاج سریعتری داشته باشند. با استفاده از اجرای مبتنی بر میزبان(Host)، از محدودیتهای عملکردی که در اجرای مدلها داخل کانتینرها وجود دارد، اجتناب میکنیم. این امر منجر به استنتاج سریعتر، تست روانتر و بازخورد بهتر میشود.
استانداردسازی بسته بندی مدلها با استفاده از OCI Artifacts
امروزه توزیع مدلها آشفته است. مدلها اغلب بهصورت فایلهای جداگانه یا پشت ابزارهای دانلود اختصاصی با احراز هویت سفارشی به اشتراک گذاشته میشوند. با Docker Model Runner، مدلها را بهعنوان OCI Artifacts بستهبندی میشوند، یک استاندارد که به شما این امکان را میدهد تا مدلها را از طریق همان رجیستریها و جریانهای کاری(Workflow) که قبلاً برای کانتینرها استفاده میکنید، توزیع و نسخهبندی کنید. امروز میتوانید بهراحتی مدلهای آماده استفاده را از Docker Hub بارگیری کنید. به زودی، قادر خواهید بود مدلهای خود را نیز بارگذاری کرده، با هر رجیستری کانتینری یکپارچه شوید، آنها را به خطوط CI/CD خود متصل کرده و از ابزارهای آشنای مدیریت دسترسی و خودکارسازی استفاده کنید.
استفاده و فعال سازی
در حال حاضر، این قابلیت بر روی سیستمعامل Mac و سختافزار Apple Silicon قابل اجراست و تیم Docker در حال توسعه این ویژگی برای سایر سیستمعاملهاست و به زودی قابلیت اجرای آن بر روی پلتفرمهای دیگر نیز فراهم خواهد شد.
اولین قدم این است که نسخه مناسب Docker Desktop را نصب کنیم. نسخه مورد نیاز ۴.۴۰ به بالا است. سپس در تنظیمات، باید ویژگی آزمایشی را فعال کنیم، مشابه تصویر زیر:

سپس باید Docker Desktop خود را ریاستارت کنید.
حالا باید چند دقیقه منتظر بمانید تا ویژگی جدید شروع به راهاندازی کند.
یک اقدام دیگر نیز وجود دارد که احتمالاً باید انجام دهید. باینری جدید را لینک کنید. به یاد داشته باشید که این ویژگی در مرحله آزمایشی است.
$ ln -s /Application/Docker.app/Contents/Resources/cli-plugins/docker-model ~/.docker/cli-plugins/docker-model
حالا میتوانیم وضعیت این قابلیت را با دستور زیر بررسی کنیم:
$ docker model status
Docker Model Runner is running
حالا ما از چه دستوراتی میتوانیم استفاده کنیم؟ فهمیدن آن ساده است!
$ docker model help
Usage: docker model COMMAND
Docker Model Runner
Commands:
list List the available models that can be run with the Docker Model Runner
pull Download a model
rm Remove a model downloaded from Docker Hub
run Run a model with the Docker Model Runner
status Check if the Docker Model Runner is running
version Show the Docker Model Runner version
Run 'docker model COMMAND --help' for more information on a command.
حالا یک model رو pull کرده و در نهایت اون رو اجرا میکنیم:
$ docker model pull ai/llama3.2:1B-Q8_0
قبل از اجرا کردن آن، میتوانیم با دستور زیر model که pull کردیم را بررسی کنیم:
$ docker model list | jq
{
"object": "list",
"data": [
{
"id": "ai/llama3.2:1B-Q8_0",
"object": "model",
"created": 1743104445,
"owned_by": "docker"
}
]
}
حالا میتوانیم model که pull کردیم را اجرا کنیم:
$ docker model run ai/llama3.2:1B-Q8_0 "What is the most recent date in your data?"
I was trained on a large corpus of text data up to 2021.
جمع بندی
در حال حاضر Docker این امکان را فراهم کرده است که مدلهای LLM را بهصورت لوکالی اجرا کنید، به عنوان بخشی از اکوسیستم Docker.
این ویژگی امنیت را افزایش میدهد، زیرا شما مدلها را بهصورت لوکالی اجرا میکنید. شما به هیچ وبسایتی، API و غیره متصل نمیشوید. مدل را تا حد ممکن به خودتان نزدیک نگه میدارید.
شما کنترل کامل دارید. مدل را خودتان انتخاب میکنید، زمانی که بخواهید و به هر روشی که میخواهید اجرا میشود.
بهعنوان یک OCI Artifact، این روش سادهتر، کارآمدتر، سریعتر و کممصرفتر است.
همچنین برای لیستی از Modelهای قابل استفاده میتوانید این آدرس رو بررسی بکنید.