استفاده از Llamafiles برای ساده سازی اجرای LLM

استفاده از Llamafiles برای ساده سازی اجرای LLM

گره منبع: 3068075

معرفی

اجرای مدل های زبان بزرگ همیشه یک فرآیند خسته کننده بوده است. برای بارگیری این LLM ها باید مجموعه ای از نرم افزارهای شخص ثالث را دانلود کنید یا پایتون را دانلود کنید و با دانلود تعداد زیادی کتابخانه Pytorch و HuggingFace محیطی ایجاد کنید. اگر از روش پایتونیک استفاده کنید، باید مراحل نوشتن کد را برای دانلود و اجرای مدل طی کنید. این راهنما به یک رویکرد ساده تر برای اجرای این LLM ها نگاه می کند.

اهداف یادگیری

  • چالش های اجرای سنتی LLM را درک کنید
  • مفهوم نوآورانه Llamafiles را درک کنید
  • یاد بگیرید که فایل های اجرایی Llamafile خود را به راحتی دانلود و اجرا کنید
  • آموزش ایجاد Llamfiles از LLM های کوانتیزه شده
  • محدودیت های این رویکرد را شناسایی کنید

این مقاله به عنوان بخشی از بلاگاتون علم داده.

جدول محتوا

مشکلات مدل های زبان بزرگ

مدل‌های زبان بزرگ (LLM) نحوه تعامل ما با رایانه‌ها، تولید متن، ترجمه زبان‌ها، نوشتن انواع مختلف محتوای خلاقانه و حتی پاسخ دادن به سؤالات شما را به شیوه‌ای آموزنده متحول کرده است. با این حال، اجرای این مدل های قدرتمند بر روی کامپیوتر شما اغلب چالش برانگیز بوده است.

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

Llamafiles چیست؟

Llamafile ها برای کار آسان با مدل های زبان بزرگ منبع باز محبوب ایجاد شده اند. اینها فایل های اجرایی تک فایلی هستند. درست مانند دانلود یک LLM و اجرای آن مانند یک فایل اجرایی. نیازی به نصب اولیه کتابخانه ها نیست. این همه به دلیل llama.cpp و libc جهانی امکان پذیر بود، که باعث می شود LLM ها روی سیستم عامل های مختلف اجرا شوند.

llama.cpp توسط Georgi Gerganov توسعه داده شد تا مدل‌های زبان بزرگ را در قالب کوانتیزه اجرا کند تا بتوانند روی CPU اجرا شوند. llama.cpp یک کتابخانه C است که به ما امکان می دهد LLM های کوانتیزه شده را روی سخت افزار مصرف کننده اجرا کنیم. از سوی دیگر، libc جهان وطنی یکی دیگر از کتابخانه های C است که یک باینری می سازد که می تواند بر روی هر سیستم عامل (ویندوز، مک، اوبونتو) بدون نیاز به مترجم اجرا شود. بنابراین Llamafile در بالای این کتابخانه ها ساخته شده است که به آن اجازه می دهد LLM های اجرایی تک فایلی ایجاد کند.

مدل های موجود در قالب کوانتیزه GGUF هستند. GGUF یک فرمت فایل برای مدل های زبان بزرگ است که توسط گئورگی گرگانوف، خالق llama.cpp توسعه یافته است. GGUF فرمتی برای ذخیره، اشتراک گذاری و بارگذاری مدل های زبان بزرگ به طور موثر و کارآمد بر روی CPU و GPU است. GGUF از یک تکنیک کوانتیزاسیون برای فشرده سازی مدل ها از نقطه شناور 16 بیتی اولیه به فرمت عدد صحیح 4 یا 8 بیتی استفاده می کند. وزن های این مدل کوانتیزه شده را می توان در این فرمت GGUF ذخیره کرد

این کار را برای مدل‌های 7 میلیارد پارامتری ساده‌تر می‌کند تا روی رایانه‌ای با 16 گیگابایت VRAM اجرا شوند. ما می‌توانیم مدل‌های زبان بزرگ را بدون نیاز به GPU اجرا کنیم (اگرچه Llamafile حتی به ما اجازه می‌دهد LLM‌ها را روی یک GPU اجرا کنیم). در حال حاضر، فایل‌های لامافیل‌های محبوب مدل‌های زبان بزرگ منبع باز مانند LlaVa، Mistral، و WizardCoder به راحتی برای دانلود و اجرا در دسترس هستند.

یک شات اجرایی

در این بخش، ما یک LlaVa Llamafile چند وجهی را دانلود و اجرا می کنیم. در اینجا، ما با GPU کار نمی کنیم و مدل را روی CPU اجرا می کنیم. با کلیک کردن، به مخزن رسمی Llamafile GitHub بروید اینجا کلیک نمایید و دانلود مدل LlaVa 1.5.

یک شات اجرایی | Llamafiles

مدل را دانلود کنید

تصویر بالا تمامی مدل های موجود را با نام، اندازه و لینک های قابل دانلود نشان می دهد. LlaVa 1.5 تقریباً 4 گیگابایت است و یک مدل چندگانه قدرتمند است که می تواند تصاویر را درک کند. مدل دانلود شده یک مدل 7 میلیارد پارامتری است که به 4 بیت کوانتیزه شده است. پس از دانلود مدل به پوشه ای که در آن دانلود شده است بروید.

"

سپس CMD را باز کنید، به پوشه ای که این مدل دانلود شده است بروید، نام فایلی که دانلود کردیم را تایپ کنید و اینتر را فشار دهید.

llava-v1.5-7b-q4.llamafile
"

برای کاربران مک و لینوکس

برای مک و لینوکس، به طور پیش فرض، مجوز اجرا برای این فایل خاموش است. از این رو، ما باید مجوز اجرا را برای lamafile فراهم کنیم، که می توانیم با اجرای دستور زیر این کار را انجام دهیم.

chmod +x llava-v1.5-7b-q4.llamafile

این برای فعال کردن مجوز اجرا برای llava-v1.5-7b-q4.llamafile است. همچنین، قبل از نام فایل، "./" را اضافه کنید تا فایل در مک و لینوکس اجرا شود. بعد از اینکه کلید اینتر را فشار دادید، مدل به رم سیستم منتقل می شود و خروجی زیر را نشان می دهد.

برای کاربران مک و لینوکس | Llamafiles

سپس مرورگر ظاهر می شود و مدل در URL http://127.0.0.1:8080/ اجرا می شود

"
"

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

در زیر، ما حتی می توانیم هایپرپارامترهای قابل تنظیم LLM مانند Top P، Top K، Temperature و موارد دیگر را بررسی کنیم. حتی اینها، فعلاً به آنها اجازه می دهیم پیش فرض باشند. حالا بیایید چیزی را تایپ کنیم و روی ارسال کلیک کنیم.

"

در عکس بالا می بینیم که پیامی را تایپ کرده ایم و حتی پاسخ دریافت کرده ایم. در زیر آن، می‌توانیم بررسی کنیم که حدود 6 توکن در ثانیه دریافت می‌کنیم، که با توجه به اینکه ما آن را کاملاً روی CPU اجرا می‌کنیم، یک توکن در ثانیه خوب است. این بار، بیایید آن را با یک تصویر امتحان کنیم.

سی پی یو | TinyLlama

اگرچه 100٪ درست نیست، اما این مدل تقریباً می تواند بیشتر چیزها را به درستی از تصویر دریافت کند. اکنون بیایید یک مکالمه چند نوبتی با LlaVa داشته باشیم تا بررسی کنیم که آیا تاریخچه چت را به خاطر می آورد یا خیر.

در عکس بالا می بینیم که LlaVa LLM به خوبی توانسته است این کار را انجام دهد. می‌تواند در مکالمه‌ی تاریخ استفاده کند و سپس پاسخ‌ها را ایجاد کند. اگرچه آخرین پاسخ تولید شده کاملاً درست نیست، اما convo قبلی را برای ایجاد آن جمع آوری کرد. بنابراین از این طریق می توانیم یک lamafile را دانلود کنیم و فقط آنها را مانند نرم افزار اجرا کنیم و با آن مدل های دانلود شده کار کنیم.

ایجاد Llamafiles

ما دمویی از Llamafile را دیده‌ایم که قبلاً در GitHub رسمی وجود داشت. اغلب ما نمی خواهیم با این مدل ها کار کنیم. در عوض، ما می‌خواهیم فایل‌های اجرایی تک فایلی از مدل‌های زبان بزرگ خود ایجاد کنیم. در این بخش، فرآیند ایجاد فایل های اجرایی تک فایلی، یعنی فایل های لاما از LLM های کوانتیزه شده را طی می کنیم.

یک LLM را انتخاب کنید

ابتدا با انتخاب یک مدل زبان بزرگ شروع می کنیم. برای این نسخه ی نمایشی، ما یک نسخه کوانتیزه شده از TinyLlama را انتخاب خواهیم کرد. در اینجا ما مدل 8 بیتی کوانتیزه GGUF TinyLlama را دانلود می کنیم (شما می توانید کلیک کنید اینجا کلیک نمایید برای رفتن به HuggingFace و دانلود مدل)

TinyLlama

دانلود جدیدترین Llamafile

جدیدترین فایل فشرده لامافیل از لینک رسمی GitHub قابل دانلود است. همچنین فایل فشرده را دانلود و فایل فشرده را استخراج کنید. نسخه فعلی این مقاله llama file-0.6 است. پس از استخراج لاما، پوشه bin با پوشه فایل حاوی فایل هایی مانند تصویر زیر خواهد بود.

"

اکنون مدل کوانتیزه شده 8 بیتی دانلود شده TinyLlama را به این پوشه bin منتقل کنید. برای ایجاد فایل های اجرایی تک فایل، باید یک فایل .args در پوشه bin llamafile ایجاد کنیم. به این فایل باید محتوای زیر را اضافه کنیم:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • خط اول نشان دهنده پرچم -m است. این به lamafile می گوید که ما در وزن های یک مدل بارگذاری می کنیم.
  • در خط دوم نام مدلی که دانلود کرده ایم را مشخص می کنیم که در همان دایرکتوری که فایل .args در آن وجود دارد، یعنی پوشه bin lamafile وجود دارد.
  • در خط سوم، پرچم میزبان را اضافه می کنیم که نشان می دهد فایل اجرایی را اجرا می کنیم و می خواهیم آن را به یک وب سرور میزبانی کنیم.
  • در نهایت در خط آخر آدرسی را که می خواهیم میزبانی کنیم ذکر می کنیم که به localhost مپ می شود. به دنبال این سه نقطه وجود دارد که مشخص می‌کند پس از ایجاد فایل لامافیل، می‌توانیم آرگومان‌هایی را به آن منتقل کنیم.
  • این خطوط را به فایل args اضافه کنید و آن را ذخیره کنید.

برای کاربران ویندوز

اکنون مرحله بعدی برای کاربران ویندوز است. اگر روی ویندوز کار می کردیم، باید لینوکس را از طریق WSL نصب می کردیم. اگر نه، کلیک کنید اینجا کلیک نمایید مراحل نصب لینوکس از طریق WSL را طی کنید. در مک و لینوکس، هیچ مرحله اضافی مورد نیاز نیست. حالا پوشه bin پوشه llamafile را در ترمینال باز کنید (اگر روی ویندوز کار می کنید، این دایرکتوری را در WSL باز کنید) و دستورات زیر را تایپ کنید.

cp llamafile tinyllama-1.1b-chat-v0.3.Q8_0.llamafile

در اینجا، ما در حال ایجاد یک فایل جدید به نام tinyllama-1.1b-chat-v0.3.Q3_0.llamafile هستیم. یعنی در حال ایجاد یک فایل با پسوند llamafile و انتقال فایل lamafile به این فایل جدید هستیم. حالا به دنبال این دستور بعدی را تایپ می کنیم.

./zipalign -j0 tinyllama-1.1b-chat-v0.3.Q8_0.llamafile tinyllama-1.1b-chat-v0.3.Q8_0.gguf .args

در اینجا ما با فایل zipalign کار می کنیم که هنگام دانلود فایل فشرده llamafile از GitHub آمده است. ما با این دستور کار می کنیم تا lamafile را برای TinyLlama کوانتیزه شده خود ایجاد کنیم. به این دستور zipalign، tinyllama-1.1b-chat-v0.3.Q8_0.llamafile را که در مرحله قبل ایجاد کرده بودیم، ارسال می کنیم، سپس tinyllama-1.1b-chat-v0.3.Q8_0.llamafile را ارسال می کنیم. مدلی که در پوشه bin داریم و در نهایت فایل .args را که قبلا ایجاد کرده بودیم منتقل می کنیم.

این در نهایت فایل اجرایی واحد ما tinyllama-1.1b-chat-v0.3.Q8_0.llamafile را تولید می کند. برای اطمینان از اینکه در یک صفحه هستیم، پوشه bin اکنون حاوی فایل های زیر است.

فایل های اجرایی | Llamafiles

اکنون می‌توانیم فایل tinyllama-1.1b-chat-v0.3.Q8_0.llama را به همان روشی که قبلا انجام دادیم اجرا کنیم. در ویندوز حتی می توانید نام .llamafile را به .exe تغییر دهید و با دوبار کلیک بر روی آن اجرا کنید.

سرور سازگار با OpenAI

این بخش به نحوه سرور LLM ها از طریق Llamfile می پردازد. ما متوجه شده ایم که وقتی فایل lama را اجرا می کنیم، مرورگر باز می شود و می توانیم از طریق WebUI با LLM تعامل داشته باشیم. این در واقع همان چیزی است که ما میزبانی مدل زبان بزرگ می نامیم.

هنگامی که Llamafile را اجرا می کنیم، می توانیم با LLM مربوطه به عنوان نقطه پایانی تعامل داشته باشیم، زیرا مدل در میزبان محلی در PORT 8080 ارائه می شود. سرور از پروتکل OpenAI API پیروی می کند، یعنی مشابه OpenAI GPT Endpoint، بنابراین جابجایی بین مدل OpenAI GPT و LLM در حال اجرا با Llamafile آسان است.

در اینجا، ما فایل lamafile TinyLlama را که قبلا ایجاد شده بود اجرا می کنیم. اکنون، این باید روی لوکال هاست 8080 اجرا شود. اکنون آن را از طریق خود OpenAI API در پایتون آزمایش خواهیم کرد.

from openai import OpenAI
client = OpenAI(
    base_url="http://localhost:8080/v1", 
    api_key = "sk-no-key-required"
)
completion = client.chat.completions.create(
    model="TinyLlama",
    messages=[
        {"role": "system", "content": "You are a usefull AI 
        Assistant who helps answering user questions"},
        {"role": "user", "content": "Distance between earth to moon?"}
    ]
)
print(completion.choices[0].message.content)
  • در اینجا، ما با کتابخانه OpenAI کار می کنیم. اما به جای تعیین نقطه پایانی OpenAI، آدرس اینترنتی جایی که TinyLlama ما میزبانی شده است را مشخص می کنیم و "sk-no-token-required" برای api_key
  • سپس، مشتری به نقطه پایانی TinyLlama ما متصل می شود
  • اکنون، مشابه نحوه کار ما با OpenAI، می‌توانیم از کد برای چت کردن با TinyLlama استفاده کنیم.
  • برای این کار، ما با تکمیل کلاس OpenAI جدید ایجاد می کنیم تکمیل با .ايجاد كردن() اعتراض کنید و جزئیاتی مانند نام مدل و پیام ها را ارسال کنید.
  • پیام ها به صورت فهرستی از دیکشنری ها هستند که ما نقش را داریم که می تواند سیستم، کاربر یا دستیار باشد و محتوا را داریم.
  • در نهایت، ما می توانیم اطلاعات تولید شده از طریق عبارت چاپ بالا را بازیابی کنیم.

خروجی موارد فوق در زیر قابل مشاهده است.

Llamafiles | خروجی

به این ترتیب، می‌توانیم از فایل‌های لامافیل استفاده کنیم و OpenAI API را به راحتی با لامافایلی که برای اجرا انتخاب کرده‌ایم جایگزین کنیم.

محدودیت های Llamafiles

در حالی که llamafiles انقلابی هستند، هنوز در دست توسعه هستند. برخی از محدودیت ها عبارتند از:

  • انتخاب مدل محدود: در حال حاضر، همه LLM ها به شکل llamafiles در دسترس نیستند. انتخاب فعلی Llamafiles از پیش ساخته شده هنوز در حال افزایش است. در حال حاضر، Llamafiles برای Llama 2، LlaVa، Mistral و Wizard Coder موجود است.
  • مورد نیاز سخت افزار: اجرای LLM، حتی از طریق Llamafiles، همچنان به منابع محاسباتی زیادی نیاز دارد. در حالی که اجرای آن‌ها نسبت به روش‌های سنتی آسان‌تر است، رایانه‌های قدیمی‌تر یا کم‌قدرت‌تر ممکن است برای اجرای روان آنها به کمک نیاز داشته باشند.
  • نگرانی های امنیتی: دانلود و اجرای فایل های اجرایی از منابع نامعتبر خطرات ذاتی دارد. بنابراین باید یک پلت فرم قابل اعتماد وجود داشته باشد که بتوانیم این لامافیل ها را دانلود کنیم.

Llamafiles در مقابل بقیه

قبل از Llamafiles، راه‌های مختلفی برای اجرای مدل‌های زبان بزرگ وجود داشت. یکی از طریق lama_cpp_python. این نسخه پایتون llama.cpp است که به ما امکان می دهد مدل های زبان بزرگ کوانتیزه شده را روی سخت افزارهای مصرف کننده مانند لپ تاپ ها و رایانه های رومیزی اجرا کنیم. اما برای اجرای آن، باید پایتون و حتی کتابخانه های یادگیری عمیق مانند مشعل، huggingface، ترانسفورماتورها و بسیاری دیگر را دانلود و نصب کنیم. و پس از آن، شامل نوشتن بسیاری از خطوط کد برای اجرای مدل بود.

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

و بعد ، وجود دارد اولاما. Ollama به دلیل سهولت استفاده برای بارگیری و اجرای آسان مدل های زبان بزرگ، به ویژه مدل های کوانتیزه شده، در جامعه هوش مصنوعی بسیار موفق بوده است. Ollama نوعی TUI (رابط کاربری ترمینال) برای LLMها است. تنها تفاوت بین Ollama و Llamafile قابلیت اشتراک گذاری است. یعنی اگر بخواهم می توانم model.llamafile خود را با هرکسی به اشتراک بگذارم و آنها می توانند آن را بدون دانلود نرم افزار اضافی اجرا کنند. اما در مورد اولاما، من باید فایل model.gguf را به اشتراک بگذارم، که شخص مقابل تنها زمانی که نرم افزار اوللاما را نصب کند یا از طریق کتابخانه های پایتون بالا می تواند آن را اجرا کند.

با توجه به منابع، همه آنها به همان مقدار منابع نیاز دارند زیرا همه این روش ها از lama.cpp در زیر برای اجرای مدل های کوانتیزه استفاده می کنند. این فقط در مورد سهولت استفاده در جایی است که تفاوت هایی بین آنها وجود دارد.

نتیجه

Llamafile ها یک گام مهم رو به جلو در ساختن LLM ها به راحتی قابل اجرا هستند. سهولت استفاده و قابل حمل بودن آنها دنیایی از امکانات را برای توسعه دهندگان، محققان و کاربران عادی باز می کند. در حالی که محدودیت‌هایی وجود دارد، پتانسیل llamafiles برای دموکراتیک کردن دسترسی LLM آشکار است. چه یک توسعه دهنده خبره یا یک مبتدی کنجکاو باشید، Llamafiles فرصت های هیجان انگیزی را برای کاوش در دنیای LLM ها باز می کند. در این راهنما، ما نگاهی به نحوه دانلود Llamafiles و حتی نحوه ایجاد Llamafiles خودمان با مدل های کوانتیزه شده خود انداخته ایم. . ما حتی نگاهی به سرور سازگار با OpenAI که هنگام اجرای Llamafile ایجاد می شود انداخته ایم.

گیرنده های کلیدی

  • Llamafiles فایل های اجرایی تک فایلی هستند که اجرای مدل های زبان بزرگ (LLM) را آسان تر و در دسترس تر می کنند.
  • آنها نیاز به تنظیمات و پیکربندی های پیچیده را از بین می برند و به کاربران اجازه می دهند LLM ها را مستقیماً بدون نیاز به پایتون یا GPU دانلود و اجرا کنند.
  • Llamafiles در حال حاضر برای تعداد محدودی از LLM های منبع باز، از جمله LlaVa، Mistral، و WizardCoder در دسترس هستند.
  • در حالی که Llamafiles راحت است، اما همچنان محدودیت هایی مانند الزامات سخت افزاری و نگرانی های امنیتی مرتبط با دانلود فایل های اجرایی از منابع نامعتبر دارد.
  • علی‌رغم این محدودیت‌ها، Llamafiles یک گام مهم به سمت دموکراتیک کردن دسترسی LLM برای توسعه‌دهندگان، محققان و حتی کاربران معمولی است.

پرسش و پاسخهای متداول

Q1. مزایای استفاده از Llamafiles چیست؟

A. Llamafiles مزایای متعددی را نسبت به روش های پیکربندی سنتی LLM ارائه می دهد. آنها راه اندازی و اجرای LLM را آسانتر و سریعتر می کنند زیرا نیازی به نصب پایتون یا GPU ندارید. این باعث می شود LLM ها به راحتی در دسترس مخاطبان بیشتری قرار گیرند. علاوه بر این، Llamafiles می تواند در سیستم عامل های مختلف اجرا شود.

Q2. محدودیت های Llamafiles چیست؟

A. در حالی که Llamafiles مزایای بسیاری را ارائه می دهد، آنها همچنین دارای محدودیت هایی هستند. انتخاب LLM های موجود در Llamafiles در مقایسه با روش های سنتی محدود است. علاوه بر این، اجرای LLM ها از طریق Llamafiles همچنان به مقدار زیادی منابع سخت افزاری نیاز دارد و رایانه های قدیمی یا کم قدرت ممکن است از آن پشتیبانی نکنند. در نهایت، نگرانی های امنیتی با دانلود و اجرای فایل های اجرایی از منابع نامعتبر مرتبط است.

Q3. چگونه می توانم با Llamafiles شروع کنم؟

A. برای شروع کار با Llamafiles، می توانید از مخزن رسمی Llamafile GitHub دیدن کنید. در آنجا می توانید Llamafile را برای مدل LLM که می خواهید استفاده کنید دانلود کنید. هنگامی که فایل را دانلود کردید، می توانید آن را مستقیماً مانند یک فایل اجرایی اجرا کنید.

Q4. آیا می توانم از مدل LLM خودم با Llamafiles استفاده کنم؟

A. خیر. در حال حاضر، Llamafiles فقط از مدل های از پیش ساخته شده خاصی پشتیبانی می کند. ایجاد Llamafiles خودمان برای نسخه های آینده برنامه ریزی شده است.

Q5. چشم انداز Llamafiles چیست؟

الف. توسعه دهندگان Llamafiles در تلاش هستند تا گزینش مدل های LLM موجود را گسترش دهند، آنها را با کارایی بیشتری اجرا کنند و اقدامات امنیتی را اجرا کنند. هدف این پیشرفت‌ها این است که Llamafiles را برای افرادی که سابقه فنی کمی دارند در دسترس‌تر و ایمن‌تر کنند.

رسانه نشان داده شده در این مقاله متعلق به Analytics Vidhya نیست و به صلاحدید نویسنده استفاده می شود.

تمبر زمان:

بیشتر از تجزیه و تحلیل Vidhya