DeepSeek-R1 را روی لپ تاپ خود با Olama اجرا کنید

دیروز، DeepSeek یک سری از مدل های زبان بسیار قدرتمند از جمله DeepSeek R1 و تعدادی از مدل های تقطیر شده (کوچکتر) را منتشر کرد که بر اساس معماری Qwen و Llama ساخته شده اند. این مدلها به دلیل عملکرد، قابلیتهای استدلال و از همه مهمتر منبع باز بودن با مجوز MIT، سر و صدای زیادی در جامعه هوش مصنوعی ایجاد کردهاند.
من این مدل ها را هم از API خود و هم به صورت محلی روی مک بوک پرو خود آزمایش کرده ام و باید بگویم که عملکرد شگفت انگیز بوده است، حتی برای مدل های کوچکتر مانند مدل های 8B و 14B. در اینجا یک معیار مقایسه DeepSeek R1 با سایر مدل های پیشرفته از OpenAI و Anthropic آورده شده است.
در این راهنما، میخواهم نحوه راهاندازی Ollama و اجرای آخرین مدلهای DeepSeek R1 را به صورت محلی در رایانه شخصی خود به شما آموزش دهم. اما قبل از شروع، بیایید نگاهی به خود مدل ها بیندازیم.
DeepSeek R1
DeepSeek R1 یک مدل زبان بزرگ است که بر استدلال تمرکز دارد. می تواند کارهایی را انجام دهد که نیاز به حل مسئله چند مرحله ای و تفکر منطقی دارند. این مدل از یک روش آموزشی ویژه استفاده می کند که تاکید بیشتری بر یادگیری تقویتی (RL) به جای تنظیم دقیق نظارتی (SFT) دارد. این رویکرد به مدل کمک میکند تا در کشف مسائل به تنهایی بهتر باشد.
این مدل منبع باز است، به این معنی که وزن آن تحت مجوز MIT در دسترس است. این به افراد اجازه می دهد تا از آن برای مقاصد تجاری استفاده کنند، تغییراتی در آن ایجاد کنند و نسخه های جدید را بر اساس آن ایجاد کنند. این با بسیاری از مدل های زبان بزرگ دیگر که منبع باز نیستند متفاوت است.
مدل های تقطیر شده: کوچکتر اما همچنان قدرتمند
DeepSeek AI نسخه های کوچکتری از این مدل را نیز منتشر کرد. این مدل های تقطیر شده در اندازه های مختلف مانند پارامترهای 1.5B، 7B، 8B، 14B، 32B و 70B عرضه می شوند. آنها بر اساس معماری Qwen و Llama هستند. این مدلهای کوچکتر قدرت استدلال مدل بزرگتر را حفظ میکنند، اما استفاده از آنها در رایانههای شخصی آسانتر است.
مدلهای کوچکتر، بهویژه مدلهای 8B و کوچکتر، میتوانند روی رایانههای معمولی با CPU، GPU یا Apple Silicon اجرا شوند. این امر باعث می شود افراد بتوانند آنها را در خانه آزمایش کنند.
اولاما چیست؟
Ollama ابزاری است که به شما امکان می دهد مدل های زبان بزرگ (LLM) را بر روی رایانه خود اجرا و مدیریت کنید. دانلود، اجرا و استفاده از این مدل ها بدون نیاز به سرور قدرتمند را آسان تر می کند. Ollama از سیستم عامل های مختلف از جمله macOS، Linux و Windows پشتیبانی می کند. به گونه ای طراحی شده است که استفاده از آن ساده باشد، با دستورات اولیه برای کشیدن، اجرا و مدیریت مدل ها.
Ollama همچنین راهی برای استفاده از مدل ها از طریق API ارائه می دهد که به شما امکان می دهد آنها را در برنامه های دیگر ادغام کنید. نکته مهم این است که Olama یک لایه سازگاری آزمایشی با OpenAI API ارائه می دهد. این بدان معنی است که اغلب می توانید از برنامه ها و ابزارهای موجود برای OpenAI با سرور محلی Ollama خود استفاده کنید. میتوان آن را برای استفاده از GPU برای پردازش سریعتر پیکربندی کرد و ویژگیهایی مانند ایجاد مدل سفارشی و اشتراکگذاری مدل را ارائه میدهد. Ollama یک راه عالی برای کاوش و استفاده از LLM بدون اتکا به خدمات مبتنی بر ابر است.
نصب اولاما
قبل از اینکه بتوانید از مدل های DeepSeek استفاده کنید، باید Olama را نصب کنید. در اینجا نحوه انجام آن در سیستم عامل های مختلف آورده شده است:
macOS
- به وب سایت Olama بروید و نصب کننده macOS را دانلود کنید.
- فایل دانلود شده را باز کرده و برنامه Olama را به پوشه Applications خود بکشید.
- برنامه Olama را راه اندازی کنید. در پس زمینه اجرا می شود و در سینی سیستم شما نشان داده می شود.
- یک ترمینال باز کنید و تایپ کنید
ollama -v
برای بررسی اینکه آیا نصب با موفقیت انجام شده است.
لینوکس
-
یک ترمینال را باز کنید و دستور زیر را برای نصب Olama اجرا کنید:
curl -fsSL https://ollama.com/install.sh | sh
-
اگر نصب دستی را ترجیح می دهید، صحیح را دانلود کنید
.tgz
بسته از وب سایت اوللاما. سپس، بسته را استخراج کنید/usr
با استفاده از این دستورات:curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz sudo tar -C /usr -xzf ollama-linux-amd64.tgz
-
برای شروع اولاما، اجرا کنید
ollama serve
. با تایپ کردن می توانید بررسی کنید که آیا کار می کندollama -v
در ترمینال دیگر -
برای راه اندازی مطمئن تر، یک سرویس systemd ایجاد کنید. ابتدا یک کاربر و گروه برای Olama ایجاد کنید:
sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama sudo usermod -a -G ollama $(whoami)
-
سپس، یک فایل سرویس ایجاد کنید
/etc/systemd/system/ollama.service
با محتوای زیر:[Unit] Description=Ollama Service After=network-online.target [Service] ExecStart=/usr/bin/ollama serve User=ollama Group=ollama Restart=always RestartSec=3 Environment="PATH=$PATH" [Install] WantedBy=default.target
-
در نهایت سرویس را راه اندازی و فعال کنید:
sudo systemctl daemon-reload sudo systemctl enable ollama sudo systemctl start ollama sudo systemctl status ollama
ویندوز
- به وب سایت اوللاما بروید و نصب کننده ویندوز را دانلود کنید (
OllamaSetup.exe
). - نصب کننده را اجرا کنید. Olama در پروفایل کاربری شما نصب خواهد شد.
- Ollama در پس زمینه اجرا می شود و در سینی سیستم شما نشان داده می شود.
- یک خط فرمان یا PowerShell را باز کنید و تایپ کنید
ollama -v
برای بررسی اینکه آیا نصب با موفقیت انجام شده است.
درک دستورات اولاما
اولاما از دستورات ساده برای مدیریت مدل ها استفاده می کند. در اینجا چند دستور کلیدی وجود دارد که به آنها نیاز دارید:
-
ollama -v
: نسخه نصب شده Ollama را بررسی می کند. -
ollama pull
: یک مدل را از کتابخانه اوللاما دانلود می کند.: -
ollama run
: یک مدل را اجرا می کند و یک جلسه چت تعاملی را شروع می کند.: -
ollama create
: با استفاده از Modelfile یک مدل سفارشی ایجاد می کند.-f -
ollama show
: اطلاعات یک مدل را نشان می دهد. -
ollama ps
: مدل هایی را که در حال حاضر در حال اجرا هستند لیست می کند. -
ollama stop
: یک مدل را از حافظه خارج می کند. -
ollama cp
: یک مدل را کپی می کند. -
ollama delete
: یک مدل را حذف می کند. -
ollama push
: یک مدل را در یک کتابخانه مدل آپلود می کند.:
مدل های DeepSeek در اولاما
مدل های DeepSeek در کتابخانه Ollama در اندازه ها و قالب های مختلف موجود است. در اینجا یک تفکیک وجود دارد:
- اندازه های مدل: مدل ها در اندازه های مختلفی مانند 1.5b، 7b، 8b، 14b، 32b، 70b و 671b عرضه می شوند. b مخفف میلیارد پارامتر است. مدل های بزرگتر معمولا عملکرد بهتری دارند اما به منابع بیشتری نیاز دارند.
- نسخه های کوانتیزه شده: برخی از مدل ها در نسخه های کوانتیزه شده موجود هستند (به عنوان مثال،
q4_K_M
،q8_0
). این نسخه ها از حافظه کمتری استفاده می کنند و می توانند سریعتر اجرا شوند، اما ممکن است کمی افت کیفیت داشته باشند. - نسخه های مقطر: DeepSeek همچنین نسخه های مقطر را ارائه می دهد (به عنوان مثال،
qwen-distill
،llama-distill
). اینها مدلهای کوچکتری هستند که آموزش دیدهاند تا مانند مدلهای بزرگتر عمل کنند و عملکرد و استفاده از منابع را متعادل کنند. - برچسب ها: هر مدل دارای یک
latest
برچسب و برچسب های خاصی که اندازه، کوانتیزه کردن و روش تقطیر را نشان می دهد.
استفاده از مدل های DeepSeek
در اینجا نحوه استفاده از مدل های DeepSeek با Olama آورده شده است:
کشیدن یک مدل
برای دانلود مدل DeepSeek از دستور زیر استفاده کنید:
ollama pull deepseek-r1:
جایگزین کنید
با برچسب خاصی از مدلی که می خواهید استفاده کنید. به عنوان مثال:
-
برای دانلود آخرین مدل 7B:
ollama pull deepseek-r1:7b
-
برای دانلود مدل 14B Qwen مقطر با
q4_K_M
کوانتیزاسیون:ollama pull deepseek-r1:14b-qwen-distill-q4_K_M
-
برای دانلود مدل 70B لاما تقطیر شده با
fp16
دقت:ollama pull deepseek-r1:70b-llama-distill-fp16
در اینجا برخی از برچسب های موجود آورده شده است:
-
latest
-
1.5b
-
7b
-
8b
-
14b
-
32b
-
70b
-
671b
-
1.5b-qwen-distill-fp16
-
1.5b-qwen-distill-q4_K_M
-
1.5b-qwen-distill-q8_0
-
14b-qwen-distill-fp16
-
14b-qwen-distill-q4_K_M
-
14b-qwen-distill-q8_0
-
32b-qwen-distill-fp16
-
32b-qwen-distill-q4_K_M
-
32b-qwen-distill-q8_0
-
70b-llama-distill-fp16
-
70b-llama-distill-q4_K_M
-
70b-llama-distill-q8_0
-
7b-qwen-distill-fp16
-
7b-qwen-distill-q4_K_M
-
7b-qwen-distill-q8_0
-
8b-llama-distill-fp16
-
8b-llama-distill-q4_K_M
-
8b-llama-distill-q8_0
اجرای یک مدل
پس از دانلود یک مدل، می توانید آن را با استفاده از دستور اجرا کنید:
ollama run deepseek-r1:
به عنوان مثال:
-
برای اجرای آخرین مدل 7B:
ollama run deepseek-r1:7b
-
برای اجرای مدل 14B Qwen-distilled با
q4_K_M
کوانتیزاسیون:ollama run deepseek-r1:14b-qwen-distill-q4_K_M
-
برای اجرای مدل 70B لاما تقطیر شده با
fp16
دقت:ollama run deepseek-r1:70b-llama-distill-fp16
با این کار یک جلسه چت تعاملی شروع می شود که در آن می توانید سوالات مدل را بپرسید.
با استفاده از API
همچنین می توانید از Ollama API با مدل های DeepSeek استفاده کنید. در اینجا یک مثال با استفاده از curl
:
curl http://localhost:11434/api/generate -d '{
"model": "deepseek-r1:7b",
"prompt": "Write a short poem about the stars."
}'
برای تکمیل چت:
curl http://localhost:11434/api/chat -d '{
"model": "deepseek-r1:7b",
"messages": [
{
"role": "user",
"content": "Write a short poem about the stars."
}
]
}'
با استفاده از OpenAI-Compatible API
Olama یک لایه سازگاری آزمایشی با بخشهایی از OpenAI API ارائه میکند. این به شما امکان می دهد از برنامه ها و ابزارهای موجود برای OpenAI با سرور محلی Ollama خود استفاده کنید.
مفاهیم کلیدی
- نقطه پایانی API: API سازگار با OpenAI Olama در ارائه می شود
http://localhost:11434/v1
. - احراز هویت: Ollama's API برای استفاده محلی به کلید API نیاز ندارد. شما اغلب می توانید از یک مکان نگهدار مانند استفاده کنید
"ollama"
برایapi_key
پارامتر در مشتری شما - سازگاری جزئی: سازگاری اولاما تجربی و جزئی است. همه ویژگیهای OpenAI API پشتیبانی نمیشوند و ممکن است تفاوتهایی در رفتار وجود داشته باشد.
- تمرکز بر عملکرد اصلی: هدف اوللاما در درجه اول پشتیبانی از عملکرد اصلی OpenAI API، مانند تکمیل چت، تکمیل متن، لیست مدل، و جاسازی است.
نقاط پایانی و ویژگی های پشتیبانی شده
در اینجا خلاصه ای از نقاط پایانی پشتیبانی شده و ویژگی های آنها آورده شده است:
-
/v1/chat/completions
- هدف: پاسخ هایی به سبک چت ایجاد کنید.
- ویژگی های پشتیبانی شده:
- تکمیل چت (مکالمات چند نوبتی).
- پاسخ های جریانی (خروجی بلادرنگ).
- حالت JSON (خروجی JSON ساختاریافته).
- خروجی های تکرارپذیر (با استفاده از a
seed
). - ویژن (مدل های چند وجهی مانند
llava
که می تواند تصاویر را پردازش کند). - ابزارها (تعداد فراخوانی تابع).
- فیلدهای درخواست پشتیبانی شده:
-
model
: نام مدل اوللاما برای استفاده. -
messages
: آرایه ای از اشیاء پیام، هر کدام دارای یکrole
(system
،user
،assistant
، یاtool
) وcontent
(متن یا تصویر). -
frequency_penalty
،presence_penalty
: تکرار را کنترل می کند. -
response_format
: فرمت خروجی را مشخص می کند (مثلاjson
). -
seed
: برای خروجی های قابل تکرار. -
stop
: دنباله هایی برای توقف تولید. -
stream
: پخش جریانی را فعال/غیرفعال می کند. -
stream_options
: گزینه های اضافی برای پخش جریانی.-
include_usage
: شامل اطلاعات استفاده در جریان است.
-
-
temperature
: تصادفی بودن را کنترل می کند. -
top_p
: تنوع را کنترل می کند. -
max_tokens
: حداکثر توکن برای تولید. -
tools
: فهرست ابزارهایی که مدل می تواند به آن دسترسی داشته باشد.
-
-
/v1/completions
- هدف: تکمیل متن را ایجاد کنید.
- ویژگی های پشتیبانی شده:
- تکمیل متن (تولید تک نوبتی).
- پاسخ های جریانی
- حالت JSON
- خروجی های قابل تکرار
- فیلدهای درخواست پشتیبانی شده:
-
model
: نام مدل اولاما. -
prompt
: متن ورودی -
frequency_penalty
،presence_penalty
: تکرار را کنترل می کند. -
seed
: برای خروجی های قابل تکرار. -
stop
: توالی ها را متوقف کنید. -
stream
: پخش جریانی را فعال/غیرفعال می کند. -
stream_options
: گزینه های اضافی برای پخش جریانی.-
include_usage
: شامل اطلاعات استفاده در جریان است.
-
-
temperature
: تصادفی بودن را کنترل می کند. -
top_p
: تنوع را کنترل می کند. -
max_tokens
: حداکثر توکن برای تولید. -
suffix
: متنی که باید بعد از پاسخ مدل اضافه شود
-
-
/v1/models
-
/v1/models/{model}
-
/v1/embeddings
نحوه استفاده از Olama با مشتریان OpenAI
در اینجا نحوه پیکربندی کلاینت های محبوب OpenAI برای کار با Olama آورده شده است:
-
کتابخانه OpenAI Python:
from openai import OpenAI client = OpenAI( base_url='http://localhost:11434/v1/', api_key='ollama', # Required but ignored ) # Example chat completion chat_completion = client.chat.completions.create( messages=[ {'role': 'user', 'content': 'Say this is a test'}, ], model='deepseek-r1:7b', ) # Example text completion completion = client.completions.create( model="deepseek-r1:7b", prompt="Say this is a test", ) # Example list models list_completion = client.models.list() # Example get model info model = client.models.retrieve("deepseek-r1:7b")
-
کتابخانه OpenAI JavaScript:
import OpenAI from 'openai'; const openai = new OpenAI({ baseURL: 'http://localhost:11434/v1/', apiKey: 'ollama', // Required but ignored }); // Example chat completion const chatCompletion = await openai.chat.completions.create({ messages: [{ role: 'user', content: 'Say this is a test' }], model: 'deepseek-r1:7b', }); // Example text completion const completion = await openai.completions.create({ model: "deepseek-r1:7b", prompt: "Say this is a test.", }); // Example list models const listCompletion = await openai.models.list() // Example get model info const model = await openai.models.retrieve("deepseek-r1:7b")
-
curl
(تماس های مستقیم API):# Chat completion curl http://localhost:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-r1:7b", "messages": [ { "role": "user", "content": "Hello!" } ] }' # Text completion curl http://localhost:11434/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-r1:7b", "prompt": "Say this is a test" }' # List models curl http://localhost:11434/v1/models # Get model info curl http://localhost:11434/v1/models/deepseek-r1:7b # Embeddings curl http://localhost:11434/v1/embeddings \ -H "Content-Type: application/json" \ -d '{ "model": "all-minilm", "input": ["why is the sky blue?", "why is the grass green?"] }'
انتخاب مدل مناسب
هنگام انتخاب مدل DeepSeek، این عوامل را در نظر بگیرید:
- اندازه: مدل های بزرگتر معمولا عملکرد بهتری دارند اما به منابع بیشتری نیاز دارند. اگر منابع محدودی دارید با مدل های کوچکتر شروع کنید.
- کوانتیزاسیون: مدلهای کوانتیزه از حافظه کمتری استفاده میکنند اما ممکن است کیفیت کمی پایینتر داشته باشند.
- تقطیر: مدل های مقطر تعادل خوبی بین عملکرد و استفاده از منابع ارائه می دهند.
بهتر است مدل های مختلف را آزمایش کنید تا ببینید کدام یک برای شما مناسب تر است.
نکات اضافی
- همیشه کتابخانه Ollama را برای آخرین مدل ها و برچسب ها بررسی کنید.
- استفاده کنید
ollama ps
برای نظارت بر منابع استفاده شده توسط مدل های خود. - شما می توانید پارامترهایی مانند
temperature
،top_p
، وnum_ctx
برای تنظیم دقیق خروجی مدل
عیب یابی
اگر مشکلی دارید، گزارشهای اوللاما را بررسی کنید:
- macOS:
~/.ollama/logs/server.log
- لینوکس:
journalctl -u ollama --no-pager
- ویندوز:
%LOCALAPPDATA%\Ollama\server.log
شما همچنین می توانید استفاده کنید OLLAMA_DEBUG=1
متغیر محیطی برای گزارش های دقیق تر.
ادامه دادن با LLM
البته اجرای این مدل ها به صورت محلی تازه شروع کار است. شما می توانید این مدل ها را با استفاده از API در برنامه های خود ادغام کنید، برنامه های کاربردی سفارشی مانند چت بات ها، ابزارهای تحقیقاتی با نسل افزوده شده با Retriever-Augmented (RAG) و غیره بسازید.
من تعدادی راهنما در مورد بررسی بیشتر این مدل ها نوشته ام مانند:
نتیجه گیری
امیدوارم این راهنما برای شما مفید بوده باشد تا به شما نشان دهد چقدر آسان است که با Olama شروع کنید و مدل های پیشرفته زبان را روی رایانه خود اجرا کنید. به یاد داشته باشید که شما فقط به مدلهای DeepSeek محدود نمیشوید، میتوانید از هر مدلی که در Ollama یا حتی مستقیماً از مدلهای موجود در پلتفرمهای دیگر مانند Hugging Face موجود است استفاده کنید.
اگر سؤال یا بازخوردی دارید، لطفاً در نظرات زیر با من در میان بگذارید.