بله، شما می توانید یک “ربات چت هوش مصنوعی” LLM را روی Raspberry Pi اجرا کنید! فقط این روند گام به گام را دنبال کنید و سپس هر چیزی را از آن بپرسید.
مدلهای زبانی بزرگ، که عموماً (و بهطور نادرست) به عنوان AI شناخته میشوند، ماههاست که تهدید میکنند که انتشارات، هنر و دنیای حقوقی را متحول کنند. یک نقطه ضعف این است که استفاده از LLM مانند ChatGPT به معنای ایجاد یک حساب کاربری و انجام کار توسط رایانه شخص دیگری است. اما می توانید یک LLM آموزش دیده را روی Raspberry Pi خود اجرا کنید تا شعر بنویسید، به سوالات پاسخ دهید و موارد دیگر.
مدل زبان بزرگ چیست؟
مدلهای زبان بزرگ از الگوریتمهای یادگیری ماشینی برای یافتن روابط و الگوهای بین کلمات و عبارات استفاده میکنند. آنها که بر روی مقادیر وسیعی از داده ها آموزش دیده اند، می توانند پیش بینی کنند که چه کلماتی از نظر آماری احتمالاً در صورت درخواست در مرحله بعدی قرار می گیرند.
اگر بخواهید از هزاران نفر بپرسید که امروز چه احساسی دارند، پاسخها مانند «من خوبم»، «ممکن است بدتر باشد»، «خوب، اما زانوهایم بالا میروند» خواهد بود. سپس گفتگو به سمت دیگری می رفت. شاید آن شخص در مورد سلامتی شما بپرسد، یا با “ببخشید، من باید فرار کنم. من برای کار دیر آمدم” را دنبال کند.
با توجه به این داده ها و درخواست اولیه، یک مدل زبان بزرگ باید بتواند پاسخ قانع کننده و اصلی خود را بر اساس احتمال آمدن یک کلمه خاص در یک دنباله، همراه با درجه تصادفی از پیش تعیین شده، ارائه دهد. جریمه های تکراری و سایر پارامترها
مدلهای زبان بزرگی که امروزه مورد استفاده قرار میگیرند، با صدای چند هزار نفری آموزش داده نمیشوند. در عوض، مقدار غیرقابل تصوری از داده به آنها داده میشود که از مجموعههای در دسترس عموم، پلتفرمهای رسانههای اجتماعی، صفحات وب، بایگانیها و مجموعه دادههای سفارشی گاه به گاه جمعآوری شدهاند.
LLM ها توسط محققان انسانی آموزش می بینند که الگوهای خاصی را تقویت کرده و آنها را به الگوریتم باز می گرداند. وقتی از یک مدل بزرگ زبان میپرسید «بهترین نوع سگ چیست؟»، میتواند پاسخی به شما بدهد که جک راسل تریر بهترین نوع سگ است و دلایلی را برای شما بیان کند.
اما صرف نظر از اینکه پاسخ چقدر هوشمندانه یا متقاعد کننده و انسانی گنگ باشد، نه مدل و نه ماشینی که روی آن کار می کند ذهنی ندارند، و آنها قادر به درک سؤال یا کلماتی که پاسخ را تشکیل می دهند، نیستند. این فقط ریاضی و داده های زیادی است.
چرا یک مدل زبان بزرگ را روی Raspberry Pi اجرا کنید؟
مدلهای زبان بزرگ در همه جا وجود دارند و توسط شرکتهای جستجوگر بزرگ برای کمک به پاسخگویی به سؤالات استفاده میشوند.
در حالی که وسوسه انگیز است که یک سوال زبان طبیعی را در جعبه سیاه شرکت مطرح کنید، گاهی اوقات می خواهید الهام بگیرید یا سوالی بپرسید بدون اینکه داده های بیشتری را به جریان سرمایه داری نظارتی وارد کنید.
کامپیوتر تک برد Raspberry Pi به عنوان یک برد آزمایشی برای قلع و قمع ها، از نظر فلسفی، اگر نه از نظر فیزیکی، برای این تلاش مناسب است.
LLaMA متا LLM برای دستگاه ها است
در فوریه 2023، متا (شرکتی که قبلاً فیسبوک نام داشت) LLaMA را معرفی کرد، یک LLM جدید که دارای مدلهای زبانی بین 7 تا 65 میلیارد پارامتر است. LLaMA با استفاده از مجموعه داده های در دسترس عموم آموزش داده شد،
کد LLaMA منبع باز است، به این معنی که هر کسی میتواند از آن استفاده کرده و آن را تطبیق دهد، و «وزنها» یا پارامترها بهعنوان تورنت و پیوندهای آهنربایی در یک رشته در صفحه GitHub پروژه پست شدهاند.
در مارس 2023، توسعه دهنده Georgi Gerganov llama.cpp را منتشر کرد که می تواند بر روی طیف وسیعی از سخت افزارها از جمله Raspberry Pi اجرا شود. کد به صورت محلی اجرا می شود و هیچ داده ای به Meta ارسال نمی شود.
llama.cpp را روی Raspberry Pi نصب کنید
هیچ دستورالعمل سخت افزاری منتشر شده ای برای llama.cpp وجود ندارد، اما به شدت نیاز به پردازنده، رم و فضای ذخیره سازی دارد. مطمئن شوید که آن را روی Raspberry Pi 4B یا 400 با حداکثر حافظه، حافظه مجازی و فضای SSD در دسترس اجرا میکنید. کارت SD نمیتواند آن را قطع کند، و یک کیس با خنککننده مناسب ضروری است.
ما از مدل پارامتر 7 میلیارد استفاده خواهیم کرد، بنابراین از این رشته LLamA GitHub دیدن کنید و تورنت 7B را با استفاده از یک کلاینت مانند qBittorrent یا Aria دانلود کنید.
مخزن llama.cpp را کلون کنید و سپس از دستور cd برای انتقال به دایرکتوری جدید استفاده کنید:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
اگر کامپایلر نصب نکرده اید، اکنون یکی از آن ها را نصب کنید:
sudo apt-get install g++
حالا پروژه را با این دستور کامپایل کنید:
make
این احتمال وجود دارد که llama.cpp در کامپایل شکست بخورد، و شما یک دسته از پیام های خطا مربوط به “vdotq_s32” را مشاهده خواهید کرد. اگر این اتفاق افتاد، باید یک commit را برگردانید. ابتدا کاربر git محلی خود را تنظیم کنید:
git config user.name "david"
اکنون می توانید یک commit قبلی را برگردانید:
git revert 84d9015
یک پیام git commit در ویرایشگر متن نانو باز می شود. Ctrl + O را برای ذخیره و سپس Ctrl + X را برای خروج از نانو فشار دهید. llama.cpp اکنون باید بدون خطا هنگام وارد کردن کامپایل شود:
make
شما باید یک دایرکتوری برای مدل های وزنی که قصد استفاده از آنها را دارید ایجاد کنید:
mkdir models
اکنون مدل های وزنی را از دایرکتوری LLaMa منتقل کنید:
mv ~/Downloads/LLaMA/* ~/llama.cpp/models/
مطمئن شوید که پایتون 3 را روی Pi خود نصب کرده اید و وابستگی های llama.cpp را نصب کنید:
python3 -m pip install torch numpy sentencepiece
نسخه NumPy ممکن است مشکلاتی ایجاد کند. آن را ارتقا دهید:
pip install numpy --upgrade
اکنون مدل 7B را به فرمت ggml FP16 تبدیل کنید:
python3 convert-pth-to-ggml.py models/7B/ 1
مرحله قبل به شدت حافظه فشرده است و طبق محاسبات ما از حداقل 16 گیگابایت رم استفاده می کند. همچنین بسیار کند و مستعد شکست است.
با دنبال کردن این دستورالعمل ها به صورت موازی در رایانه رومیزی، سپس فایل /models/7B/ggml-model-q4_0.bin را در همان مکان در Raspberry Pi خود کپی کنید، نتایج بهتری دریافت خواهید کرد.
کوانتیزه کردن مدل به 4 بیت:
./quantize.sh 7B
خودشه. LLaMA LLM اکنون روی Raspberry Pi شما نصب شده و آماده استفاده است!
استفاده از llama.cpp در Raspberry Pi
برای شروع کار با llama.cpp، مطمئن شوید که در فهرست پروژه هستید و دستور زیر را وارد کنید:
./main -m ./models/7B/ggml-model-q4_0.bin -t 4 -n 128 -p "What is the Linux Kernel?"
گزینه -m این است که llama.cpp را به مدلی که می خواهید استفاده کنید هدایت کنید. -t تعداد رشته هایی را که می خواهید استفاده کنید را نشان می دهد. -n تعداد نشانه هایی برای پیش بینی است. -p درخواست شماست. شما می توانید هر و همه این متغیرها را سفارشی کنید.
منتظر طولانی باشید، زیرا Raspberry Pi در کاری که انجام می دهد عالی است، اما برای این نوع فعالیت CPU طراحی نشده است. در درخواست مثال ما، لاما قبل از دادن پاسخ زیر، متن را به هشت نشانه جداگانه تقسیم کرد:
به طور خلاصه، هسته لینوکس همیشه به عنوان یک سیستم عامل شناخته می شود. با این حال، این واقعاً یکی از این موارد در نظر گرفته نمیشود، زیرا برای تمام اهداف عملی، بیشتر عملکردهای آن از طریق APIها و ابزارهای کاربردی که میتوانند توسط هر سیستمعامل دیگری که میخواهد (یا نیاز دارد) به آن API(ها) دسترسی داشته باشد، در معرض دید قرار میگیرد. تا آنجا که به خود هسته لینوکس مربوط می شود، کار زیادی با هسته واقعی ندارد. تازه شروع میشود، پارامترهای پیکربندی را از بوتلودر/initrd انتخابیتان دریافت میکنید، سپس آن را روی سختافزاری راهاندازی میکنید و هر کاری که در این مرحله مستلزم آن است را انجام میدهید.
در حالی که این یک پاسخ نسبتاً منسجم بود، تلاش دوم به چیزی شبیه سالاد کلمه تقریباً خرد شده منجر شد:
احتمالاً بیشتر شما در مورد آن شنیده اید اما واقعاً نمی دانید در مورد چه چیزی صحبت می کنند. ما در این مورد با جزئیات صحبت خواهیم کرد زیرا درک کامل آنها به ما کمک می کند تا از رایانه های خود به طور کارآمدتر استفاده کنیم و همچنین هنگام خرید سخت افزار یا نرم افزار جدید برای رایانه های شخصی خود در خانه، دفاتر و غیره تصمیمات بهتری بگیریم. هسته لینوکس ستون فقرات اکثر سیستم عامل ها است. که بر روی یک سیستم کامپیوتری مانند اندروید که یک سیستم عامل متن باز است که بخشی از این هسته است اجرا می شود. اما منظور آنها از گفتن کرنال لینوکس چیست؟
لینوس توروالدز افکار خود را یادداشت کرده است (دانش)
شایان ذکر است که در این مرحله تولید هر یک از این پاسخها نزدیک به دو ساعت طول میکشد و هر چهار هسته CPU به طور 100% کار میکنند. با این حال، کار روی پروژه به سرعت پیش میرود و میتوانید انتظار داشته باشید که بهینهسازیهای ARM آینده زمان را کاهش دهد.
همچنین میتوانید بهجای اینکه یکبار به درخواستهای LLM خود بدهید، کل مکالمات را شبیهسازی کنید. با افزودن گزینه -i، llama در حالت تعاملی شروع می شود، در حالی که -interactive-start در ابتدا از شما درخواست ورودی می کند. برای لیست کامل گزینه های موجود، اجرا کنید:
main -h
توجه داشته باشید که LlaMA قوانین محدود کننده ای ندارد. در مواردی، جنسیتگرا، نژادپرست، همجنسگرا هراسی و بسیار اشتباه خواهد بود.
یک مدل زبان بزرگ جایگزین دانش واقعی نیست
اجرای LLaMA متا روی Raspberry Pi فوقالعاده جالب است و ممکن است وسوسه شوید که برای سؤالات فنی، توصیههای زندگی، دوستی یا به عنوان منبع واقعی دانش به استاد مجازی خود مراجعه کنید. گول نخورید مدلهای زبان بزرگ هیچ چیز نمیدانند، هیچ چیز احساس نمیکنند و هیچ چیز نمیفهمند. اگر در مورد چیزی به کمک نیاز دارید، بهتر است با یک انسان صحبت کنید یا چیزی که توسط یک انسان نوشته شده است بخوانید.
اگر وقتتان کم است، می توانید آن را در ترمینال لینوکس خود سریع بخوانید!