انجمن‌های فارسی اوبونتو

جامعه کاربران => پروژه‌ها => نویسنده: محمدرضا حقیری در 01 امرداد 1402، 01:57 ق‌ظ

عنوان: پروژه Chinkara
ارسال شده توسط: محمدرضا حقیری در 01 امرداد 1402، 01:57 ق‌ظ
(https://github.com/prp-e/chinkara/raw/main/chinkara-logo.png?raw=true)

در سال گذشته شاهد حضور هزاران مدل بزرگ زبانی در دنیا بودیم. مدل‌های بزرگ زبانی یا LLMها مدل‌هایی هستند که قادرند متونی نزدیک به متون تولیدشده توسط انسان رو بعنوان خروجی به ما تحویل بدن. یکی از شناخته‌شده‌ترین مدل‌هایی که در این حوزه وجود داره و احتمالا شما هم می‌شناسید، ChatGPT ئه که توسط شرکت OpenAI عرضه شده. اما ChatGPT یک مشکل بزرگ داره و اون هم اینه که انحصاریه. یعنی شما نه می‌دونید که با دیتایی که به مدل می‌دید چی کار می‌کنه و نه اجازه دارید مدل رو روی زیرساخت خودتون اجرا کنید.
حالا پس از عمومیت و محبوبیت یافتن این مدل، شرکت‌ها و حتی اشخاص آمدند و مدل‌های اوپن سورسی ارائه کردن. یکی از این مدل‌های خوب، مدل LLaMa-2 بود که توسط متا (فیسبوک) ارائه شد.
فاین‌تیون کردن و همچنین ساخت یک مدل جدید بر اساس این مدل، برخلاف قبل، روند بهتری داره و نتایج بهترند. از همین رو تصمیم بر این شد که مدل Chinkara بر اساس این مدل و بر اساس دیتاست OpenAssistant Guanaco توسعه پیدا کنه.
این مدل، با پروانه MIT منتشر میشه و این یعنی که شما قادر خواهی بود از این مدل در نرم‌افزارها و پروژه‌های تجاری و حتی متن‌بسته و ناآزاد هم استفاده کنید.

روش استفاده

برای استفاده از چینکارا، شما نیاز به یک GPU با حداقل ۸ گیگ VRAM دارید که CUDA هم پشتیبانی کنه. بهترین گزینه برای من ۲۰۸۰ بود (با ۱۲ گیگ VRAM) ولی خب اگر کارت شما ۸ گیگه، می‌تونید از اون استفاده کنید.

بعدش لازمه این کتابخونه‌ها رو نصب کنید:

pip install  -U bitsandbytes
pip install  -U git+https://github.com/huggingface/transformers.git
pip install  -U git+https://github.com/huggingface/peft.git
pip install  -U git+https://github.com/huggingface/accelerate.git
pip install  -U datasets
pip install  -U einops

پس از نصب کتابخونه‌های مذکور، کافیه که به شکل زیر پیش‌نیازها رو دانلود کنید. دقت کنید اینجا حدود ۱۴ گیگابایت فایل دانلود میشه پس بهتره هارددیسکتون جای خالی داشته باشه:

import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig

model_name = "Trelis/Llama-2-7b-chat-hf-sharded-bf16"
adapters_name = 'MaralGPT/chinkara-7b-improved' 

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    load_in_4bit=True,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    max_memory= {i: '24000MB' for i in range(torch.cuda.device_count())},
    quantization_config=BitsAndBytesConfig(
        load_in_4bit=True,
        bnb_4bit_compute_dtype=torch.bfloat16,
        bnb_4bit_use_double_quant=True,
        bnb_4bit_quant_type='nf4'
    ),
)
model = PeftModel.from_pretrained(model, adapters_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

پس از این که پیش‌نیازها (شامل مدل LLaMa-2 و اداپتر چینکارا) رو دانلود و بارگذاری کردید، لازمه که به مدل بفهمونیم چیزی که ما می‌خواهیم ازش استفاده کنیم لامای خام نیست بلکه چینکاراست. پس برای این کار کافیه که این رو هم به کدمون اضافه کنیم:

from peft import LoraConfig, get_peft_model

model = PeftModel.from_pretrained(model, adapters_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

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

prompt = "What is the answer to life, universe and everything?"

prompt = f"###Human: {prompt} ###Assistant:"

inputs = tokenizer(prompt, return_tensors="pt").to("cuda:0")
outputs = model.generate(inputs=inputs.input_ids, max_new_tokens=50, temperature=0.5, repetition_penalty=1.0)
answer = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(answer)

مشکلات و مسائلی که ممکنه پیش بیاد


لینک‌ها و راه‌حل‌های جایگزین

مدل در گیتهاب (حاوی یک لینک Open In Colab برای دوستانی که GPU ندارند) :  لینک  (https://github.com/prp-e/chinkara)
مدل در HuggingFace :  لینک  (https://huggingface.co/MaralGPT/chinkara-7b)

لینک‌های فوق با مدل Improved بروز شدند.

عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: Dr.Code در 01 امرداد 1402، 02:14 ق‌ظ
اجرا کردن این مدل روی کولب با قوانین جدیدش مغایرت نداره؟
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: محمدرضا حقیری در 01 امرداد 1402، 11:38 ق‌ظ
اجرا کردن این مدل روی کولب با قوانین جدیدش مغایرت نداره؟

درود.

خیر. قوانین و محدودیت‌های کولب، محدوده به:
۱. مدل‌هایی که safety checker ندارند (به عبارتی سانسورشده نیستند) و طبیعتا این موضوع می‌تونه برای استفاده‌کنندگان زیادی (بویژه اقشار آسیب‌پذیر) ضرر داشته باشه.
۲. نوت‌بوک‌هایی که کولب رو به یک پُل برای اجرای نرم‌افزارهای ثالث تبدیل می‌کنن (مثل Auto 1111) و خب این هم دلایل تجاری پشتشه.
مورد دوم با خرید اشتراک Pro کولب، موضوعش حل میشه.
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: جعفر فرقانلوژ در 01 امرداد 1402، 12:45 ب‌ظ
چرا میخوای برای فارسی مدل مجزا داشته باشی ؟ مگه همین روش مدل های دیگه که چند زبان رو یکجا دارند چه مشکلی داره ؟
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: جعفر فرقانلوژ در 01 امرداد 1402، 01:05 ب‌ظ
خروجی ندارم مشکل از کجاست ؟
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: محمدرضا حقیری در 01 امرداد 1402، 01:21 ب‌ظ
چرا میخوای برای فارسی مدل مجزا داشته باشی ؟ مگه همین روش مدل های دیگه که چند زبان رو یکجا دارند چه مشکلی داره ؟

همونطور که اشاره کردم به خاطر کوچک بودن مدل، هندل کردن چند زبان براش سخته. همین الان هم ازش سوال فرانسوی یا چینی بپرسی می‌زنه در و دیوار  ;D

خروجی ندارم مشکل از کجاست ؟

خروجی داری. همون hi که داده بهت خروجیشه. بهتره ازش سوال بپرسی ببینی چی میگه. این هم بگم پاسخ‌ها خیلی coherent نیستن در حال حاضر.
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: جعفر فرقانلوژ در 01 امرداد 1402، 01:24 ب‌ظ
چرا میخوای برای فارسی مدل مجزا داشته باشی ؟ مگه همین روش مدل های دیگه که چند زبان رو یکجا دارند چه مشکلی داره ؟

همونطور که اشاره کردم به خاطر کوچک بودن مدل، هندل کردن چند زبان براش سخته. همین الان هم ازش سوال فرانسوی یا چینی بپرسی می‌زنه در و دیوار  ;D

خروجی ندارم مشکل از کجاست ؟

خروجی داری. همون hi که داده بهت خروجیشه. بهتره ازش سوال بپرسی ببینی چی میگه. این هم بگم پاسخ‌ها خیلی coherent نیستن در حال حاضر.
اها درسته .فارسی سوال پرسیدم عینا همون سوال رو برمیگردونه .  :D
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: محمدرضا حقیری در 06 امرداد 1402، 09:13 ب‌ظ
خب دوستان نسخه‌ جدید و بهبود یافته هم ترین شد و حالا بهتر جواب میده :)
این نسخه از اینجا قابل دسترسه:

https://huggingface.co/MaralGPT/chinkara-7b-improved

فقط یک موضوع مهم که باید بهش توجه داشته باشید، اینه که در حال حاضر این مدل به صورت «کنترل‌شده» یا «سانسورشده» پاسخ میده. یعنی سوالاتی که ممکنه خروجی آسیب‌زا داشته باشه (مثل این که ازش بخواهید براتون نقشه دزدی بکشه) رو از پاسخ دادن طفره میره :)
ولی خب در پرسیدن سوالات عمومی بسیار خوب عمل می‌کنه و بسیار با جزییات بهتر پاسخ میده.
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: جعفر فرقانلوژ در 06 امرداد 1402، 11:12 ب‌ظ
مدل فارسی به کجا رسید ؟ منتظریم !
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: Dr.Code در 06 امرداد 1402، 11:46 ب‌ظ
به‌غیر گنو بودن، چه ویژگی داره که می‌تونه یه فرد عادی رو مجاب کنه که بجای سایر چت‌بات‌ها ازش استفاده کنه؟
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: Dr.Code در 07 امرداد 1402، 02:40 ق‌ظ
پیشنهاد:
۱. توی poe.com واردش کن.
۲. قابلیت تجزیه و تحلیل فایل رو هم مثل جت‌جی‌پی‌تی براش قرار بده.
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: Dragon- در 07 امرداد 1402، 06:20 ق‌ظ
مدل‌های زبانی چقدر این قابلیت رو دارند که برای کار دیگه‌ای غیر از تولید متن استفاده بشن؟ مثلا برای کنترل هوشمند یه وسیله پرنده؟ اگه اینکار ممکنه؛ چقدر تغییر لازمه روی اونها داده بشه؟
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: جعفر فرقانلوژ در 07 امرداد 1402، 11:08 ق‌ظ
به‌غیر گنو بودن، چه ویژگی داره که می‌تونه یه فرد عادی رو مجاب کنه که بجای سایر چت‌بات‌ها ازش استفاده کنه؟
گنو بودن یعنی چی ؟

مدل‌های زبانی چقدر این قابلیت رو دارند که برای کار دیگه‌ای غیر از تولید متن استفاده بشن؟ مثلا برای کنترل هوشمند یه وسیله پرنده؟ اگه اینکار ممکنه؛ چقدر تغییر لازمه روی اونها داده بشه؟
اون فکر نمیکنم «مدل زبانی» باشه .
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: محمدرضا حقیری در 07 امرداد 1402، 12:08 ب‌ظ
مدل فارسی به کجا رسید ؟ منتظریم !

مدل فارسی تحت توسعه‌ست، هنوز تحقیق نیاز داره.

به‌غیر گنو بودن، چه ویژگی داره که می‌تونه یه فرد عادی رو مجاب کنه که بجای سایر چت‌بات‌ها ازش استفاده کنه؟

این پروژه گنو نیست. حتی پروانه انتشارش هم MITئه که از پروانه‌های گنو محسوب نمیشه. صرفا نرم‌افزار آزاده.
بعلاوه این که این مدل از تکنیک QLoRa استفاده می‌کنه که یعنی حجمش کم شده و روی consumer hardware قابل اجراست. یعنی نیاز نیست برید در سایتی ثبت‌نام کنید براش. فقط کافیه روی سیستم خودتون دیپلویش کنید.

پیشنهاد:
۱. توی poe.com واردش کن.
۲. قابلیت تجزیه و تحلیل فایل رو هم مثل جت‌جی‌پی‌تی براش قرار بده.

۱. باید ببینم خودشون چقدر تمایل نشون میدن.
۲. از اونجایی که مدل روی LLaMa-2 سواره، با استفاده از LangChain و ابزارهای مشابه می‌تونه فایل تجزیه و تحلیل کنه.

مدل‌های زبانی چقدر این قابلیت رو دارند که برای کار دیگه‌ای غیر از تولید متن استفاده بشن؟ مثلا برای کنترل هوشمند یه وسیله پرنده؟ اگه اینکار ممکنه؛ چقدر تغییر لازمه روی اونها داده بشه؟

این دیگه دامنه مدل‌های زبانی بزرگ نیست. این مدل‌ها نهایتا بتونن دستورات رو به زبان انسان بگیرن و به زبان ماشین برگردونن. مثلا شما بگی «الان بلند شو» یا «الان فرود بیا» و مثلا کد سیگنال مربوطه رو بدن به ماشین مد نظر.
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: Dr.Code در 07 امرداد 1402، 01:00 ب‌ظ
نقل‌قول
صرفا نرم‌افزار آزاده.
اشتباه گفتم.


نقل‌قول
باید ببینم خودشون چقدر تمایل نشون میدن.
اونا که کاری ندارن، خودت باید اضافه کنی؛ ثبت نام کن بعد روی ایجاد ربات بزن.
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: جعفر فرقانلوژ در 07 امرداد 1402، 06:03 ب‌ظ
نقل‌قول
اونا که کاری ندارن، خودت باید اضافه کنی؛ ثبت نام کن بعد روی ایجاد ربات بزن.
poe خیلی مزخرفه . البته منظورش جزو بات های رسمی/پیش‌فرض بود احتمالا
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: Dr.Code در 07 امرداد 1402، 06:40 ب‌ظ
نقل‌قول
اونا که کاری ندارن، خودت باید اضافه کنی؛ ثبت نام کن بعد روی ایجاد ربات بزن.
poe خیلی مزخرفه . البته منظورش جزو بات های رسمی/پیش‌فرض بود احتمالا
اتفاقا poe خیلی بهتره از سایر رقبا هست، بات‌های جالبی هم داره.
تازگیا از فایل هم پشتیبانی می‌کنه.
بات‌های پیش‌فرض رو هم خودشون توسعه می‌دن.
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: محمدرضا حقیری در 09 امرداد 1402، 11:01 ق‌ظ
دوستان چون پاره‌ای از مشکلات برام پیش آمده (نگران نشید، فقط سرم شلوغه  ;D خوشبختانه اتفاق بدی رخ نداده و حالم خوبه) میخواستم بگم که یک سری تغییرات خوبی قراره در این پروژه شاهد باشیم.

۱. نسخه بزرگتر این پروژه و احتمالا با ۱۲ یا ۱۳ میلیارد پارامتر در دسترس خواهد بود (نسخه فعلی ۷ میلیارد پارامتر داره).
۲. نسخه بزرگتر همچنان در نسخه رایگان Colab قابل اجرا خواهد بود این رو قول بهتون میدم.
۳. پروژه مدل زبانی فارسی با نام «مارال» هم در دست کاره که خب بعدها در موردش تاپیکی ایجاد خواهم کرد و صحبت خواهم کرد در موردش.

خلاصه خواستم بگم که همه چیز تحت کنترله. شاد و خندون باشید.
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: محمدرضا حقیری در 29 امرداد 1402، 10:09 ب‌ظ
در مدت اخیر، مشغول یه سری حرکات بودم (به زودی یک پروژه جدید رو می‌کنم) و خب نرسیدم به این پروژه.
اما در آخرین آزمایشی که انجام شد، با استفاده از الگوریتم gzip موفق به کوچک‌تر کردن مدل (در حد ۱۰ میلیون پارامتر) شدیم و دقت مدل هم انصافا خوب شد :) البته احتمالا مدل با نام جدیدی منتشر بشه، ولی خب خواستم در جریان قرارتون بدم.
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: Dr.Code در 29 امرداد 1402، 11:35 ب‌ظ
نقل‌قول
به زودی یک پروژه جدید رو می‌کنم
خیره ایشالا ;D
نقل‌قول
با استفاده از الگوریتم gzip موفق به کوچک‌تر کردن مدل (در حد ۱۰ میلیون پارامتر) شدیم و دقت مدل هم انصافا خوب شد
این؟
https://en.wikipedia.org/wiki/Gzip
نقل‌قول
احتمالا مدل با نام جدیدی منتشر بشه
همین قشنگه که.
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: محمدرضا حقیری در 30 امرداد 1402، 09:57 ب‌ظ
نقل‌قول
خیره ایشالا ;D

هست سلطان  ;D

نقل‌قول
این؟
https://en.wikipedia.org/wiki/Gzip

دقیقا خود نامردشه  ;D

نقل‌قول
همین قشنگه که.

ببین Chinkara اسمیه که برای مدل‌های مبتنی بر LLaMa در نظر گرفته شده. معماری اون یکی مدل لاما نیست.
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: جعفر فرقانلوژ در 30 امرداد 1402، 11:36 ب‌ظ

نقل‌قول
ببین Chinkara اسمیه که برای مدل‌های مبتنی بر LLaMa در نظر گرفته شده. معماری اون یکی مدل لاما نیست.
نباشه ؟ ???
عنوان: پاسخ : پروژه Chinkara
ارسال شده توسط: Dragon- در 31 امرداد 1402، 06:17 ق‌ظ
اما در آخرین آزمایشی که انجام شد، با استفاده از الگوریتم gzip موفق به کوچک‌تر کردن مدل (در حد ۱۰ میلیون پارامتر) شدیم و دقت مدل هم انصافا خوب شد :)
شاید zstd بهتر باشه.