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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: پروژه Chinkara  (دفعات بازدید: 4769 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین محمدرضا حقیری

  • High Sr. Member
  • *
  • ارسال: 528
    • ذهن زیبا
پروژه Chinkara
« : 01 امرداد 1402، 01:57 ق‌ظ »


در سال گذشته شاهد حضور هزاران مدل بزرگ زبانی در دنیا بودیم. مدل‌های بزرگ زبانی یا 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 ندارند) : لینک
مدل در HuggingFace : لینک

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

« آخرین ویرایش: 06 امرداد 1402، 09:14 ب‌ظ توسط محمدرضا حقیری »

آفلاین Dr.Code

  • High Hero Member
  • *
  • ارسال: 1446
  • جنسیت : پسر
  • Dr.Code
    • My website
پاسخ : پروژه Chinkara
« پاسخ #1 : 01 امرداد 1402، 02:14 ق‌ظ »
اجرا کردن این مدل روی کولب با قوانین جدیدش مغایرت نداره؟

آفلاین محمدرضا حقیری

  • High Sr. Member
  • *
  • ارسال: 528
    • ذهن زیبا
پاسخ : پروژه Chinkara
« پاسخ #2 : 01 امرداد 1402، 11:38 ق‌ظ »
اجرا کردن این مدل روی کولب با قوانین جدیدش مغایرت نداره؟

درود.

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

آفلاین جعفر فرقانلوژ

  • High Hero Member
  • *
  • ارسال: 5100
  • جنسیت : پسر
  • اممم . اره دیگه! mehr32
پاسخ : پروژه Chinkara
« پاسخ #3 : 01 امرداد 1402، 12:45 ب‌ظ »
چرا میخوای برای فارسی مدل مجزا داشته باشی ؟ مگه همین روش مدل های دیگه که چند زبان رو یکجا دارند چه مشکلی داره ؟
دیگر به انجمن باز نخواهم گشت شاید جایی با این نام پیدام کنید اگه کاری با من دارید : qxc9966@protonmail.com

آفلاین جعفر فرقانلوژ

  • High Hero Member
  • *
  • ارسال: 5100
  • جنسیت : پسر
  • اممم . اره دیگه! mehr32
پاسخ : پروژه Chinkara
« پاسخ #4 : 01 امرداد 1402، 01:05 ب‌ظ »
خروجی ندارم مشکل از کجاست ؟
دیگر به انجمن باز نخواهم گشت شاید جایی با این نام پیدام کنید اگه کاری با من دارید : qxc9966@protonmail.com

آفلاین محمدرضا حقیری

  • High Sr. Member
  • *
  • ارسال: 528
    • ذهن زیبا
پاسخ : پروژه Chinkara
« پاسخ #5 : 01 امرداد 1402، 01:21 ب‌ظ »
چرا میخوای برای فارسی مدل مجزا داشته باشی ؟ مگه همین روش مدل های دیگه که چند زبان رو یکجا دارند چه مشکلی داره ؟

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

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

خروجی داری. همون hi که داده بهت خروجیشه. بهتره ازش سوال بپرسی ببینی چی میگه. این هم بگم پاسخ‌ها خیلی coherent نیستن در حال حاضر.

آفلاین جعفر فرقانلوژ

  • High Hero Member
  • *
  • ارسال: 5100
  • جنسیت : پسر
  • اممم . اره دیگه! mehr32
پاسخ : پروژه Chinkara
« پاسخ #6 : 01 امرداد 1402، 01:24 ب‌ظ »
چرا میخوای برای فارسی مدل مجزا داشته باشی ؟ مگه همین روش مدل های دیگه که چند زبان رو یکجا دارند چه مشکلی داره ؟

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

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

خروجی داری. همون hi که داده بهت خروجیشه. بهتره ازش سوال بپرسی ببینی چی میگه. این هم بگم پاسخ‌ها خیلی coherent نیستن در حال حاضر.
اها درسته .فارسی سوال پرسیدم عینا همون سوال رو برمیگردونه .  :D
دیگر به انجمن باز نخواهم گشت شاید جایی با این نام پیدام کنید اگه کاری با من دارید : qxc9966@protonmail.com

آفلاین محمدرضا حقیری

  • High Sr. Member
  • *
  • ارسال: 528
    • ذهن زیبا
پاسخ : پروژه Chinkara
« پاسخ #7 : 06 امرداد 1402، 09:13 ب‌ظ »
خب دوستان نسخه‌ جدید و بهبود یافته هم ترین شد و حالا بهتر جواب میده :)
این نسخه از اینجا قابل دسترسه:

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

فقط یک موضوع مهم که باید بهش توجه داشته باشید، اینه که در حال حاضر این مدل به صورت «کنترل‌شده» یا «سانسورشده» پاسخ میده. یعنی سوالاتی که ممکنه خروجی آسیب‌زا داشته باشه (مثل این که ازش بخواهید براتون نقشه دزدی بکشه) رو از پاسخ دادن طفره میره :)
ولی خب در پرسیدن سوالات عمومی بسیار خوب عمل می‌کنه و بسیار با جزییات بهتر پاسخ میده.

آفلاین جعفر فرقانلوژ

  • High Hero Member
  • *
  • ارسال: 5100
  • جنسیت : پسر
  • اممم . اره دیگه! mehr32
پاسخ : پروژه Chinkara
« پاسخ #8 : 06 امرداد 1402، 11:12 ب‌ظ »
مدل فارسی به کجا رسید ؟ منتظریم !
دیگر به انجمن باز نخواهم گشت شاید جایی با این نام پیدام کنید اگه کاری با من دارید : qxc9966@protonmail.com

آفلاین Dr.Code

  • High Hero Member
  • *
  • ارسال: 1446
  • جنسیت : پسر
  • Dr.Code
    • My website
پاسخ : پروژه Chinkara
« پاسخ #9 : 06 امرداد 1402، 11:46 ب‌ظ »
به‌غیر گنو بودن، چه ویژگی داره که می‌تونه یه فرد عادی رو مجاب کنه که بجای سایر چت‌بات‌ها ازش استفاده کنه؟

آفلاین Dr.Code

  • High Hero Member
  • *
  • ارسال: 1446
  • جنسیت : پسر
  • Dr.Code
    • My website
پاسخ : پروژه Chinkara
« پاسخ #10 : 07 امرداد 1402، 02:40 ق‌ظ »
پیشنهاد:
۱. توی poe.com واردش کن.
۲. قابلیت تجزیه و تحلیل فایل رو هم مثل جت‌جی‌پی‌تی براش قرار بده.

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5124
  • جنسیت : پسر
پاسخ : پروژه Chinkara
« پاسخ #11 : 07 امرداد 1402، 06:20 ق‌ظ »
مدل‌های زبانی چقدر این قابلیت رو دارند که برای کار دیگه‌ای غیر از تولید متن استفاده بشن؟ مثلا برای کنترل هوشمند یه وسیله پرنده؟ اگه اینکار ممکنه؛ چقدر تغییر لازمه روی اونها داده بشه؟
میدونید که زکات علم نشر آن است

آفلاین جعفر فرقانلوژ

  • High Hero Member
  • *
  • ارسال: 5100
  • جنسیت : پسر
  • اممم . اره دیگه! mehr32
پاسخ : پروژه Chinkara
« پاسخ #12 : 07 امرداد 1402، 11:08 ق‌ظ »
به‌غیر گنو بودن، چه ویژگی داره که می‌تونه یه فرد عادی رو مجاب کنه که بجای سایر چت‌بات‌ها ازش استفاده کنه؟
گنو بودن یعنی چی ؟

مدل‌های زبانی چقدر این قابلیت رو دارند که برای کار دیگه‌ای غیر از تولید متن استفاده بشن؟ مثلا برای کنترل هوشمند یه وسیله پرنده؟ اگه اینکار ممکنه؛ چقدر تغییر لازمه روی اونها داده بشه؟
اون فکر نمیکنم «مدل زبانی» باشه .
دیگر به انجمن باز نخواهم گشت شاید جایی با این نام پیدام کنید اگه کاری با من دارید : qxc9966@protonmail.com

آفلاین محمدرضا حقیری

  • High Sr. Member
  • *
  • ارسال: 528
    • ذهن زیبا
پاسخ : پروژه Chinkara
« پاسخ #13 : 07 امرداد 1402، 12:08 ب‌ظ »
مدل فارسی به کجا رسید ؟ منتظریم !

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

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

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

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

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

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

این دیگه دامنه مدل‌های زبانی بزرگ نیست. این مدل‌ها نهایتا بتونن دستورات رو به زبان انسان بگیرن و به زبان ماشین برگردونن. مثلا شما بگی «الان بلند شو» یا «الان فرود بیا» و مثلا کد سیگنال مربوطه رو بدن به ماشین مد نظر.

آفلاین Dr.Code

  • High Hero Member
  • *
  • ارسال: 1446
  • جنسیت : پسر
  • Dr.Code
    • My website
پاسخ : پروژه Chinkara
« پاسخ #14 : 07 امرداد 1402، 01:00 ب‌ظ »
نقل‌قول
صرفا نرم‌افزار آزاده.
اشتباه گفتم.


نقل‌قول
باید ببینم خودشون چقدر تمایل نشون میدن.
اونا که کاری ندارن، خودت باید اضافه کنی؛ ثبت نام کن بعد روی ایجاد ربات بزن.