رفتن به محتوای اصلی
Koohestun
توضیح کوهستاناجرای محلیمقاله تشریحی· 6 دقیقه مطالعه· در هوش مصنوعی

چگونه فرمت GGML اجرای مدل‌های زبانی بزرگ را تنها با پردازنده مرکزی (CPU) ممکن می‌کند

معماری GGML با فشرده‌سازی وزن‌های شبکه عصبی به اعداد صحیح ۴ بیتی، از گلوگاه حافظه پردازنده‌های گرافیکی (GPU) عبور کرده و به پردازنده‌های استاندارد دسکتاپ اجازه می‌دهد تا مدل‌های پیشرفته هوش مصنوعی را به‌صورت محلی اجرا کنند.

به قلم آرش رضایی

توسعه‌دهندگان متن‌باز 40%ارائه‌دهندگان فضای ابری سازمانی 30%مجریان حریم خصوصی و سلامت 30%
توسعه‌دهندگان متن‌باز
استنتاج مبتنی بر پردازنده مرکزی را نیرویی دموکراتیزه‌کننده می‌دانند که انحصار سخت‌افزاری را می‌شکند و به هر کسی اجازه می‌دهد هوش مصنوعی را به‌صورت محلی اجرا کند.
ارائه‌دهندگان فضای ابری سازمانی
استنتاج محلی را به رسمیت می‌شناسند، اما تأکید دارند که پردازنده‌های گرافیکی برای آموزش و استقرار سازمانی با همزمانی بالا کاملاً ضروری هستند.
مجریان حریم خصوصی و سلامت
برای استنتاج محلی پردازنده مرکزی در درجه اول به‌عنوان یک اقدام امنیتی ارزش قائل هستند تا داده‌های حساس بیماران و مشتریان را از سرورهای ابری خارجی دور نگه دارند.

دیدگاه‌هایی که این گزارش پوشش نداده

  • تولیدکنندگان سخت‌افزار (بخش‌های پردازنده گرافیکی انویدیا/AMD)

ارائه‌دهندگان زیرساخت‌های ابری و تولیدکنندگان سخت‌افزار همواره استدلال می‌کنند که استقرار مدل‌های زبانی بزرگ نیازمند پردازنده‌های گرافیکی (GPU) تخصصی و به‌شدت موازی‌سازی‌شده با پهنای باند حافظه عظیم است. با این حال، شواهد به‌دست‌آمده از جامعه متن‌باز مستقیماً این الزام سخت‌افزاری را نقض می‌کند. کتابخانه تنسور GGML و فرمت فایل مرتبط با آن یعنی GGUF، نشان داده‌اند که با کوانتیزه کردن وزن‌های شبکه عصبی به اعداد صحیح ۴ بیتی و اجرای آن‌ها از طریق کدهای بهینه‌شده C/C++، پردازنده‌های مرکزی (CPU) استاندارد می‌توانند به سرعت‌های استنتاج درنگ‌درنگ دست یابند و گلوگاه GPU را کاملاً دور بزنند.[4][8]

برای درک اینکه استنتاج مبتنی بر پردازنده مرکزی چگونه کار می‌کند، ابتدا باید گلوگاه واقعی در تولید متن توسط مدل‌های زبانی بزرگ را شناسایی کرد. به‌ندرت پیش می‌آید که قدرت محاسباتی خام (واحدهای منطقی و حسابی) سرعت تولید متن را محدود کند. در عوض، مدل‌های زبانی بزرگ اساساً محدود به حافظه هستند. تولید تنها یک توکن نیازمند بارگذاری تمام پارامترهای مدل از حافظه به رجیسترهای پردازنده است.[6][8]

برای یک مدل استاندارد ۷ میلیارد پارامتری که با دقت ممیز شناور ۱۶ بیتی (FP16) ذخیره شده است، فایل مدل فضایی حدود ۱۴ گیگابایت را اشغال می‌کند. انتقال ۱۴ گیگابایت داده از حافظه استاندارد DDR5 به پردازنده برای تولید هر کلمه، از محدودیت‌های پهنای باند مادربردهای معمولی فراتر می‌رود؛ به همین دلیل است که حافظه‌های با پهنای باند بالا (HBM) در پردازنده‌های گرافیکی به استاندارد این صنعت تبدیل شدند.[6][9]

کوانتیزاسیون ردپای حافظه یک مدل را کاهش می‌دهد و به آن اجازه می‌دهد از گذرگاه‌های حافظه استاندارد پردازنده مرکزی عبور کند.

کتابخانه GGML که توسط توسعه‌دهنده‌ای به نام گئورگی گرگانوف در سال ۲۰۲۲ در کنار پروژه llama.cpp ایجاد شد، از طریق یک تکنیک فشرده‌سازی ریاضی به نام کوانتیزاسیون به این مشکل پهنای باند حافظه حمله می‌کند. کوانتیزاسیون دقت اعداد استفاده‌شده برای نمایش وزن‌های مدل را کاهش می‌دهد و آن‌ها را از اعداد ممیز شناور ۱۶ بیتی به اعداد صحیح ۸ بیتی، ۴ بیتی یا حتی ۲ بیتی کوچک می‌کند.[1][5]

شرکت Cast AI در تحلیل فنی خود از این روش در سال ۲۰۲۶ خاطرنشان می‌کند: «کوانتیزاسیون تکنیکی برای کاهش هزینه‌های محاسباتی و حافظه در اجرای استنتاج است.» با فشرده‌سازی یک وزن ۱۶ بیتی به یک عدد صحیح ۴ بیتی، کل فضای حافظه مورد نیاز برای یک مدل ۷ میلیارد پارامتری از ۱۴ گیگابایت به حدود ۴ گیگابایت کاهش می‌یابد.[6]

این کاهش، معادله سخت‌افزاری را از اساس تغییر می‌دهد. یک ردپای حافظه ۴ گیگابایتی به‌راحتی در پارامترهای عملیاتی رم‌های استاندارد دسکتاپ جای می‌گیرد و داده‌ها می‌توانند با سرعتی در گذرگاه حافظه منتقل شوند که تولید ۵ تا ۱۰ توکن در ثانیه را روی پردازنده‌های مدرن اینتل، AMD یا اپل سیلیکون امکان‌پذیر می‌سازد.[4][8]

کتابخانه GGML وزن‌ها را در بلوک‌های ۳۲ تایی گروه‌بندی می‌کند و یک ضریب مقیاس‌پذیری مشترک را برای به حداقل رساندن افت دقت در فشرده‌سازی ۴ بیتی اعمال می‌کند.

با این حال، کوانتیزاسیون ساده و ابتدایی دقت مدل را از بین می‌برد، زیرا گرد کردن اعداد پیچیده ممیز شناور به اعداد صحیح کوچک، خطاهای گرد کردن عظیمی را به همراه دارد. کتابخانه GGML این مشکل را از طریق کوانتیزاسیون بلوکی حل می‌کند. به‌جای کوانتیزه کردن یکنواخت کل مدل، GGML وزن‌ها را به بلوک‌های کوچک گروه‌بندی می‌کند که در فرمت محبوب Q4_0 معمولاً شامل ۳۲ وزن در هر بلوک است.[1][9]

با این حال، کوانتیزاسیون ساده و ابتدایی دقت مدل را از بین می‌برد، زیرا گرد کردن اعداد پیچیده ممیز شناور به اعداد صحیح کوچک، خطاهای گرد کردن عظیمی را به همراه دارد.

در داخل هر بلوک ۳۲ وزنی، سیستم یک ضریب مقیاس‌پذیری مشخص را محاسبه می‌کند. سپس وزن‌ها نسبت به آن مقیاس محلی کوانتیزه می‌شوند و به این ترتیب توزیع آماری پارامترهای شبکه عصبی حفظ می‌شود، در حالی که همچنان کاهش ۷۵ درصدی در اندازه فایل به دست می‌آید.[1]

در آگوست ۲۰۲۳، این اکوسیستم از فرمت فایل اصلی GGML به GGUF (فرمت جهانی GGML) تکامل یافت. این گذار ضروری بود زیرا فرمت اولیه فاقد قابلیت توسعه‌پذیری بود؛ افزودن متادیتاهای جدید یا پشتیبانی از معماری‌های جدید مدل، اغلب باعث از کار افتادن کدهای موجود می‌شد.[2][4]

مستندات رسمی ggml-org این تغییر را چنین تعریف می‌کند: «GGUF یک فرمت فایل برای ذخیره مدل‌ها جهت استنتاج با GGML و سایر اجراکننده‌ها است.» این فرمت یک ساختار کلید-مقدار برای متادیتا معرفی کرد که به فایل اجازه می‌دهد نه تنها وزن‌های کوانتیزه‌شده، بلکه واژگان توکنایزر، اندازه کانتکست مورد انتظار و قوانین خاص قالب‌بندی پرامپت مورد نیاز مدل را نیز در خود جای دهد.[2]

فشرده‌سازی وزن‌ها به اعداد صحیح ۴ بیتی، ردپای حافظه مدل را تقریباً ۷۵ درصد کاهش می‌دهد.

فراتر از فشرده‌سازی حافظه، GGML با استفاده گسترده از مجموعه‌دستورالعمل‌های «یک دستور، چند داده» (SIMD) که در پردازنده‌های مدرن تعبیه شده‌اند، به عملکرد بالای پردازنده مرکزی دست می‌یابد. فناوری‌هایی مانند AVX2 و AVX-512 در تراشه‌های اینتل و AMD، یا NEON در پردازنده‌های ARM، به پردازنده مرکزی اجازه می‌دهند تا یک عملیات ریاضی یکسان را به‌طور همزمان روی چندین نقطه داده انجام دهد.[3][8]

این قابلیت برای ضرب ماتریس‌ها که عملیات ریاضی هسته‌ای در استنتاج شبکه‌های عصبی است، حیاتی به شمار می‌رود. با نوشتن کدهای سفارشی C که مستقیماً این دستورالعمل‌های SIMD را هدف قرار می‌دهند، GGML پردازنده مرکزی را وادار می‌کند تا وزن‌های ۴ بیتی کوانتیزه‌شده را در دسته‌های بسیار کارآمد پردازش کرده و توان عملیاتی سیلیکون‌های استاندارد را به حداکثر برساند.[5][8]

کاربردهای عملی این معماری بسیار فراتر از آزمایش‌های سرگرمی است. پروژه MedLocalGPT که جزئیات آن در مقاله‌ای در مجموعه مقالات کارگاه CEUR در سال ۲۰۲۴ شرح داده شده است، نشان داد که چگونه ارائه‌دهندگان خدمات درمانی می‌توانند مدل‌های زبانی بزرگ را در محیط‌های مبتنی بر پردازنده مرکزی مستقر کنند تا داده‌های حساس بیماران را به‌صورت محلی پردازش کرده و از خطرات حریم خصوصی ناشی از انتقال سوابق پزشکی به خوشه‌های GPU ابری کاملاً جلوگیری کنند.[3]

استنتاج محلی با پردازنده مرکزی به توسعه‌دهندگان اجازه می‌دهد تا مدل‌های هوش مصنوعی را کاملاً به‌صورت آفلاین اجرا و آزمایش کنند و از حریم خصوصی داده‌ها اطمینان حاصل کنند.

با وجود این پیشرفت‌ها، استنتاج مبتنی بر پردازنده مرکزی از طریق GGML و GGUF محدودیت‌های سخت‌گیرانه‌ای دارد. این معماری منحصراً برای استنتاج طراحی شده است؛ یعنی فرآیند تولید متن از یک مدل ازپیش‌آموزش‌دیده. آموزش یا تنظیم دقیق یک مدل همچنان نیازمند قابلیت‌های پردازش موازی عظیم و حافظه با پهنای باند بالای پردازنده‌های گرافیکی سازمانی است.[4][7]

علاوه بر این، در حالی که استنتاج پردازنده مرکزی برای یک کاربر منفرد که در حال تولید یک جریان متن است بسیار کارآمد است، اما برای درخواست‌های همزمان عملکرد ضعیفی دارد. برنامه‌های سازمانی که به‌طور همزمان به هزاران کاربر خدمات می‌دهند، همچنان به خوشه‌های GPU متکی هستند، جایی که سخت‌افزار می‌تواند صدها پرامپت را با هم دسته‌بندی کند تا توان عملیاتی را به حداکثر برساند.[6][8]

در نهایت، معماری GGML نشان‌دهنده یک انشعاب در چشم‌انداز سخت‌افزار هوش مصنوعی است. در حالی که مرزهای آموزش مدل‌ها همچنان در انحصار خوشه‌های چند میلیارد دلاری GPU باقی مانده است، استقرار و اجرای آن مدل‌ها دموکراتیزه شده است و ثابت می‌کند که مانع ورود برای اجرای هوش مصنوعی پیشرفته دیگر یک کارت گرافیک رده‌بالا نیست، بلکه صرفاً یک پردازنده استاندارد دسکتاپ است.[5][8]

نکات کلیدی

  1. مدل‌های زبانی بزرگ محدود به حافظه هستند، به این معنی که سرعت تولید متن توسط سرعت انتقال داده‌ها از رم به پردازنده محدود می‌شود.
  2. کتابخانه GGML از کوانتیزاسیون برای فشرده‌سازی وزن‌های ۱۶ بیتی مدل به اعداد صحیح ۴ بیتی استفاده می‌کند و اندازه فایل‌ها را تقریباً ۷۵ درصد کاهش می‌دهد.
  3. این فشرده‌سازی به حافظه استاندارد دسکتاپ DDR5 اجازه می‌دهد تا داده‌ها را با سرعت کافی به پردازنده مرکزی برساند تا تولید متن درنگ‌درنگ محقق شود.
  4. کتابخانه GGML از کوانتیزاسیون بلوکی بهره می‌برد و وزن‌ها را در بلوک‌های ۳۲ تایی گروه‌بندی می‌کند تا افت دقت ذاتی ناشی از گرد کردن اعداد را به حداقل برساند.
  5. فرمت فایل GGUF در سال ۲۰۲۳ جایگزین فرمت اصلی GGML شد تا پشتیبانی بهتری از متادیتا و توسعه‌پذیری ارائه دهد.
  6. در حالی که استنتاج با پردازنده مرکزی برای کاربران منفرد به‌خوبی کار می‌کند، آموزش مدل‌ها و خدمات‌دهی به هزاران کاربر همزمان همچنان نیازمند پردازنده‌های گرافیکی سازمانی است.

چرا مهم است

این معماری با اثبات اینکه برای اجرای هوش مصنوعی لزوماً نیازی به کارت‌های گرافیک گران‌قیمت نیست، انحصار سخت‌افزاری در استقرار هوش مصنوعی را می‌شکند. این پیشرفت به پژوهشگران، کسب‌وکارهای کوچک و سازمان‌های حساس به حریم خصوصی اجازه می‌دهد تا مدل‌های قدرتمند را کاملاً به‌صورت آفلاین و روی سخت‌افزارهای معمولی اجرا کنند.

اصطلاحات کلیدی

کوانتیزاسیون
یک تکنیک فشرده‌سازی ریاضی که دقت وزن‌های یک شبکه عصبی را، معمولاً از اعداد ممیز شناور ۱۶ بیتی به اعداد صحیح ۴ بیتی، کاهش می‌دهد تا در مصرف حافظه صرفه‌جویی شود.
استنتاج
فرآیند اجرای داده‌های زنده از طریق یک مدل یادگیری ماشین آموزش‌دیده برای انجام پیش‌بینی یا تولید متن، که از مرحله آموزش اولیه متمایز است.
سیمد (SIMD)
مخفف «یک دستور، چند داده»؛ یکی از ویژگی‌های معماری پردازنده که به پردازنده مرکزی اجازه می‌دهد یک عملیات ریاضی دقیقاً یکسان را به‌طور همزمان روی چندین بخش از داده‌ها انجام دهد و محاسبات ماتریسی را تسریع کند.
پهنای باند حافظه
حداکثر سرعتی که در آن داده‌ها می‌توانند توسط یک پردازنده از یک حافظه نیمه‌هادی خوانده یا در آن ذخیره شوند، که به‌عنوان گلوگاه اصلی برای اجرای مدل‌های زبانی بزرگ عمل می‌کند.

منابع

پوشش منابع

10 منبع

3 دیدگاه شناسایی‌شده

توسعه‌دهندگان متن‌باز 40%ارائه‌دهندگان فضای ابری سازمانی 30%مجریان حریم خصوصی و سلامت 30%
  1. [1]ggml-orgتوسعه‌دهندگان متن‌باز

    Quantization

    مطالعه در ggml-org
  2. [2]ggml-org/GitHubتوسعه‌دهندگان متن‌باز

    ggml/docs/gguf.md at master · ggml-org/ggml

    مطالعه در ggml-org/GitHub
  3. [3]CEUR-WS.orgمجریان حریم خصوصی و سلامت

    Deploying LLMs on CPU-only Environments with llama.cpp Library Set: MedLocalGPT Project Case

    مطالعه در CEUR-WS.org
  4. [4]DataCampمجریان حریم خصوصی و سلامت

    GGUF Format: A Complete Guide to Local LLM Inference

    مطالعه در DataCamp
  5. [5]Wandbتوسعه‌دهندگان متن‌باز

    How to Run LLMs Locally With llama.cpp and GGML

    مطالعه در Wandb
  6. [6]Cast AIارائه‌دهندگان فضای ابری سازمانی

    LLM Quantization Methods: GPTQ, AWQ, GGUF

    مطالعه در Cast AI
  7. [7]Hugging Faceتوسعه‌دهندگان متن‌باز

    Quantize Llama models with GGML and llama.cpp

    مطالعه در Hugging Face
  8. [8]MassiveGRIDارائه‌دهندگان فضای ابری سازمانی

    CPU-Only LLM Inference: What Actually Works Without a GPU

    مطالعه در MassiveGRID
  9. [9]Symbl.aiارائه‌دهندگان فضای ابری سازمانی

    A Guide to Quantization in LLMs

    مطالعه در Symbl.ai
  10. [10]تیم سردبیری کوهستان

    تحلیل تیم سردبیری کوهستان

    مطالعه در تیم سردبیری کوهستان

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

دریافت هوش مصنوعی اخبار همراه با پوشش کامل منابع و تحلیل دیدگاه‌ها، مستقیم در صندوق ورودی شما.