اگر امروز در حال توسعه یک اپلیکیشن هوش مصنوعی هستید، اشتباه گرفتن مدل پایه با یک دستیار چت، منطق محصول شما را بهکل بههم میزند. تفاوت این دو صرفاً یک تنظیم ساده نیست، بلکه یک تغییر بنیادین در اهداف آموزش است که تعیین میکند مدل به سؤال شما پاسخ دهد یا صرفاً شبیه به یک برگه آزمون عمل کند.
بسیاری از کاربران عباراتی مثل «LLM»، «GPT»، «یک مدل هوش مصنوعی» و «ChatGPT» را بهجای هم به کار میبرند، اما اینها یکی نیستند. بین مدلی که فقط اینترنت را خوانده و دستیاری که میتوانید با آن گفتگو کنید، یک نردبان از مراحل آموزشی وجود دارد. کلمات «بنیادی» (Foundation)، «دستور-محور» (Instruct) و «چت» (Chat) در واقع پلههای این نردبان هستند.
اکثر کاربران با مرحله نهایی این مسیر تعامل دارند، اما درک این پیشرفت برای توسعهدهندگان حیاتی است. این فرآیند یک موتور آماری خام را به یک دستیار مفید تبدیل میکند. برای نمایش این موضوع، یک آموزش عملی از خانواده SmolLM2-135M استفاده میکند؛ مجموعهای از مدلهای بسیار کوچک که میتوانند بدون نیاز به GPU، روی یک محیط رایگان CPU در گوگل کولب (Google Colab) اجرا شوند.
برای لمس این تفاوت، در این آموزش یک تست «عمداً غیرمنصفانه» طراحی شده است: پرسیدن یک سؤال خستهکننده و یکسان («پایتخت فرانسه چیست؟») از سه نسخه مختلف از یک خانواده مدل برای مشاهده اینکه چگونه رفتارهای آنها از یکدیگر فاصله میگیرد.
مدل بنیادی: یک تکمیلکننده آماری
یک مدل بنیادی (Foundation Model) — که اغلب مدل پایه (Base) یا پیشآموزشدیده (Pretrained) نامیده میشود — تنها با یک هدف آموزش دیده است: با داشتن تکهای از متن، توکن بعدی را پیشبینی کند. همین و بس. این مدل بخش عظیمی از اینترنت را میخواند و در ادامه دادن متن بهصورت آماری محتمل، بسیار مهارت مییابد. با این حال، هرگز به او آموزش داده نشده است که یک سؤال، لایق پاسخ است.
به نقل از مستندات این آموزش، اگر از یک مدل بنیادی مثل HuggingFaceTB/SmolLM2-135M بپرسید «پایتخت فرانسه چیست؟»، مدل فکر نمیکند که «من باید به این سؤال پاسخ دهم». در عوض، مدل میاندیشد: «در اینترنت، معمولاً بعد از خطی شبیه به این، چه چیزی میآید؟»
به همین دلیل، خروجی اغلب یک پاسخ نیست، بلکه تکرار همان الگو است. مدل ممکن است لیستی از سؤالات کوییز یا یک کاربرگ آموزشی تولید کند، مثلاً:
- پایتخت فرانسه چیست؟
- پایتخت آلمان چیست؟
- پایتخت ایتالیا چیست؟
در دفترچه کولب، این موضوع با ارسال یک رشته متن خام مستقیماً به خط لوله (Pipeline) بدون هیچ فرمتبندی خاصی نمایش داده شده است:base_pipe = pipeline("text-generation", model="HuggingFaceTB/SmolLM2-135M")base_raw_out = base_pipe(test_query, max_new_tokens=30, do_sample=False)
نتیجه این است که مدل بنیادی یک تکمیلکننده متن است، نه یک دستیار. این مدل دانش عظیمی دارد اما مفهومی از «مفید بودن» را نمیشناسد. مدل بنیادی در واقع گلِ خامی است که هر چیزی در مراحل بعدی از آن شکل میگیرد.
مدل دستور-محور: یادگیری قرارداد
یک مدل دستور-محور (Instruct Model) ابتدا یک مدل پایه است اما مرحله دوم آموزش را میگذراند: تنظیم دقیق (Fine-tuning) روی جفتهای «دستور $\rightarrow$ پاسخ». این فرآیند شامل هزاران تا میلیونها مثال با ساختار «این یک درخواست است و این یک پاسخ خوب» است. این کار به مدل یک قرارداد جدید را میآموزد: وقتی کاربر چیزی را درخواست کرد، واقعاً آن را انجام بده و سپس متوقف شو.
نکته حیاتی این است که این مدلها برای عملکرد درست به فرمت خاصی از پرامپت نیاز دارند. برای مدل HuggingFaceTB/SmolLM2-135M-Instruct، مدل انتظار توکنهای کنترلی خاصی را دارد. فرمت ورودی به این شکل است:<|im_start|>user What is the capital of France?<|im_end|> <|im_start|>assistant
توسعهدهندگان این توکنها را دستی تایپ نمیکنند. هر مدل دستور-محور یک «قالب چت» (Chat Template) دارد که در توکنایزر آن تعبیه شده است. طبق گزارش این آموزش، این سازوکار با کد زیر اجرا میشود:tokenizer = AutoTokenizer.from_pretrained(instruct_id)formatted_prompt = tokenizer.apply_chat_template([{"role": "user", "content": test_query}], tokenize=False, add_generation_prompt=True)
وقتی این «داربست پنهان» اعمال شود، مدل پاسخی تمیز و مستقیم میدهد: «پایتخت فرانسه پاریس است». بدون این فرمت، حتی یک مدل دستور-محور که به خوبی آموزش دیده است، ممکن است دوباره مثل یک مدل پایه شروع به پرگویی و تکرار الگو کند.
نتیجه این است که: مدل دستور-محور = مدل پایه + تنظیمات دستور-محور + یک فرمت پرامپت الزامی.
مدل چت: مدیریت بافتار
یک مدل چت معمولاً همان وزنهای مدل دستور-محور را دارد. تفاوت در این نیست که مدل چیست، بلکه در این است که شما چگونه آن را هدایت میکنید. بهجای یک دستور تکمرحلهای (One-shot)، شما لیستی جاری از پیامهای برچسبگذاری شده بر اساس نقش (Role) را نگه میدارید.
این معماری اجازه میدهد مدل ضمایر را تشخیص دهد (Pronoun Resolution) و حافظه را در طول نوبتهای گفتگو حفظ کند. در دفترچه کولب، این کار با یک لیست پیام مدیریت میشود:chat_history = [ {"role": "user", "content": "What is the capital of France?"}, ]chat_out = chat_pipe(chat_history, max_new_tokens=30)
جادو زمانی رخ میدهد که گفتگو ادامه یابد. اگر کاربر یک سؤال پیگیرانه و عمداً مبهم بپرسد، مثلاً «و یک بنای معروف در آنجا چیست؟»، کلمه «آنجا» بهتنهایی بیمعنی است. اما چون کل تاریخچه گفتگو به مدل بازگردانده میشود، مدل میتواند کلمه «آنجا» را به «پاریس» ارجاع دهد و یک بنای تاریخی را معرفی کند.
نتیجه این است که مدل چت، در واقع یک مدل دستور-محور است که از طریق یک لیست پیامهای چند-نوبتی هدایت میشود؛ جایی که پرامپت سیستم، نقشهای کاربر/دستیار و تاریخچه در حال رشد، تجربه «چت» را خلق میکنند.
خلاصه مقایسهای
| مدل | هدف آموزش | ورودی شما | پاسخ به «پایتخت فرانسه چیست؟» |
|---|---|---|---|
| بنیادی | ادامه دادن متن | رشته متن خام | تکرار یا ادامه دادن سند |
| دستور-محور | پیروی از یک دستور | رشته با قالب چت | پاسخ مستقیم: «پایتخت فرانسه پاریس است» |
| چت | گفتگو در چندین نوبت | لیستی از پیامها | پاسخ مستقیم + حفظ بافتار برای سؤالات بعدی |
این ساختار سهمرحلهای از مدلهای ۱۳۵ میلیون پارامتری SmolLM2 تا غولهای پیشرو (Frontier Models) با دهها یا صدها میلیارد پارامتر که در دستیارهای تجاری استفاده میشوند، یکسان است. اگرچه نسخه کوچک ۱۳۵ میلیون پارامتری ممکن است گاهی یک حقیقت را اشتباه بگوید، خودش را تکرار کند یا در میانه جمله قطع شود، اما شکاف رفتاری بین این سه حالت دقیقاً مشابه مدلهای غولپیکر است.
برای کسانی که در حال آزمایش هستند، این آموزش پیشنهاد میکند نسخه ۱۳۵ میلیون را با مدل بزرگتر HuggingFaceTB/SmolLM2-360M-Instruct جایگزین کنند تا جهش کیفیت را حس کنند. کاربران همچنین میتوانند پارامترهایی مثل do_sample=True و temperature=0.7 را تغییر دهند تا ببینند این سه حالت در مواجهه با خروجیهای خلاقانه (مانند نوشتن یک هایکو درباره دریا) چگونه بیشتر از هم فاصله میگیرند.
درک این تفاوتها، اصطلاحات پیچیده «پایه» و «چت» را شفاف میکند. مشخص میشود که یک هوش مصنوعی تجاری، یک موجود واحد نیست، بلکه لایهای از حافظه گفتگویی است که روی لایهای از تنظیمات دستور-محور قرار گرفته و همگی بر بستر پیشبینی متن جهانی بنا شدهاند.
برای مشاهده عملی این موضوع، میتوانید دفترچه foundation_instruct_chat_tutorial.ipynb را در گوگل کولب اجرا کنید (از طریق File $\rightarrow$ Open notebook $\rightarrow$ Upload). تمام سلولها را اجرا کنید (Runtime $\rightarrow$ Run all) تا خروجی خام هر مرحله را بهصورت در کنار هم مشاهده کنید. 🚀
گام بعدی شما
- دفترچه
foundation_instruct_chat_tutorial.ipynbرا در گوگل کولب اجرا کنید تا خروجی خام هر مرحله را کنار هم ببینید. - مدلهای مختلف خانواده SmolLM2 را با تغییر
temperatureتست کنید تا تفاوت خلاقیت در هر سطح را درک کنید. - اگر در حال طراحی سیستم RAG هستید، بررسی کنید که آیا مدل شما در مرحله Instruct است یا Chat تا فرمت ورودی را درست انتخاب کنید.
اما تأثیر این مراحل بر هزینه استنتاج و سرعت پاسخدهی حتی پیچیدهتر است — به تحلیل ما دربارهی بهینهسازیهای لایهی استنتاج مراجعه کنید.




گفتگو