در دنیایی که AI و بخصوص از نوع Generative به شدت در اون مهم شده، یکی از مسائل بزرگی که باهاش روبرو هستیم، چیرگی زبان انگلیسی بر جویه که ساخته شده.
من در مطلب پیشینم، در مورد چیرگی زبان انگلیسی بر دنیای هوش مصنوعی نوشته بودم که میتونید بخونید و ببینید که چه مشکلاتی وجود دارند که داریم باهاشون دست و پنجه نرم میکنیم.
اما خب، الان قضیه کمی متفاوت شده و ما در این مطلب قراره «مارال» رو بررسی کنیم، هم این که ایدهش از کجا آمد و هم این که چیه و چه فرقهایی با تلاشهای پیشین داره و هم این که در کل مزیتش چیه.
مارال هفت میلیارد پارامتری و مزایای آن
در تابستان امسال یا دقیقتر بگم روز ۱۵ تیر ۱۴۰۲، من رویدادی با نام Summertime AI برگزار کردم. رویداد برای معرفی چندین ابزار هوش مصنوعی بود و من اشارهای به ابزاری به اسم «مارال» کردم.
مارال در اون زمان، قرار بود یک GPT2 تیون شده روی زبان فارسی باشه، اما خب بعد از کمی تحقیق و تفحص در مورد این مدل، فهمیدم که خیلی پیشتر از ما، افرادی بودند که این مدل رو با زبان فارسی تیون کنند.
حقیقتا GPT2 هرقدر هم ساختار خوبی داشت، ظاهرا مدل مناسبی برای این موضوع نبود!
اما راهحل رو کمی بعدتر، پیدا کردیم. در ادامه، قراره در مورد این راهحل صحبت کنیم و ببینیم که مارال چیه و چه مزایایی داره و برای توسعه بهترش، باید چه کارهایی کنیم.
مارال چیه؟
مارال، یک مدل بزرگ زبانی یا LLM بر مبنای مدل Mistral 7B (لینک) و تیونشده برای زبان فارسیه. این مدل، به صورت «پیروی از دستورالعمل» یا Instruction Following کار میکنه و نتایجی که تولید میکنه هم تقریبا همارز GPT-3.5 هستند.
مارال در حال حاضر در نسخه ۷ میلیارد پارامتری عرضه میشه، همچنین به صورت یک adapter برای Mistral هم قابل استفادهست که اگر شما پیشتر مدل میسترال رو جایی داشته باشید، صرفا با استفاده از آداپتور مارال، بتونید ازش استفاده کنید.
همچنین مدل و جزییاتش در این لینک موجودند.
مزایای مارال نسبت به مدلهای فارسی قبلی چیه؟
برای درک این موضوع، باید تا حد زیادی عقب بریم. ببینیم اصلا از کِی، بحث پردازش زبان طبیعی یا NLP فارسی، خیلی داغ شد. راستش رو بخواهید از زمانی که شخصا به یاد دارم، بحث پردازش و نمایش زبان فارسی، بحث داغی بود.
حتی میشه گفت چالشهای بسیار زیادی هم در این حوزه وجود داشت. کمکم با پیشرفت اینترنت، این موضوع هم بهبود پیدا کرد. ناگفته نماند که البته حتی حضور فونتهای آزاد فارسی مانند وزیرمتن (جا داره اینجا هم یادی کنیم از صابر راستیکردار عزیز) هم تاثیر بسزایی در این امر گذاشتند.
اما بحث Text Generation چطور؟ این بحث به صورت خاص در همون سالهای ۲۰۱۶ تا ۲۰۱۸ که در دنیا مدلهای LSTM و GPT-2 خیلی مطرح بودند، پا گرفت. بسیاری از اشخاص و شرکتهای ایرانی، به سمت تولید مدل رفتند. در ادامه، دوتا از این مدلها که «اختصاصا» برای زبان فارسی ساخته شدند رو بررسی و مشکلاتشون هم مطرح میکنم.
مدلهای تجاری
در حال حاضر، تنها مدلی که به صورت تجاری در دسترسه، مدل وبسایت «خودنویس»ئه که خب، این مدل علیرغم این که خروجیهای بسیار خوبی میتونه تولید کنه، تجاریه و نمیشه خیلی بررسی دقیقی روش داشت.
علاوه بر اون، خروجیهایی که تولید میکنه من رو یاد خروجی مدلهایی مانند GPT NeoX 20B و GPT J 6B میندازه و خب با توجه به قدمت این وبسایت، این موضوع کاملا طبیعیه.
یکی از مشکلاتی که مدلهایی مثل GPT J دارند، اینه که علاقه خاصی به تکرار خودشون دارند، البته این مشکل تا حدی هم به Tokenizer های مدلها برمیگرده که برای زبان فارسی، مناسبسازی نشدند.
مدلهای آزاد
اما در حین جستجو، تونستم دو مدل آزادی که اختصاصا برای فارسی ترین شدند رو پیدا کنم که در ادامه در موردشون کمی توضیح خواهم داد.
- مدل ParsGPT: این مدل، دقیقا GPT2 اون هم نسخه ۱۴۲ میلیون پارامتری بود که روی دیتای فارسی ترین شده، گرچه دقت نسبتا خوبی در تولید محتوای فارسی داره، اما دو تا مشکل بزرگ داشت. اول، این که طبق معمول عادت به تکرار خودش داره (این مساله رو در ادامه در موردش صحبت خواهم کرد) و دوم این که از یه جایی به بعد، دقیقا مطالب بیربط به پرامپتی که داده شده تولید میکنه. مثلا ممکنه از یه مطلبی پیرامون هوش مصنوعی، برای شما متن یک خبر مرتبط با وزارت خارجه بورکینافاسو تولید کنه!
- مدل GPT2 Medium Persian: این مدل باز کمی بهتر بود. مدل بزرگتر و با حدود ۳۰۰ میلیون پارامتر. اما مشکل به طور واضح، دیتایی بود که مدل باهاش pretrain شده. به قول معروف روی «آشغالهای سئوشده وب فارسی» ترین شده و احتمال این که مطالب خلاف واقع تولید کنه بسیار بالاست. گذشته از این، هنوز مشکل تولید محتوای بیربط هم در این یکی مدل به چشم میخورد.
پس راهحل این بود که یک مدل جدیدتر با پایه جدیدتر ساخته بشه. خوشبختانه دوستی به نام سینا رشیدی، دادگان آلپاکای فارسی رو ایجاد کرده که ازش برای ترین کردن این مدل، استفاده کردیم.
و اگر بخواهیم مزایای مارال رو نسبت به مدلهای پیشین بگیم:
- دیتاست بهتر
- پارامترهای بیشتر
- مدل پایه جدیدتر
- خروجیهای بهتر
خواهند بود.
مزایای مارال نسبت به مدل پایهش (Mistral 7B) چیه؟
اولین روزی که از میسترال استفاده کردم متوجه شدم نسبت به مدلهای قبلی مثل LLaMa, LLaMa2, StableLM 7B و Vicuna و امثالهم، درک بهتری از الفبای فارسی/عربی داره.
این نشان از این بود که این مدل، قابلیت فهمیدن فارسی داره ولی به قدر کافی مطلب فارسی ندیده. به همین خاطر دست به فاینتیون کردنش روی دیتاست فارسی زدم.
مزیت این مدل نسبت به میسترال، اینه که فارسی رو از لحاظ ساختار و معنا درستتر میفهمه و میتونه خروجی بسیار بهتری در زبان فارسی تولید کنه. نکته جالب اینه که زبان انگلیسی هم همچنان میفهمه، پس یک مدل Bilingual داریم که میتونیم در آینده، ازش استفادههای باحالی کنیم.
بذارید خیلی خلاصه بگم، مارال، تمام خوبیهای میسترال رو داره بعلاوه درک خوبی از زبان شیرین فارسی. البته ناگفته نماند که در بخش بعدی مشکلاتی که در نسخه آلفا داشتیم رو هم لیست کردم و براتون نوشتم 🙂
در حال حاضر چه مشکلاتی ممکنه در استفاده از مارال پیش بیاد؟
- مدل در هذیانگویی (Hallucination) بسیار خوبه. البته، این مشکل تقریبا تمام مدلهای زبانیه و با گذر زمان، میشه حلش کرد.
- مدل علاقه زیادی به تکرار خودش داره 😁
- نتایج مدل در حال حاضر خیلی factual نیستند و میتونه misinformation تولید کنه.
- مدل خیلی بزرگه و با همه سختافزارها قابل اجرا نیست (البته با کد ۸ بیتی که ارائه کردیم قابل اجرا میشه)
- فرمت پرامپتش، کمی مناسب نیست و نیازه که شروع و پایان جملات به مدل آموزش داده شه.
چه چیزی برای توسعه بهتر مارال لازمه؟
- دیتاست بهتر (نه الزاما بزرگتر) و حتی شاید دیتاستهای تخصصی
- ترین شدن tokenizer روی زبان فارسی
چطور از مارال استفاده کنم؟
چنانچه قصد دارید از مارال استفاده کنید، کدهای اجرای مارال روی GPU رو در این لینک قرار دادیم. میتونید این کدها رو روی سیستم خودتون یا در Google Colab اجرا کنید.
جمعبندی
پس از این که یک ترین موفق روی Stable Diffusion و ساخت مدل «مانی» که البته در این مطلب در موردش توضیح داده بودم، باعث شد که پلتفرم هوش مصنوعی مانی رو راهاندازی کنم و به نوعی یک AI company تشکیل بدم، مسیرم به شکلی تغییر کرد که پشتیبانی بهتر و بهتر از زبان شیرین فارسی رو بتونم به این مدلها اضافه کنم.
در حال حاضر، کاربردهای زیادی برای مدل بزرگ زبانی فارسی مانند مارال میشه متصور شد. گذشته از رباتهای پشتیبان (که با متد RAG ساخته میشن) میشه به کاربردهای بسیار بیشتری هم برای این مدل فکر کرد. دوست دارم بدونم شما چه فکری در مورد این مدل دارید؟
در پایان هم ممنونم از وقتی که گذاشتید و این مطلب رو خوندید. امیدوارم این مطلب، برای شما مفید بوده باشه. موفق و موید باشید 🙂