اجرای ربات چت هوش مصنوعی DeepSeek با اولاما (Ollama)
این آموزش نحوه راهاندازی DeepSeek (یک مدل زبان بزرگ) را با استفاده از Ollama، یک ابزار مدیریت هوش مصنوعی شگفتانگیز که اجرای مدلهای هوش مصنوعی را راحتتر از همیشه میکند، توضیح میدهد. این آموزش همچنین اطلاعات پیشزمینهای در مورد مدلهای استدلال ارائه میدهد و نحوه کار آنها را توضیح میدهد.
پیشنیازها
یک سرور با اوبونتو/دبیان
- شما به دسترسی به کاربر root یا کاربری با مجوزهای sudo نیاز دارید.
- قبل از شروع، باید برخی از پیکربندیهای اولیه، از جمله فایروال را انجام دهید.
حداقل سختافزار مورد نیاز
- پردازنده: در حالت ایدهآل، یک پردازنده Intel/AMD که از AVX512 یا DDR5 پشتیبانی میکند – اما الزامی نیست. برای بررسی، میتوانید دستور زیر را اجرا کنید:
- رم: 16 گیگابایت
- فضای دیسک: حدود 50 گیگابایت
- GPU: توصیه میشود
مرحله ۱ – مفهوم و موارد استفاده مدلهای استدلال
همانطور که احتمالا از قبل میدانید، DeepSeek R1 یک مدل هوش مصنوعی استدلالی است که نوعی پیشرفته از هوش مصنوعی میباشد که برای انجام وظایفی که نیاز به درک منطقی، تحلیلی و زمینهای دارند، طراحی شده و فرآیندهای شناختی انسان مانند حل مسئله، استنتاج، استنباط و تصمیمگیری را تقلید میکند. برخلاف سیستمهای هوش مصنوعی سنتی که فقط بر تشخیص الگو یا عملیات مبتنی بر قانون متکی هستند، یک مدل هوش مصنوعی استدلالی شامل قابلیتهای شناختی پیچیدهای برای درک زمینه، نتیجهگیری از اطلاعات ناقص و تصمیمگیری بر اساس استنتاجهای منطقی است.
- نحوه آموزش مدل:
یکی از جنبههای کلیدی مدلهای استدلالی، تقطیر (distillation) است. تقطیر به جای ذخیره مقادیر زیادی اطلاعات خام، مدل را آموزش میدهد تا استدلال و خروجیهای LLM های قدرتمندتر را در طیف وسیعی از سوالات و سناریوها تکرار کند. این امر DeepSeek را قادر میسازد تا پاسخهای دقیقی ارائه دهد و در عین حال اندازه بسیار کوچکتری را حفظ کند. در نتیجه، هوش مصنوعی پیشرفته برای توسعهدهندگان و علاقهمندان کوچکتر قابل دسترسیتر میشود.
مدلهای بزرگ سنتی اغلب توسط مجموعه دادههایی که روی آنها آموزش دیدهاند محدود میشوند. با این حال، مدلهای استدلال از خروجیهای چندین LLM یاد میگیرند. با استخراج دانش از منابع متنوع، DeepSeek از طیف وسیعتری از اطلاعات بهرهمند میشود.
- سناریوهایی که در آنها از این مدل استفاده میشود:
مدلهای استدلال بر پردازش اطلاعات برای استنتاج منطقی و حل مسائل پیچیده تمرکز دارند. آنها در برنامههایی که نیاز به تصمیمگیری بر اساس دادهها دارند مفید هستند. اگر اطلاعاتی ارائه دهید، مدل میتواند از آن برای استنتاج دانش جدید یا حل مسائل به صورت ساختاریافته استفاده کند.
- نحوه پاسخ مدل:
وقتی سوالی میپرسید، مدل خروجیای را برمیگرداند که شامل دو بخش است:
شرح بخش
زنجیره فکر مدل در مورد مسئله فکر (think) میکند. تجزیه و تحلیل گام به گام انجام میدهد، مراحل میانی را مشخص میکند و فرآیند استدلال خود را توضیح میدهد.
پاسخ نتیجه یا نتیجهگیری نهایی حاصل از فرآیند استدلال.
در ترمینال، به این شکل خواهد بود:
سرور مجازی یک ماشین مجازی کامل است که امکان تغییر در سیستم عامل آن برای کاربر فراهم میباشد.
خرید سرور مجازی در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
مرحله 2 – نصب Ollama
ما از Ollama استفاده خواهیم کرد. برای شروع سریع، میتوانید از اسکریپت نصب استفاده کنید:
کار نصب را روی دستگاه شما آغاز میکند. پس از اتمام، آماده شروع هستید.
مرحله 3 – اجرای DeepSeek
در ترمینال، اکنون میتوانید هر مدل هوش مصنوعی موجود با Ollama را شروع کنید.در اینجا، مدل استدلال متنباز DeepSeek R1 را نمایش خواهیم داد. Ollama تمام اندازههای مدل موجود (پارامترهای 1.5b، 7b، 8b، 14b، 32b، 70b و 671b) را ارائه میدهد. مثلا با سرور Hetzner GEX130، میتوانید تا یک مدل 70b را با کوانتیزاسیون اجرا کنید. در سرور Hetzner GEX44، توصیه میکنیم با مدل 7b شروع کنید و در صورت نیاز آن را افزایش دهید.
اکنون میتوانید شروع به پرسیدن سوال کنید. در برخی موارد، مدل ممکن است به طور تصادفی متن چینی را در پاسخهای خود بگنجاند. این یک مشکل شناخته شده است. اگر این اتفاق افتاد، سعی کنید answer in English را به درخواست خود اضافه کنید.
مرحله 4 – استفاده از DeepSeek
در زیر دو مثال نشان داده شده است – یک درخواست تصمیمگیری، یک درخواست کدنویسی.
• مثال استدلال
بیایید سوال زیر را بپرسیم:
کدام بهتر است – یک مدل استدلال یا یک مدل زبان؟
DeepSeek R1 چیزی شبیه به این را برمیگرداند:
<think>
خیله خب، دارم سعی میکنم بفهمم که آیا یک مدل استدلالی از مدل زبانی بهتره یا برعکس. اول از همه باید بفهمم هرکدوم دقیقاً چیکار میکنن. مدل زبانی به نظر واضح میاد — تمرکزش روی درک و تولید زبان انسانیه. پس اگه ازش بخوام یه مقاله بنویسه یا چیزی رو ترجمه کنه، این کارو برام انجام میده. احتمالاً با یادگیری از حجم زیادی از دادههای متنی، تو پیشبینی کلمه یا جمله بعدی بهتر میشه. در مقابل، مدل استدلالی پیچیدهتر به نظر میرسه. تا جایی که متوجه شدم، این مدلها فقط به زبان محدود نمیشن؛ بلکه اطلاعات رو پردازش میکنن و براساس اونها استنتاج منطقی انجام میدن. اگه یه سری واقعیت بهش بدی، میتونه ازشون دانش جدید استنتاج کنه یا مسائل رو بهصورت ساختاریافته حل کنه. اگه بخوام مقایسه کنم، مدل زبانی برای وظایف زبانی تخصص داره، درحالیکه مدل استدلالی برای کارهای شناختی که شامل منطق و استنتاجه مناسبتره. اما نمیتونم بگم کدوم ذاتاً بهتره — احتمالاً بستگی به نوع وظیفهای داره که در پیشه. شاید موضوع اینه که بدونیم چطور این دو میتونن مکمل هم باشن. تو سناریوهای دنیای واقعی، معمولاً هم به زبان برای ارتباط نیاز داریم و هم به استدلال برای درک زمینه یا گرفتن تصمیم براساس اطلاعات. پس شاید ترکیب این دو یه راهحل جامعتر ارائه بده. همچنین، فکر میکنم ممکنه موقعیتهایی وجود داشته باشه که یکی از این دو واقعاً عملکرد بهتری داشته باشه. مثلاً اگه یه اپ بسازم که باید مکالمات عمیق با کاربران داشته باشه (مثل چتباتها)، یه مدل زبانی برای ایجاد تعاملات طبیعی و منسجم ضروریه. ولی اگه اپ نیاز به درک دادههای پیچیده یا حل مسائل دشوار بر مبنای اون دادهها داشته باشه، شاید مدل استدلالی ارزش بیشتری ایجاد کنه. یه نکته دیگه هم کاربردهای هرکدومه. مدلهای زبانی بهطور گسترده در حوزههایی مثل پردازش زبان طبیعی، تولید متن، ترجمه و … استفاده میشن چون اساس تعاملات ما با زبانه. در مقابل، مدلهای استدلالی شاید بیشتر تخصصی باشن ولی تو سیستمهای هوش مصنوعی خاص که نیاز به استدلال منطقی دارن، مثل موتورهای جستوجو، سیستمهای خبره یا سیستمهای خودمختار، حیاتی هستن. همچنین به پیشرفتها در هر حوزه فکر میکنم. مدلهای زبانی با معماریهای مدرن مثل ترنسفورمر (مثل BERT یا GPT) پیشرفتهای عظیمی داشتن و خیلی دقیقتر و همهکارهتر شدن. مدلهای استدلالی شاید از پیشرفتهای مربوط به هوش منطقی یا استدلال احتمالاتی بهره ببرن، ولی توسعهشون ممکنه سختتر یا کمدسترستر از مدلهای زبانی باشه. در آخر، بحث ادغام این دو هم هست. ترکیب تواناییهای زبانی و استدلالی توی یه مدل میتونه انعطاف و توانمندی بیشتری برای انجام وظایف پیچیده فراهم کنه. البته این باعث افزایش پیچیدگی و مصرف منابع محاسباتی هم میشه، که همیشه امکانپذیر نیست.<think/>
نتیجهگیری: اینکه مدل استدلالی یا مدل زبانی “بهتره”، کاملاً به نوع وظیفه یا کاربرد مورد نظر بستگی داره. خلاصهای از نکات کلیدی:
مدلهای زبانی: برای درک و تولید زبان انسان طراحی شدهان. توی وظایفی مثل تولید متن، ترجمه، خلاصهسازی و گفتوگوی ماشینی (مثل چتباتها) عالی عمل میکنن. معماریهایی مثل BERT و GPT پیشرفت زیادی در این زمینه ایجاد کردهن.
مدلهای استدلالی: تمرکزشون روی پردازش اطلاعات و انجام استنتاج منطقیه. برای کاربردهایی که تصمیمگیری براساس داده نیاز دارن، مثل سیستمهای خبره یا سیستمهای خودران، مناسبتر هستن.
استفاده مکمل: در بسیاری موارد، بهترین راهحل ترکیب هر دو مدله. مدل زبانی برای تعاملات زبانی، و مدل استدلالی برای قابلیتهای شناختی و منطقی استفاده میشه.
در این مثال استدلال، میتوانید ببینید که مدل قبل از انجام هرگونه مقایسه یا قضاوت، با تعریف هر دو گزینه شروع میکند. نقاط قوت آنها را بررسی میکند و با بررسی دیدگاهها و سناریوهای مختلف از نتیجهگیریهای زودهنگام جلوگیری میکند.
-
مثال کدنویسی
بیایید سوال زیر را بپرسیم:
یک اسکریپت ساده پایتون که “سلام دنیا!” را برمیگرداند، چگونه به نظر میرسد؟
DeepSeek R1 چیزی شبیه به این را برمیگرداند:
<think>
باشه، باید یه اسکریپت ساده پایتون بنویسم که “Hello World!” رو چاپ کنه. خب، بذار ببینم چطوری میشه این کار رو انجام داد. یادم هست تو کلاسها گفتن که در پایتون، برای چاپ پیامها از تابع `print()` استفاده میشه. پس شاید به همین سادگی باشه که بنویسم: `print(“Hello World!”)`. اما صبر کن، چیز دیگهای هم لازمه؟ فکر کنم باید مطمئن شم که رشتهای که داخل تابع print گذاشتم دقیقاً همون “Hello World!” باشه. بذار ببینم آیا لازمه دور هر حرف نقلقول بذارم یا نه. نه، توی پایتون کافیه کل رشته رو داخل کوتیشن بذاری و مستقیم به تابع print بدی. پس نوشتن print(“Hello World!”) باید کافی باشه. صبر کن، آیا نیاز به چیز دیگهای هم هست؟ کاربر خواسته یه اسکریپت ساده بده که “Hello World!” رو نشون بده، پس احتمالاً فقط همون کد رو میخواد بدون هیچ توضیح یا مدیریت خطایی اضافی. این منطقیه چون اضافه کردن چیزهای زیاد ممکنه برای کسی که تازه شروع کرده، گیجکننده باشه. باید اینم در نظر بگیرم که آیا باید توی محیط خاصی اجرا بشه یا نه، اما چون پایتونه، تا وقتی که سینتکس درست باشه، روی بیشتر سیستمها جواب میده. احتمالاً کاربر برای یه اسکریپت انقدر ساده لازم نیست نگران این موضوع باشه. اگه همه اینا رو کنار هم بذارم، اسکریپت فقط یه خطه: print(“Hello World!”). فکر نمیکنم نیازی به ایمپورت هیچ کتابخونهای باشه چون این فقط یه دستور سادهی چاپه و از هیچ تابع یا کلاس خاصی استفاده نمیکنه. پس همین کافیه.
<think/>
در نتیجه، این هم یک اسکریپت ساده پایتون که “Hello World!” رو چاپ میکنه:
وقتی این اسکریپت رو اجرا کنی، متن “Hello World!” در ترمینال یا کنسول نمایش داده میشه.
در این مثال کدنویسی، میتوانید ببینید که مدل از قبل پاسخ را در چند جمله اول میداند. به جای پاسخ دادن فوری، استدلال خود را زیر سوال میبرد و بررسی میکند که آیا چیزی را از قلم انداخته یا اشتباه دیگری مرتکب شده است یا خیر. همچنین قبل از پاسخ دادن، سناریوها و محیطهای مختلف را تجزیه و تحلیل میکند.
نتیجهگیری
در این آموزش، کمی در مورد مفاهیم فنی DeepSeek و نحوه استفاده از آن یاد گرفتید. توصیه میکنیم با اندازههای مختلف پارامتر DeepSeek R1 و همچنین با انواع مدلهای هوش مصنوعی موجود در ollama.com/search امتحان کنید. دستور ollama run <model_name> برای همه مدلهای مبتنی بر Ollama یکسان است.