کدنویسی agentic با مدلهای محلی روی سختافزار خودت
خلاصهٔ کاملتر
نویسنده میگه چند روز پیش GitHub رفته سراغ صورتحساب مصرفی (usage-based billing) و حتی مدلهای رایگان قبلی هم دیگه رایگان نیستن. به گفتهی نویسنده قیمت مدلهای flagship با جهش زیاد معرفی میشن در حالی که کاراییشون به همون نسبت بهتر نشده. خوشبختانه مدلهای محلی اونقدر پیشرفت کردن که دیگه مجبور نیستیم تن بدیم؛ نویسنده که سه ساله روی مدلهای محلی کار میکنه میگه رام کردن مدلهای کوچیک سختتره ولی وقتی یادش بگیری، از مدلهای بزرگتر هم بهتر استفاده میکنی.
اول یه واژهنامه میسازه تا بقیهی مقاله جنگل اصطلاحات نباشه. SLM یا مدلهای زبانی کوچیک مثل LLMها هستن ولی به اندازهای کوچیکن که تو یه GPU معمولی جا بشن؛ نویسنده میگه برای کار جدی کدنویسی دستکم یه مدل ۴B میخوای. Huggingface مثل گیتهابِ مدلهاست و همونطور که برای کد open source داریم، برای مدلها open weights داریم. Inference یعنی فرایند تولید توکن، و انواع سختافزار CPU/GPU/TPU/NPU هر کدوم برای این کار فرق دارن؛ مثلاً VRAM روی GPU تعیین میکنه چقدر مدل بزرگ میتونی اجرا کنی، و Apple Silicon با معماری حافظهی مشترک (UMA) عملکرد خوبی داره.
برای اجرای مدل سه تا چیز لازمه: harness (مثل VS Code Copilot یا Pi که بخش قطعی دور مدل احتمالاتیان)، model (فایل وزنها، با quantizationهای مختلف مثل Q8 و Q4 که مثل رزولوشن تصویرن)، و runtime یا موتور inference مثل Llama.cpp و MLX و vLLM. یه model manager هم اختیاریه ولی توصیه میشه چون سختافزار و runtime رو ازت پنهون میکنه؛ گزینهها Ollama و LM Studio و Jan هستن. نویسنده میگه چون آدم GUIپسندیه، LM Studio رو ترجیح میده، هرچند open source نیست.
برای انتخاب مدل نویسنده شخصاً Gemma 4 رو پیشنهاد میده چون بین کار عمومی و تخصص تولید کد تعادل خوبی داره و سه قابلیت ضروری Tool Use و Vision و Reasoning رو داره. نسخههای مختلفش رو توضیح میده: E2B و E4B (نسخههای edge با ۲ و ۴ میلیارد پارامتر) و نسخهی مورد علاقهش یعنی 26B A4B که ۲۶ میلیارد پارامتر داره ولی فقط ۴ میلیاردش هر لحظه فعاله، چون معماری MoE یا mixture of experts داره و برای همین تو یه کارت گرافیک ۸ تا ۱۲ گیگ VRAM جا میشه.
مهمترین نکتهی راهاندازی سرور اینه که LM Studio بهصورت پیشفرض context window خیلی کوچیکی (حتی ۴k) لود میکنه، در حالی که مدلهای ابری Copilot معمولاً ۲۰۰ تا ۴۰۰k دارن. نویسنده میگه باید دستی Context Length رو زیاد کنی ولی نه خیلی زیاد، چون هرچی مصرف context بالا بره سرعت تولید توکن میاد پایین. تجربهش اینه که اگه نتونی مدل رو با حداقل ۱۰۰k توکن لود کنی، استفاده ازش تو Copilot سخته چون فقط system prompt حدود ۲۰ تا ۴۰k توکن میگیره.
یه ترفند کلیدی هم میگه: K Cache Quantization رو روی Q8_0 و V Cache رو روی Q4_0 بذاری، چون برای keyها به دقت بیشتری از valueها نیاز داری. تو تنظیمات خودش این ترکیب نیاز حافظهی GPU رو از حدود ۲۸.۷۵ گیگ به ۲۲.۴۵ گیگ کاهش داده. نکتهی مهم اینه که این تنظیمات رو حتماً ذخیره کنی چون VS Code Copilot برای ابری ساخته شده و اصلاً مفهوم درخواست context window سفارشی رو نداره، پس LM Studio باید موقع درخواست REST API اینها رو یادش باشه.
برای وصل کردن، تو Copilot یه Custom Endpoint اضافه میکنی و از بین سه نوع API فقط Chat Completions روون کار کرده. باید تو تنظیمات JSON دستی url و maxInputTokens و maxOutputTokens رو ست کنی. نویسنده هشدار میده که اولین درخواست هر session ممکنه ۲ تا ۵ دقیقه طول بکشه چون Copilot system prompt و تعریف ابزارهای حجیمش رو میفرسته و پردازش این همه توکن ورودی روی سختافزار محلی کنده؛ البته بعدش بهخاطر prompt caching سریع میشه. به گفتهی نویسنده Pi این مشکل رو نداره چون system prompt کوچیکی داره.
جمعبندی نویسنده اینه که مزیت مدلهای محلی کار آفلاین، حریم خصوصی بیشتر و گاهی سرعت پاسخ بهتره، ولی عیبهاش اینه که مدلهای open weight به اندازهی مدلهای اختصاصی flagship باهوش نیستن (هرچند یه harness خوب با lint و تست و AGENTS.md دقت رو بالا میبره)، کندی موقع شلوغی سختافزار، cold-start و هزینهی اولیهی سختافزار. برای کسایی که سختافزار کافی ندارن هم اشاره میکنه که OpenRouter یه راهحل با مدلهای رایگان داره.
نکات کلیدی:
- با گرون شدن مدلهای ابری، مدلهای محلی به یه جایگزین جدی برای کدنویسی agentic تبدیل شدن
- برای اجرا به harness و model و runtime نیاز داری؛ LM Studio کار راهاندازی رو ساده میکنه
- Gemma 4 26B A4B با معماری MoE فقط ۴B پارامتر فعال داره و تو ۸ تا ۱۲ گیگ VRAM جا میشه
- مهمترین تنظیم بالا بردن دستی context window و انتخاب درست quantization کش KVـه
- cold-start و پردازش کند توکنهای ورودی اولیه بزرگترین ضعفهای اجرای محلی هستن




