احتمالاً برای شما هم پیش آمده که بخواهید دادههای مهم پروژهتان را به یک هوش مصنوعی بسپارید، اما نگرانی از نقض حریم خصوصی یا محدودیتهای تحریم و قطعشدن APIها شما را منصرف کرده باشد. اما باید خوشحال باشیم که امکان اجرای Llama 3.1 (مدل زبانی متنباز و قدرتمند متا) روی سختافزار اختصاصی، ورق را برمیگرداند.
اجرای مدل هوش مصنوعی بهصورت محلی (لوکال) یا روی سرور اختصاصی، به این معنی است که شما یک دستیار همهفنحریف دارید که بدون محدودیت و با حفظ کامل امنیت دادهها، فقط برای شما کار میکند. در این مقاله، آموزش اجرای Llama 3.1 را قدمبهقدم پیش میبریم تا ببینیم چطور میتوان این مدل را با کمترین دردسر روی سیستم شخصی یا سرور راهاندازی کرد.
فهرست مطالب
پیشنیازهای سختافزاری و نرمافزاری

قبلاز اینکه مستقیماً سراغ دانلود و نصب Llama 3.1 برویم، بیایید وضعیت سختافزارتان را بررسی کنیم. خیلی از توسعهدهندگان وسط کار با خطای کمبود حافظه (Out of Memory) مواجه میشوند، صرفاً چون منابع مورد نیاز مدل را دستکم گرفتهاند. اجرای مدل LLM روی سیستم شخصی یا حتی اجرای مدل LLM روی VPS، وابستگی شدیدی به میزان RAM و VRAM (حافظه کارت گرافیک) دارد.
مدلهای لاما ۳ عمدتاً در دو نسخه ۸ میلیارد پارامتری (8B) و ۷۰ میلیارد پارامتری (70B) منتشر شدهاند که هرکدام پیشنیازهای متفاوتی دارند:
- مدل 8B (مناسب سیستمهای شخصی): به حداقل ۸ تا ۱۶گیگابایت RAM سیستم و کارت گرافیکی با حداقل ۱۶ گیگابایت VRAM نیاز دارد.
- مدل 70B (مناسب سرورها): پردازش این حجم بزرگ دیتا شوخیبردار نیست؛ حداقل ۶۴ گیگابایت RAM و کارت گرافیکهای قدرتمند (مثل پردازندههای گرافیکی دیتاسنتر یا ترکیب چند GPU) با حداقل ۴۰ تا ۸۰ گیگابایت VRAM میطلبد.
سیستمعاملهای پشتیبانیشده:
از بابت سیستمعامل جای نگرانی نیست. نصب و اجرای Llama 3 در لینوکس، ویندوز و حتی سیستمهای مک (مجهز به پردازندههای سری M اپل) بهراحتی امکانپذیر است و ابزارهای واسط روی تمامی این پلتفرمها پایدار هستند.
اجرای Llama 3.1 روی سیستم شخصی
وقتی صحبت از اجرای Llama 3.1 روی سیستم شخصی میشود، هدف اصلی این است که بدون وابستگی به اینترنت، تحریمها یا سرویسهای ابری، یک دستیار هوشمند تمامعیار روی سیستم خود داشته باشیم. خوشبختانه، جامعه متنباز ابزارهای فوقالعادهای برای سادهسازی این فرایند توسعه دادهاند. دیگر نیازی نیست درگیر تنظیمات پیچیده پایتون یا نصب دستی پیشنیازهای گیجکننده شوید. در ادامه، چهار روش بسیار محبوب، سریع و کاربردی برای راهاندازی لوکال این مدل هوش مصنوعی را بررسی میکنیم.
۱- اجرای Llama 3.1 با Ollama و با نت داخلی
اگر میخواهید در کمتر از چند دقیقه و بدون درگیری با کدهای پیچیده به نتیجه برسید، Ollama بهترین همراه شما است. این ابزار بهطور خاص طراحی شده تا پیچیدگیهای اجرای مدلهای بزرگ زبانی (LLM) را پنهان کند. برای شروع، کافی است به سایت رسمی Ollama بروید و نسخه متناسب با سیستمعامل خود را نصب کنید. در شرایط قطعی اینترنت بینالملل هم میتوانید آخرین نسخه را از لینک داخلی زیر دانلود کنید:
سپس، ترمینال (یا Command Prompt) را باز و این دستور ساده را وارد کنید:
ollama run llama3.1
با اجرای این دستور چه اتفاقی میافتد؟
اولاما بهطور خودکار فایلهای نسخه ۸ میلیارد پارامتری (حدود ۴.۷ گیگابایت) را دانلود میکند (نیاز به تغییر پراکسی). اگر تغییر آیپی ممکن نیست، از همان لینک بالا نسخه ۸ میلیاردی را دانلود کنید. طبق بررسی ما، این فایل حاوی دو پوشه به نامهای blobs و manifests است. این فایلها بکآپ مستقیم از خود اولاما هستند.
در اینصورت برای اجرای Llama 3.1 بهصورت کاملاً آفلاین، کارهای زیر را انجام دهید:
- پیداکردن مسیر Ollama در سیستم: کلیدهای Win + R را بزنید تا پنجره Run باز شود. عبارت
%USERPROFILE%\.ollama\modelsرا تایپ کنید و اینتر بزنید. - انتقال فایلها: محتویات پوشهای که دانلود کردهاید (یعنی دو فولدر blobs و manifests) را دقیقاً در همین مسیر کپی (Paste) کنید. اگر پیغامی برای جایگزینی (Replace/Merge) دریافت کردید آن را تایید کنید.
- اجرای مدل: حالا ترمینال (CMD یا PowerShell) را باز کنید و فقط تایپ کنید:
ollama run llama3.1
اولاما بلافاصله فایلهای کپیشده را شناسایی میکند و بدون نیاز به حتی یک کیلوبایت دانلود اینترنتی، مدل را در حافظه بارگذاری میکند. حالا میتوانید چت با لاما ۳.۱ را شروع کنید!
اگر سیستم یا سرور قدرتمندی دارید و دسترسی به اینترنت بینالملل هم دارید و میخواهید نسخه ۷۰ میلیارد پارامتری را امتحان کنید، کافی است دستور ollama run llama3.1:70b را وارد کنید. یکی از جذابیتهای اصلی اولاما این است که منابع سیستم (RAM و VRAM) را بهطور کاملاً هوشمند مدیریت میکند تا از خطاهای رایج جلوگیری شود.
اجرای Llama 3.1 با Docker

گاهی اوقات توسعهدهندگان ترجیح میدهند محیط سیستمعامل خود را دستنخورده نگه دارند یا درحال ساخت اپلیکیشنی هستند که نیاز به محیطی کاملاً ایزوله دارد. در این موارد، ترکیب کانتینرهای Docker (داکر) با مدلهای زبانی به کمک ما میآید. اجرای ایزوله با کانتینر، پایداری بالاتری برای پروژههای نرمافزاری به همراه دارد.
برای شروع، مطمئن شوید که Docker Desktop روی سیستم شما درحال اجرا است. ابتدا کانتینر رسمی اولاما را با دستور زیر دانلود و راهاندازی میکنیم:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
سپس، برای فراخوانی و اجرای Llama 3.1 در داخل همین کانتینر ایزوله، دستور زیر را وارد کنید:
docker exec -it ollama ollama run llama3.1
به همین سادگی، شما مدل را در یک محیط بسته و امن اجرا کردهاید و میتوانید ازطریق پورت 11434 آن را به برنامههای خود متصل کنید.
اجرای Llama 3.1 با Python
برای توسعهدهندگانی که میخواهند هوش مصنوعی را مستقیماً در دل اپلیکیشنهای خود جا دهند، اجرای Llama 3.1 با استفاده از زبان پایتون و کتابخانه معروف Transformers از Hugging Face، منعطفترین روش ممکن است. با این روش شما کنترل کاملی روی پارامترهای مدل، نحوه توکنایز شدن (Tokenization) و مدیریت حافظه (GPU یا CPU) دارید.
برای شروع اجرای مدل Llama 3.1 با پایتون، ابتدا باید پیشنیازها را نصب کنید:
pip install transformers torch accelerate
سپس با استفاده از قطعه کد زیر، میتوانید نسخه ۸ میلیاردی (8B) لاما 3.1 را فراخوانی کنید. فراموش نکنید که برای دانلود اولیه مدل از هاب Hugging Face، به اینترنت آزاد (یا تنظیم پراکسی روی ترمینال) نیاز دارید:
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3.1-8B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [{"role": "user", "content": "رایانش ابری فردوسی"}]
outputs = pipeline(messages, max_new_tokens=256)
print(outputs[0]["generated_text"])
نکته حرفهای: به دلیل حجم بالای مدل، استفاده از پارامتر device_map=”auto” به پایتون اجازه میدهد تا بهصورت هوشمندانه لایههای مدل را بین RAM سیستم و VRAM کارت گرافیک شما تقسیم کند تا به خطای کمبود حافظه (Out of Memory) برخورد نکنید.
اجرای Llama 3.1 در Jupyter Notebook
اگر درحال یادگیری ماشین (Machine Learning) هستید یا میخواهید پرامپتها و خروجیهای لاما 3.1 را قدمبهقدم تست کنید، محیط Jupyter Notebook بهترین بستر برای شماست. اجرای Llama 3.1 در نوتبوکهای ژوپیتر این امکان را به شما میدهد که کدها را به بخشهای کوچکتر (Cell) تقسیم کنید و بدون نیاز به اجرای مجدد کل برنامه، خروجی هر بخش را جداگانه موردبررسی قرار دهید.
این روش برای پژوهشگران دیتا ساینس بسیار محبوب است. کافی است یک نوتبوک جدید بسازید و سلول اول را به وارد کردن کتابخانهها تخصیص دهید. سپس در سلولهای بعدی، مدل را لود کرده و پرامپتهای مختلف را روی آن آزمایش کنید. یکی از مزیتهای بزرگ این روش، امکان مستندسازی کدها است؛ شما میتوانید بالای هر بلاک کد در ژوپیتر، با استفاده از Markdown یادداشتهای خود را درباره عملکرد مدل و نتایج پرامپت بنویسید.
درصورتیکه سیستم شخصی شما منابع کافی برای اجرای مدل را ندارد، میتوانید فایل ژوپیتر نوتبوک خود را به پلتفرمهای ابری رایگان مثل Google Colab یا سرور ژویپتر لب ما منتقل کنید و از منابع پردازشی قدرتمندتر آنها بهره ببرید.
اجرای Llama 3.1 روی سرور
وقتی مرحله تستهای اولیه روی سیستم شخصی تمام میشود، دیگر کامپیوترهای خانگی پاسخگوی نیازهای واقعی و تجاری نخواهند بود. برای اجرای Llama 3.1 آفلاین روی سرور، هدف اصلی ما رسیدن به مقیاسپذیری، پاسخگویی ۲۴ ساعته و سرویسدهی همزمان به دهها یا صدها کاربر است.
استفاده از vLLM

یکی از بزرگترین چالشها در اجرای مدلهای زبانی روی سرور، مدیریت درخواستهای همزمان (Concurrent Requests) بدون افت سرعت است. اگر از ابزارهای سادهای مثل Transformers در سرور استفاده کنید، با ورود همزمان چند کاربر، سرور دچار گلوگاه و خطای کمبود حافظه میشود.
برای حل این مشکل تخصصی، فریمورک متنباز vLLM بهترین انتخاب است. این کتابخانه با استفاده از تکنیک پیشرفتهای به نام PagedAttention، سرعت خروجی مدل (Throughput) را بهطرز چشمگیری افزایش میدهد و از هدررفت حافظه کارت گرافیک جلوگیری میکند.
برای اجرای مدل با vLLM روی سرور پایتونی خود، ابتدا آن را نصب کنید (pip install vllm) و سپس از قطعه کد زیر برای لودکردن نسخه ۳.۱ استفاده کنید:
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
model_id = "meta-llama/Meta-Llama-3.1-8B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
messages = [
{"role": "user", "content": "The capital of France is"}
]
# فرمتدهی خودکار با توکنایزر
prompt = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
llm = LLM(model=model_id)
sampling_params = SamplingParams(temperature=0.8, top_p=0.95, max_tokens=256)
outputs = llm.generate([prompt], sampling_params)
for output in outputs:
print(f"Generated text: {output.outputs[0].text!r}")
ایجاد API
بعداز اجرای موفقیتآمیز مدل با vLLM روی سرور، قدم بعدی متصل کردن آن به فرانتاند (Front-end) یا نرمافزارهای سمت کاربر است. خوشبختانه vLLM قابلیتی تعبیهشده دارد که به شما اجازه میدهد یک سرور API کاملاً سازگار با استاندارد OpenAI بسازید.
این یعنی اگر کدهای برنامهی شما قبلاً برای اتصال به ChatGPT نوشته شدهاند، حالا بدون هیچ تغییر ساختاری میتوانند به سرور اختصاصی Llama 3.1 شما متصل شوند! کافی است دستور زیر را در ترمینال سرور اجرا کنید:
python -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3.1-8B-Instruct
با اجرای این دستور، مدل شما روی پورت 8000 سرور در دسترس قرار میگیرد و میتوانید دقیقاً مشابه APIهای شرکت OpenAI (با همان ساختار JSON)، با مدل اختصاصی خودتان تبادل اطلاعات کنید.
اجرای Llama 3.1 بدون GPU شخصی
اجرای لوکال مدلهای زبانی بزرگی مانند Llama 3.1، باوجود تمام مزیتهایی که در حفظ حریم خصوصی دارد، با یک مانع بزرگ یعنی محدودیت سختافزاری روبهرو است. برای اجرای روان نسخه ۷۰ میلیاردی یا حتی فاینتیون کردن نسخه ۸ میلیارد پارامتری، به کارتگرافیکهایی با VRAM بالا نیاز دارید. درگیری با پیشنیازهای نصب، داغ شدن سیستم، خطاهای کمبود حافظه (Out of Memory) و از همه مهمتر، هزینههای نجومی خرید GPU، سرعت توسعه پروژههای هوش مصنوعی را بهشدت کاهش میدهد.

طبق گزارش وبلاگ توسعهدهندگان NVIDIA، مهاجرت به زیرساختهای ابری نهتنها پیچیدگیهای نگهداری سختافزار را حذف میکند، بلکه مقیاسپذیری آنی را در اختیار تیمها قرار میدهد. برای رهایی از درگیریهای نصب و قطعیهای سیستم شخصی، امروزه استفاده از یک سرور هوش مصنوعی ابری آماده، بهعنوان راهحلی بیدغدغه برای دسترسی به یک دستیار هوشمند دائمی شناخته میشود.
با اجاره سرور هوش مصنوعی قدرتمند در ابر فردوسی، بدون نیاز به خرید سختافزار، به جدیدترین تکنولوژیهای پردازشی دسترسی خواهید داشت و لذت AI بدون GPU شخصی را تجربه خواهید کرد.
برای آشنایی بیشتر با سرور هوش مصنوعی ابری پیشنهاد میکنیم که از مقاله زیر شروع کنید.
مزایای مهم این زیرساخت برای توسعهدهندگان هوش مصنوعی عبارتنداز:
- تنوع پردازشی در هر مقیاس: دسترسی به گرافیکهای سری RTX (برای توسعه و آموزش متوسط)، پردازندههای Tesla (پروژههای سازمانی و یادگیری عمیق) و گرافیکهای غولپیکر سری H با موتور Transformer (بهینه برای پردازش LLMها).
- پرداخت اقتصادی و ساعتی: شروع هزینه از ساعتی ۲۰ هزارتومان با منابع کاملاً اختصاصی (بدون اشتراکگذاری با دیگران).
- خاموشی هوشمند: امکان خاموش کردن سرور در ساعات عدم استفاده برای مدیریت هزینهها، همراه با تضمین حفظ کامل دادهها و اطلاعات.
- تحویل آنی و محیط بهینه: سرورهای مجهز به رم DDR4 و هارد NVMe، با پکیجهای آماده برای یادگیری ماشین و پردازش تصویر.
- شروع بدون ریسک: ۱۰۰ هزارتومان اعتبار رایگان و امکان استفاده تستی برای اطمینان از عملکرد منابع
جمعبندی
در این مقاله صفر تا صد روشهای اجرای Llama 3.1 را بررسی کردیم. اگر هدف شما یادگیری، تست پرامپتها یا استفاده محدود است، روشهای اجرای لوکال با Ollama، کانتینرهای Docker یا اسکریپتهای Python روی سیستم شخصی بهترین انتخابها هستند. اما اگر برای پروژهای عملیاتی برنامهریزی میکنید که نیازمند سرعت بالا و پاسخدهی به دهها کاربر همزمان است، مهاجرت به یک سرور هوش مصنوعی اختصاصی و مدیریت مدل با فریمورک vLLM، مطمئنترین و حرفهایترین مسیر ممکن خواهد بود.
انتخاب روش مناسب مستقیماً به ابعاد پروژه و بودجه شما بستگی دارد. شما برای اجرای مدلهای زبانی مانند لاما، کار با سیستم شخصی را ترجیح میدهید یا استفاده از سرورهای ابری مقرونبهصرفه را؟ چالشها، ارورها و تجربیات خود را در بخش نظرات همین پست بنویسید تا در سریعترین زمان راهنماییتان کنیم.
منابع:
ai.meta | github | ollama | hub.docker | huggingface | docs.vllm | nvidia
سؤالات متداول
چطور مدل 70B را روی یک گرافیک با ۲۴ گیگابایت VRAM (مثل RTX 3090/4090) اجرا کنیم؟
برای این کار باید از نسخههای کوانتایز شده (فشرده) استفاده کنید. دانلود فایلهای GGUF با فشردهسازی ۴-بیت (مثل نسخه Q4_K_M) حجم مدل 70B را به حدود ۱۸ تا ۲۰ گیگابایت کاهش میدهد و بهراحتی روی یک گرافیک ۲۴ گیگابایتی اجرا میشود، این درحالی است که افت دقت آن برای کارهای روزمره تقریباً نامحسوس است.
برای اجرای روان لاما در حالت تمام-دقت (FP16) به چقدر VRAM نیاز داریم؟
اجرای مدل ۸ میلیاردی در حالت FP16 حداقل به ۱۶ گیگابایت VRAM و مدل ۷۰ میلیاردی به حدود ۱۴۰ گیگابایت VRAM نیاز دارد. به همین دلیل اجرای نسخه اصلی 70B معمولاً فقط روی سرورهای چندگرافیکه امکانپذیر است.
بهترین رابط کاربری گرافیکی (GUI) برای تازهکارها چیست؟
اگر محیطی شبیه به ChatGPT میخواهید، ترکیب Ollama با Open WebUI بهترین گزینه است. همچنین نرمافزار LM Studio با رابط کاربری یکپارچه، امکان دانلود و اجرای مدلها را تنها با چندکلیک فراهم میکند.
برای دستیار کدنویسی خانگی، Llama 3 بهتر است یا Qwen 2.5؟
اگر هدف شما صرفاً برنامهنویسی است، مدلهای Qwen 2.5 (بهویژه نسخه Coder) در بنچمارکهای کدنویسی عملکرد درخشانتری روی سیستمهای خانگی دارند. اما Llama 3.1 (نسخه 8B) یک دستیار همهکاره (Generalist) بسیار قدرتمند است که درک عمومی و قدرت استدلال بهتری دارد.
نحوه صحیح و اجرای LLM با API در محیط پروداکشن چیست؟
برای سرورهای عملیاتی، کتابخانه ترانسفورمرز (Transformers) کند است. بهترین راه، استفاده از vLLM یا TGI است. فریمورک vLLM به شما اجازه میدهد با یک دستور ساده، یک API کاملاً سازگار با OpenAI بسازید تا اپلیکیشن شما بتواند درخواستها را با بالاترین سرعت به مدل ارسال کند.
با محدودیتهای اجرای LLM در ایران چه کنیم؟ (مشکل تحریم Hugging Face)
برای اجرای LLM در ایران و دورزدن ارورهای دسترسی دو راهکار دارید:
استفاده از پراکسی یا DNSهای تحریمشکن برای ترمینال
استفاده از ابزار Ollama که فرایند دانلود را مدیریت میکند و معمولاً کمتر دچار قطعی میشود.
چرا مدل گاهی جملات را تکرار میکند یا بیربط جواب میدهد؟
این مشکل (Repetition Loop) معمولاً بهدلیل تنظیم نبودن پارامترها است. برای رفع آن، مقدار repetition_penalty را روی 1.1 تا 1.2 تنظیم کنید. همچنین در نسخه ۳.۱، استفاده نکردن از توکنهای دقیق پایانی (مثل <|eot_id|>) در پرامپت، باعث گیجشدن مدل و تولید متون بینهایت یا تکراری میشود. ابزارهایی مثل Ollama این فرمتها را بهطور خودکار مدیریت میکنند.
چرا مدل 8B در فراخوانی ابزارها (Tool Calling) ضعیف عمل میکند؟
مدلهای کوچکتر مانند 8B ظرفیت استدلال کمتری برای درک ساختار JSON یا دستورات پیچیده ابزارها دارند. برای بهبود این مورد، باید از تکنیک Few-Shot Prompting استفاده کنید (چند مثال دقیق از نحوه استفاده از ابزار را در System Prompt به مدل بدهید). برای کارهای پیچیده عاملهای هوشمند (Agents)، نسخه 70B پیشنهاد میشود.
دلیل تغییر هویت مدل و نامگذاری عجیب خودش چیست؟
اگر مدل خود را با نامهای عجیبی (مثل Luminaria) معرفی میکند، به احتمال زیاد Temperature (درجه خلاقیت) بسیار بالا تنظیم شده است (بالاتر از 0.8). همچنین اگر از مدلهای فاینتیون شده (توسط کامیونیتی) استفاده میکنید، ممکن است توسعهدهنده هویت مدل را در دادههای آموزشی تغییر داده باشد. استفاده از مدل رسمی Meta-Llama-3.1-8B-Instruct و کاهش Temperature مشکل را حل میکند.
رفع ارورهای رایج هنگام لود مدل با پایتون (OOM یا عدم دسترسی) چگونه است؟
ارور Out of Memory (OOM): رم یا گرافیک شما پر شده است. پارامتر device_map=”auto” را به کد اضافه کنید یا مدل را با فرمت ۸-بیت لود کنید.
ارور Access Denied (Hugging Face): مدل Llama 3.1 نیاز به تأیید قوانین دارد. باید در سایت Hugging Face قوانین متا را تایید کنید و سپس توکن دسترسی (Access Token) خود را در محیط پایتون لاگین کنید (huggingface-cli login).

