برنامه نویسی

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

دیروز، DeepSeek یک سری از مدل های زبان بسیار قدرتمند از جمله DeepSeek R1 و تعدادی از مدل های تقطیر شده (کوچکتر) را منتشر کرد که بر اساس معماری Qwen و Llama ساخته شده اند. این مدل‌ها به دلیل عملکرد، قابلیت‌های استدلال و از همه مهم‌تر منبع باز بودن با مجوز MIT، سر و صدای زیادی در جامعه هوش مصنوعی ایجاد کرده‌اند.

من این مدل ها را هم از API خود و هم به صورت محلی روی مک بوک پرو خود آزمایش کرده ام و باید بگویم که عملکرد شگفت انگیز بوده است، حتی برای مدل های کوچکتر مانند مدل های 8B و 14B. در اینجا یک معیار مقایسه DeepSeek R1 با سایر مدل های پیشرفته از OpenAI و Anthropic آورده شده است.

بنچمارک DeepSeek R1

در این راهنما، می‌خواهم نحوه راه‌اندازی 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

  1. به وب سایت Olama بروید و نصب کننده macOS را دانلود کنید.
  2. فایل دانلود شده را باز کرده و برنامه Olama را به پوشه Applications خود بکشید.
  3. برنامه Olama را راه اندازی کنید. در پس زمینه اجرا می شود و در سینی سیستم شما نشان داده می شود.
  4. یک ترمینال باز کنید و تایپ کنید ollama -v برای بررسی اینکه آیا نصب با موفقیت انجام شده است.

لینوکس

  1. یک ترمینال را باز کنید و دستور زیر را برای نصب Olama اجرا کنید:

    curl -fsSL https://ollama.com/install.sh | sh
    
  2. اگر نصب دستی را ترجیح می دهید، صحیح را دانلود کنید .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
    
  3. برای شروع اولاما، اجرا کنید ollama serve. با تایپ کردن می توانید بررسی کنید که آیا کار می کند ollama -v در ترمینال دیگر

  4. برای راه اندازی مطمئن تر، یک سرویس systemd ایجاد کنید. ابتدا یک کاربر و گروه برای Olama ایجاد کنید:

    sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
    sudo usermod -a -G ollama $(whoami)
    
  5. سپس، یک فایل سرویس ایجاد کنید /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
    
  6. در نهایت سرویس را راه اندازی و فعال کنید:

    sudo systemctl daemon-reload
    sudo systemctl enable ollama
    sudo systemctl start ollama
    sudo systemctl status ollama
    

ویندوز

  1. به وب سایت اوللاما بروید و نصب کننده ویندوز را دانلود کنید (OllamaSetup.exe).
  2. نصب کننده را اجرا کنید. Olama در پروفایل کاربری شما نصب خواهد شد.
  3. Ollama در پس زمینه اجرا می شود و در سینی سیستم شما نشان داده می شود.
  4. یک خط فرمان یا PowerShell را باز کنید و تایپ کنید ollama -v برای بررسی اینکه آیا نصب با موفقیت انجام شده است.

درک دستورات اولاما

اولاما از دستورات ساده برای مدیریت مدل ها استفاده می کند. در اینجا چند دستور کلیدی وجود دارد که به آنها نیاز دارید:

  • ollama -v: نسخه نصب شده Ollama را بررسی می کند.
  • ollama pull :: یک مدل را از کتابخانه اوللاما دانلود می کند.
  • ollama run :: یک مدل را اجرا می کند و یک جلسه چت تعاملی را شروع می کند.
  • ollama create -f : با استفاده از Modelfile یک مدل سفارشی ایجاد می کند.
  • 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، مانند تکمیل چت، تکمیل متن، لیست مدل، و جاسازی است.

نقاط پایانی و ویژگی های پشتیبانی شده

در اینجا خلاصه ای از نقاط پایانی پشتیبانی شده و ویژگی های آنها آورده شده است:

  1. /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: فهرست ابزارهایی که مدل می تواند به آن دسترسی داشته باشد.
  2. /v1/completions

    • هدف: تکمیل متن را ایجاد کنید.
    • ویژگی های پشتیبانی شده:
      • تکمیل متن (تولید تک نوبتی).
      • پاسخ های جریانی
      • حالت JSON
      • خروجی های قابل تکرار
    • فیلدهای درخواست پشتیبانی شده:
      • model: نام مدل اولاما.
      • prompt: متن ورودی
      • frequency_penalty، presence_penalty: تکرار را کنترل می کند.
      • seed: برای خروجی های قابل تکرار.
      • stop: توالی ها را متوقف کنید.
      • stream: پخش جریانی را فعال/غیرفعال می کند.
      • stream_options: گزینه های اضافی برای پخش جریانی.
        • include_usage: شامل اطلاعات استفاده در جریان است.
      • temperature: تصادفی بودن را کنترل می کند.
      • top_p: تنوع را کنترل می کند.
      • max_tokens: حداکثر توکن برای تولید.
      • suffix: متنی که باید بعد از پاسخ مدل اضافه شود
  3. /v1/models

  4. /v1/models/{model}

  5. /v1/embeddings

نحوه استفاده از Olama با مشتریان OpenAI

در اینجا نحوه پیکربندی کلاینت های محبوب OpenAI برای کار با Olama آورده شده است:

  1. کتابخانه 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")
    
  2. کتابخانه 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")
    
  3. 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 موجود است استفاده کنید.

اگر سؤال یا بازخوردی دارید، لطفاً در نظرات زیر با من در میان بگذارید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا