خبرنامه هوش‌مصنوعی دومان

چگونه مدل‌های زبانی را به صورت لوکال اجرا کنیم؟

🗓️ تاریخ انتشار: ۲۷ آوریل ۲۰۲۵ ✍️ نویسنده: Pouya Esmaeili

شما به راحتی می‌توانید مدل‌های زبانی را با استفاده از نرم‌افزار LM Studio دانلود کرده و در سیستم لوکال خود اجرا کنید. این نرم‌افزار هم با رابط گرافیکی (GUI) و هم با استفاده از ترمینال (CLI) قابل استفاده است. حداقل سیستم مورد نیاز برای نصب LM Studio را از اینجا مشاهده کنید. همچنین برای دانلود و نصب آن به این صفحه مراجعه کنید. قابل ذکر است که این نرم‌افزار رایگان است.

لوگوی LM Studio

با استفاده از LM Studio تمامی مدل‌های زبانی از پلتفرم HuggingFace قابل جستجو و دانلود است. HuggingFace یک پلتفرم و کامیونیتی برای انتشار و دموی مدل‌های زبانی است. به نوعی می‌توان گفت HuggingFace گیت‌هاب مخصوص Machine Learning است. شما می‌توانید در این پلتفرم حساب کاربری ساخته و از مدل‌های منتشر شده در آن استفاده کنید. برای استفاده از LM Studio نیازی به ساخت اکانت در HuggingFace نیست ولی این نرم‌افزار از HuggingFace به عنوان هاب جستجو و دانلود مدل‌های زبانی استفاده می‌کند.

لوگوی HuggingFace

اما تمامی مدل‌های زبانی با استفاده از LM Studio قابل استفاده نیستند! تنها مدل‌هایی که فرمت GGUF یا MLX دارند توسط LM Studio پشتیبانی می‌شوند. علاوه بر فرمت سایز مدل و محدودیت سیستم لوکال نیز مهم است. سایز بسیاری از مدل‌های زبانی بسیار زیاد بوده و سیستم‌های شخصی نظیر لپ‌تاپ امکان لود کردن آن را ندارند. یکی از راه‌حل‌های رایج برای حل مشکل سایز استفاده از مدل‌های کوانتیزه است که سایز کمتر و کیفیت نسبتاً مشابهی با مدل اصلی دارند. در ادامه هر کدام از این مفاهیم معرفی شده است. هر مدلی که در HuggingFace منتشر شده دارای یک کارت است که در آن اطلاعاتی نظیر سایز روی دیسک و فرمت آن نوشته شده است. برای دیدن لیست مدل‌هایی که با LM Studio قابل اجرا هستند اینجا را مشاهده کنید.

کارت مدل در LM Studio

کارت مدل در LM Studio

معرفی فرمت‌های GGUF و MLX

فرمت GPT-Generated Unified Format یا به اختصار GGUF یک فرمت باینری است که با هدف ذخیره‌سازی و فراخوانی سریع مدل‌های زبانی بهینه شده است. این فرمت برای اجرای (Inference) مدل‌های زبانی بسیار بهینه است. برای آشنایی بیشتر اینجا را بخوانید.

فریم‌ورک MLX توسط اپل جهت توسعه و اجرای مدل‌های زبانی در پردازنده‌های Apple Silicon معرفی شده است. همچنین این فریم‌ورک اجرای بهینه مدل‌های زبانی در پردازنده‌های Apple Silicon را نیز فراهم می‌کند. منتها قبل از اجرای مدل باید آن را به فرمت سازگار با MLX تبدیل کرد. برای آشنایی بیشتر با این فریم‌ورک اینجا را بخوانید.

کوانتیزه کردن

منظور از کوانتیزه کردن (Quantization) کاهش سایز مدل است (همان فشرده‌سازی). کاهش سایز مدل منجر به کاهش فضای دیسک و کاهش مموری برای اجرای مدل می‌شود. به این ترتیب محدودیت کمبود فضا برای نگهداری و لود کردن مدل را حل می‌کند. اما در عین حال به دلیل حذف بخشی از دیتای مدل منجر به کاهش دقت آن می‌شود. در بسیاری از مدل‌های زبانی اعداد به فرمت اعشار ۳۲ بیتی یا FP32 تعریف می‌شوند. هر عدد با فرمت FP32 چهار بایت فضا را اشغال می‌کند. به عنوان نمونه یک مدل با یک میلیارد پارامتر حداقل به 4GB فضا برای ذخیره‌سازی نیاز دارد. در روش‌های کوانتیزه کردن فرمت اعداد به فرمت‌های دیگری تبدیل می‌شود تا فضای مورد نیاز برای ذخیره‌سازی آن کاهش پیدا کند. به عنوان مثال با تبدیل FP32 به INT8 فضای ذخیره‌سازی به 1GBو با تبدیل FP32 به INT16 این فضا به 2GB کاهش می‌یابد. کوانتیزه کردن می‌تواند بعد از آموزش مدل Post-Training Quantization (PTQ) و یا در حین آموزش Quantization-Aware Training (QAT) انجام شود. برای آشنایی بیشتر اینجا را بخوانید.

قابلیت‌های LM Studio

همان‌طور که اشاره شد، با استفاده از LM Studio می‌توانید از بین مدل‌های منتشر شده در HuggingFace جستجو کرده و مدل(ها) مناسب خود را انتخاب و دانلود کنید. پس از دانلود مدل و لود کردن در مموری امکان چت کردن با آن و نگهداری تاریخچه این چت وجود دارد. همچنین می‌توانید پارامترهای مختلفی از مدل زبانی را تغییر دهید.

با استفاده از LM Studio می‌توانید مدل خود را به شکل یک سرور از طریق API در دسترس قرار دهید (LM Studio as a Local LLM API Server). این قابلیت برای توسعه‌دهندگان اپلیکیشن‌های مبتنی بر LLM بسیار کاربردی است. در حال حاضر به سه شکل زیر این API در دسترس قرار می‌گیرد:

۱. مشابه APIهای OpenAI:

در این حالت باید از پکیج OpenAI در زبان برنامه‌نویسی موردنظرتان استفاده کرده و base url را برابر آدرسی که LM Studio تعریف کرده قرار دهید. به عنوان مثال برای زبان پایتون داریم:

        
        from openai import OpenAI

        client = OpenAI(
            base_url="http://localhost:1234/v1"
        )

        # ... the rest of your code ...
        
        

در این روش تنها چهار API زیر ساپورت می‌شود. برای جزئیات فنی بیشتر اینجا را بخوانید.

لیست APIها:

۲. استفاده از SDK زبان برنامه‌نویسی:

در حال حاضر تنها برای زبان‌های TS و Python پکیج رسمی معرفی شده است. برای جزئیات فنی بیشتر اینجا و اینجا را بخوانید.

۳. استفاده از REST API:

این APIها از نسخه 0.3.6 به بعد منتشر شده و در حال حاضر در ریلیز بتا قرار دارد. برای همین ممکن است در آینده تغییر کند. در این حالت پنج API زیر معرفی شده است. برای جزئیات بیشتر اینجا را بخوانید.

از نسخه 0.3.5 به بعد می‌توان مدل زبانی را به شکل یک سرویس بدون رابط گرافیکی اجرا کرد (Headless). قابل ذکر است که LM Studio برای استفاده شخصی و لوکال توسعه داده و در حال حاضر محیط پروداکشن را پشتیبانی نمی‌کند. همچنین با اضافه شدن قابلیت on-demand model loading (JIT) امکان لود کردن مدل در مموری هنگام نیاز فراهم شده است. به این ترتیب تنها در صورتی که به مدل نیاز باشد در مموری لود شده و حافظه پیوسته اشغال نمی‌ماند. طبعاً لود کردن مدل در مموری خود نیازمند صرف زمان است.

اطلاعات بیشتر در: