در یکی دو سال گذشته، هوش مصنوعی زایا یا همون Generative AI به شکل عجیب و غریبی رشد پیدا کرده و در تقریبا تمام عرصهها از تولید متن، تصویر، موسیقی و حتی ویدئو و فایلهای سهبعدی، استفادههای جالبی ازش شده. همچنین باید گفت که تقریبا حجم بسیار زیادی از این توجه، بخاطر ارائه ناگهانی ChatGPT بود و بعد از اون هم مدلهای اوپن سورسی مثل لاما (و فرزندانش!).
در دنیای تولید چندرسانهای هم که ناگفته نماند، مدلهایی مانند Stable Diffusion یا مانی، تا حد خوبی توجه مردم رو به خودشون جلب کردند و علاوه بر این که مورد توجه مردم عادی بودند، مورد توجه بازیسازان، طراحان و … هم قرار گرفتند و این خودش یعنی پذیرش ابزارهای جدید، چه بخواهیم و چه نخواهیم، صورت خواهد گرفت.
اما جای یک چیزی این وسط خالیه، اون هم اینه که «سیستمعامل» که شاید قدیمیترین مفهوم زنده در رایانش شخصی بوده، چه تغییراتی رو برای پذیرش ابزارهای هوش مصنوعی، متحمل خواهد شد؟
سیستمعامل چیست؟
سیستمعامل یک لایه از نرمافزارهای سیستمیه که ارتباط بین سختافزار و کاربر رو فراهم میکنه. در واقع تصور کنید اگر روی گوشی همراه شما iOS یا اندروید نباشه. یا مثلا لپتاپ و سیستم خانگی شما، مجهز به ویندوز یا مک یا لینوکس نباشه. چه استفادهای ازشون میشه کرد؟ عملا هیچ.
در واقع سیستمعامل میشه بستری که ما بتونیم نرمافزارهای مختلف مثل فتوشاپ، تلگرام، آفیس، فایرفاکس و … رو اجرا کنیم و به نوعی تسهیلگر ارتباط بین نرمافزارها با منابع در دسترسشون میشه. حالا که میدونیم سیستمعامل چیه، یکم اون رو بشکافیم.
سفر به اعماق گنو/لینوکس
احتمالا اسم «لینوکس» یا «گنو/لینوکس» یا «اوبونتو» و امثالهم، به گوشتون خورده، نه؟ اگر از خوانندگان بلاگ من باشید که بیشتر از اینها به گوش شما خورده و احتمالا از BSD و Solaris و OpenIndiana و … هم خوندید 😁
گنو/لینوکس یک سیستمعامل کامله که از دو بخش تشکیل شده: گنو و لینوکس! حالا گنو چیه و لینوکس چیه؟ با هم بررسی میکنیم.
- لینوکس: یک هسته یا کرنله که در ابتدای دهه ۹۰ میلادی، توسط شخص شخیص لینوس بندیکت تروالدز که در اون زمان ۲۱ سالش بوده، ساخته شده. این هسته سیستم عامل (kernel) وظیفهش مدیریت فرایندها و سختافزاره. در واقع این هسته، میاد میشینه وسط سیستمعامل و اون تعامل لازم رو با سختافزار و فرایندها برای ما تسهیل میکنه.
- گنو: مجموعهای از ابزارهاست که بعنوان بخشی از جنبش نرمافزار آزاد در سال ۱۹۸۳ میلادی به رهبری ریچارد متیو استالمن ساخته شده. گنو، سیستمعاملی بود استالمن به عنوان یک اکت اعتراضی نسبت به سیاستهای AT & T در قبال کد منبع یونیکس، شروع به ساختش کرد.
حالا گنو/لینوکس چیه؟ خیلی ساده بخواهیم بگیم، گنو یک سری ابزارهای مورد نیاز کاربره و در فضای کاربر یا User Space اجرا میشه. اگر دوست دارید بیشتر در موردش بدونید، میتونید مستندات گنو و استانداردهای مربوطه رو مطالعه کنید.
ولی خب بذارید یکم سادهترش کنیم. فرض کنیم که ما یک هسته سیستمعامل داریم که داره به خوبی و خوشی، با سختافزار ارتباط میگیره و کارش رو میکنه. اما نیاز داریم که یوزر بتونه از طریقی، فرایندهای مد نظر خودش یا همون «برنامه»ها رو اجرا کنه. به همین خاطر نیاز به یک «پوسته» یا shell هم داریم. مثلا گنو، یک ابزار بسیار خوبی داره به نام bash که این کار رو انجام میده.
از طرفی، اصلا وقتی برنامه رو نوشتیم، با چی باید اجراش کنیم؟ اینجا ابزارهایی مثل GNU Binutils خودشون رو نشون میدن. البته لازم به ذکره که با ابزارهایی مثل GNU Compiler Collection یا GCC هم برنامهها رو میتونیم بسازیم.
خب الان فهمیدیم که کاربر، نیاز به فضای مختص خودش روی سیستمعامل داره. برای این که بتونه برنامهها رو اجرا کنه، بسازه و تغییرشون بده. گذشته از این برای بررسی و پردازش بیشتر دادههایی که از شبکه میاد، دادههایی که در فرمهای خاصی مثل تصویر و … داریم و …؛ نیاز داریم که این فضای کاربر رو داشته باشیم.
پس هوش مصنوعی چه؟ از آن نور وارد میشود
خب اینجا جا داره که ما بریم و کمی با مفاهیم و مطالب مربوط به هوش مصنوعی آشنا شیم.
چرا که احتمالا شما تا الان دارید پیش خودتون فکر میکنید که خب احتمالا این مطلب در مورد یک کلاینته که برای ابزارهای هوش مصنوعی نوشته شه و روی سیستمعامل ما نصب شه.
خیلی بیراه فکر نمیکنید البته، ولی بیایید کمی ابتدا LLMها رو بشناسیم و بعد بریم سراغ این که LLM OS یا «سیستمعامل مدل زبانی بزرگ» چطور کار خواهد کرد برامون 🙂
شناخت بهتر LLMها
قبلا در پست مربوط به مارال ۷ میلیارد پارامتری (لینک) و پستی که درش از چیرگی زبان انگلیسی روی دنیای AI شکایت و گله کرده بودم (لینک) در مورد LLMها صحبت کردم. اما بهتره که کمی در موردشون بیشتر با هم بدونیم.
LLM چیست؟
مدلهای زبانی بزرگ (به انگلیسی Large Language Model) مدلها و ابزارهای مبتنی بر هوش مصنوعی هستن که با تکنیکهای یادگیری عمیق مثل RLHF یا یادگیری تقویتی با بازخورد انسانی تربیت میشن. در واقع این مدلها یک هدف بیشتر ندارند: بیشترین نزدیکی به زبان آدمیزاد.
یکی از دلایلی که مدلهایی مثل GPT-2 یا Bloom زمان خودشون خیلی ترکوندند، این بود که اون موقع بهترین شکل ممکن رو برای تولید زبان داشتند اما خب GPT-3 و LLaMa 3.1 و …؛ به شدت در این زمینه بهتر عمل کردند.
مدلهای زبانی بزرگ، معمولا اینطوری کار میکنند:
همونطوری که میبینید، کاربر یه محتوایی رو برای LLM فراهم میکنه که اینجا گفته recite the first law و بعد مدل، اومده بر اساس دادهای که انسانها پیشتر بهش دادند، یک سری کلمه پیشنهاد میده. مثلا اینجا، در حال بیان قوانین سهگانه رباتیک ایزاک آسیموفه.
اما از این موضوع بگذریم، یک بحث دیگر هم که LLMها به خوبی میتونن درکش کنن و این برمیگرده به تعداد متغیرهایی که در داده ورودی دیدن، ارتباط معنایی بین کلمات میتونه باشه که خب با توجه به این که عمده LLMها در حال حاضر Human Feedback یا بازخورد انسانی در مرحله پیشآموزششون دخیله، چیز عجیبی نیست و ناظرین انسانی، بهشون بازخورد لازم رو میدن.
کاربردهای LLMها
کاربردهای LLMها از چیزی که فکر کنید بسیار بیشتره. در حال حاضر بسیاری از پروژههایی که به شکلهای مختلفی دارند با «متن» سر و کله میزنن، به نحوی LLM رو وارد کار و زندگیشون کردند. به همین خاطر هم لازم به ذکره که نمیشه دستهبندی خاصی ارائه کرد و چیزی که در ادامه فهرست میکنم در واقع بیشترین کاربردهای مدلهای بزرگه.
- تولید محتوا برای وبلاگ، وبسایت و MVP
- تولید محتوا برای ویدئوهای یوتوب و اینستاگرام
- تولید کد
- تولید داستان برای بازیهای رایانهای
- تولید کدهای SQL
- و …
همونطوری که میبینید، به شدت این عزیزان، در حال استفاده در زمینههای مختلفن و خب یکپارچگی اینها با سیستمهای عامل هم خودش یک داستان جداست.
کدام سیستمعاملها، به هوش مصنوعی مجهز شدند؟
در حال حاضر مایکروسافت با ارائه Copilot و اپل با ارائه Apple Intelligence تا حد خوبی، هوش مصنوعی رو به سیستمهای عاملشون آوردند.
همچنین اگر اشتباه نکنم دو سه ماه پیش بود که مایکروسافت ایدهای به اسم Copilot+PC رو مطرح کرد که کوپایلت، بیاد و حرکات کاربر رو زیرنظر بگیره و بعد بهش پیشنهاد بده چطور میتونه بهتر از کامپیوترش استفاده کنه و خب میدونید چه فاجعه حریم خصوصی میتونست بشه!
اما در حال حاضر، این که LLMها بتونن سیستمعامل رو «کنترل کنن» چیزیه که در حد چندین پروژه آزمایشگاهی مونده و به اون شکل، تجاریسازی نشده. چیزی که این همه تا اینجا در موردش خوندید و از اینجا به بعد قراره تازه جذاب باشه :))
رویای کارپاتی: سیستمعامل مبتنی بر LLMها
چندی پیش، آندره کارپاتی (که از بزرگان هوش مصنوعی و علوم کامپیوتره) در یوتوب ویدئوی با عنوان مقدمهای بر LLMها منتشر کرد و چیزی حدود یک ساعت در مورد پتانسیلهای این مدلها، حرف زد و در نهایت ایده LLM OS رو مطرح کرد 🙂
سیستمعامل مبتنی بر LLM چطور قراره کار کنه؟
خب بیایید بریم به همون گنو/لینوکس. وقتی شما «ترمینال» رو باز میکنید، قراره چه اتفاقی بیافته؟ آفرین قراره shell رو ببینید. بعدش چه اتفاقی میافته؟ شما شروع میکنید به وارد کردن دستورات سیستمعامل. مثلا با دستور ls میتونید بیایید و محتویات یک پوشه رو ببینید.
حالا فرض کنید جای این که دستورات ترمینال لینوکس رو حفظ کنید، به فارسی یا انگلیسی، برای کامپیوترتون توضیح بدید. این دقیقا میشه کاری که LLM قراره در سیستمعامل برای ما انجام بده.
چطور این اتفاق میافته؟ در اکثر زبانهای برنامهنویسی ما قادر هستیم که از subprocessها استفاده کنیم. یعنی با کمک subprocessها و LLM میتونیم اینطوری کار رو پیش ببریم:
- شما به سیستمعامل میگید که «برنامه X رو باز کن»
- سیستمعامل از طریق یک رابط متنی یا صوتی، این دستور رو از شما میگیره و به LLM ارسال میکنه.
- حالا LLM طوری تنظیم شده که اون رو به یک subprocess تبدیل کنه و اجراش کنه، کد مربوطه رو تولید و اجرا میکنه.
- بعد از اجرا، برنامه X اجرا میشه (اونطوری که ازش خواستید) و نتیجه توسط LLM به شما گفته میشه.
خیلی دقیق بخواهید بهش نگاه کنید، میشه شبیه چیزی مثل Jarvis در فیلمهای Iron Man یا حتی «سامانتا» در Her. حتی میشه گفت تا حد خوبی شبیه The Machine در سریال Person of Interest هم هست.
چالشهای LLM OS
اما این ایده هم مثل سایر ایدههای هوش مصنوعی، خالی از ایراد و چالش نیست. چندتا از چالشهای بزرگش رو با هم بررسی کنیم:
- LLM های قابل اجرا روی سیستمهای شخصی معمولا خوب نیستن. خوب هم باشند معمولا به شدت کُند هستند.
- LLMهای خوب، عمدتا باید از طریق وب در دسترس باشند.
- این که افسار کامپیوتر رو بدیم دست یک موجودیت آنلاین، کمی با ایده حریم خصوصی در تضاده، بخصوص اگر بخواهیم این پروژه رو مبتنی بر لینوکس یا BSD پیش ببریم.
همین سه چالش کافیه تا فعلا چنین چیزی رو به درستی نتونیم داشته باشیم. با این که تلاشهایی هم در موردش شده.
جمعبندی
در نهایت باید گفت که ما کم کم به سمتی میریم که کل «رابط کاربری» ما خلاصه بشه در «زبان». یعنی عمده رابطهای کاربری از ما متن یا صدا بگیرند و تبدیلش کنن به کارهایی که ازشون خواستیم و خب این اتفاق خوبی میتونه باشه.
و خب با ظهور LLMها و پیشرفت زیرساختهای سختافزاری، این امر با سرعت بیشتری در حال به وقوع پیوستنه و شما احتمالا تا چند سال دیگر، بتونید توزیعی از لینوکس رو نصب کنید که چنین امکانی در اختیارتون بذاره 🙂 یا روی مک و آیفونتون چنین امکانی داشته باشید.
در کل، پیشرفت جامعه بشری به کمک AI انتهای جالبی خواهد داشت، البته به شرط این که براش انتهایی بشه متصور شد!
موفق و خندون باشید.