School of AI
10.5K subscribers
290 photos
94 videos
11 files
612 links
هدف ما در این اجتماع کوچک، آموزش و ترویج هوش مصنوعی و افزایش سطح آگاهی و تخصص نسبت به آن است.
باشد که دست در دست هم، آینده‌ی این صنعت را در میهن‌مان ایران بسازیم.

https://www.aparat.com/v/Pmrs8
Download Telegram
مدل‌های زبانی بزرگ (LLM ها) معمولا برروی حجم زیادی از داده‌های موجود در وب آموزش می‌بینند. این داده‌ها ممکن است جهت‌دار و بی‌کیفیت باشند. برای رفع این مشکل، معمولا پس از آموزش مدل زبانی، مدل آموزش‌دیده‌شده در دسترس تعدادی انسان قرار گرفته و خروجی آن ارزیابی می‌شود. سپس با استفاده از بازخورد جمع‌آوری‌شده در این ارزیابی (Human Feedback) و به‌کارگیری روش‌های یادگیری تقویتی (Reinforcement Learning) یک مدل پاداش (Reward Model) برای
ارزیابی خروجی مدل آموزش داده می‌شود.

آموزش دادن مدل پاداش، به نوعی Finetune کردن مدل اصلی محسوب می‌شود. به این نوع Finetune کردن، روش RLHF گفته می‌شود.

برای فاین‌تیون کردن مدل‌های زبانی به روش RLHF به‌طور معمول از الگوریتم Proximal Policy Optimization یا PPO استفاده می‌شود که بسیار قدرت‌مند‌تر از الگوریتم‌های پایه‌ی یادگیری تقویتی مثل REINFORCE است.

حالا، آرش احمدیان، پژوهش‌گر آزمایشگاه Cohere به همراه همکارانش در مقاله‌ی زیر نشان داده‌اند که با توجه به توانایی بالای پالیسی اولیه و شرط‌گذاری پرامپت‌ها، نیاز به استفاده از الگوریتم PPO برای فاین‌تیون‌کردن مد‌ل‌های زبانی نیست و الگوریتم‌های ساده‌تر و سریع‌تر مثل REINFORCE در این زمینه کاراتر‌ند.

جالب این‌که گوگل (دیپ‌مایند) هم در مدل زبانی جدید خود (Gemma) از الگوریتم REINFORCE به‌جای PPO استفاده کرده‌ست.

https://cohere.com/research/papers/back-to-basics-revisiting-reinforce-style-optimization-for-learning-from-human-feedback-in-llms-2024-02-23



پی‌نوشت ۱: عده‌ای از پژوهش‌گران معتقدند فاین‌تیون‌کردن مدل‌های زبانی از روی بازخورد انسانی باعث افت کیفیت مدل‌ها به مرور زمان می‌شود.

پی‌نوشت ۲: مدل زبانی کوچک شرکت مایکروسافت (Phi-2) به روش RLHF فاین‌تیون نشده‌ست. دلیل این کار، فراهم آوردن بستری برای تحقیق در رابطه با چالش‌های مرتبط با ایمنی این مدل‌ها از جمله سوگیری‌های اجتماعی، محتوای سمی، پایش‌پذیری و … است.
👏22👍81
Media is too big
VIEW IN TELEGRAM
🎬فیلم جلسه سخنرانی آقای مهندس علیرضا اخوان پور- Graph Neural Networks

🧷مربوط به رویداد : https://t.me/eventai/820

🔖اسلایدها:
https://t.me/eventai/828

📓منبع:
https://t.me/CS_Sharif_University_2023

#gnn #gcn #graph #deeplearning #AI
#گراف #شبکه_عصبی_گراف
〰️〰️〰️〰️〰️
این کانال با هدف آگاه سازی از رویدادهای مرتبط با هوش مصنوعی نظیر همایش، کنفرانس، ورک‌شاپ و کلاس  تشکیل شده است.

@eventai
👍12
همون‌طور که احتمالا بیشتر علاقه‌مندان به هوش مصنوعی و یادگیری ماشین درجریان‌اند، در سال‌های اخیر، به‌ویژه پس از معرفی Transformerها، یک تغییر نگرش و پارادایم‌شیفت در این حوزه اتفاق افتاده و اون هم حرکت به سمت مدل‌های بنیادین (Foundation Models) ساخته‌شده توسط آزمایش‌گاه‌های بزرگ، به‌عنوان بلوک‌های سازنده‌ی سامانه‌های هوشمند‌ست.

مدل‌های بنیادین، شبکه‌های عصبی ژرف و بزرگی‌اند که برروی حجم وسیعی از داده‌های گوناگون آموزش دیده‌اند و برای انجام تسک‌های گوناگون (نه فقط یک تسک) به‌سادگی و به‌صورت few-shot و حتی zero-shot فاین‌تیون شده و آموزش می‌بینند.

به عنوان مثال، مدل‌های زبانی بزرگ همچون GPTها (اوپن‌اِی‌آی) یا Llama (متا) یا Gemma (گوگل) یا Phi (مایکروسافت)، که با مشاهده‌ی حجم وسیعی از داده‌های متنی در زمینه‌های مختلف و استخراج رابطه‌ی آماری بین واژه‌ها، الگوهای زبانی را یادگرفته و برای تسک‌های مختلف از جمله پرسش‌وپاسخ، خلاصه‌سازی، استنتاج و … مورد استفاده قرار می‌گیرند. و یا مدل‌های بنیادین مرتبط با بینایی ماشین مانند CLIP (اوپن‌اِی‌آی) یا GLIP (مایکروسافت) یا SAM (متا) یا YOLO-World که با آموزش برروی حجم وسیعی از تصاویر، مفاهیم بصری موجود در تصاویر را یاد گرفته و به‌صورت zero-shot برای تسک‌های مختلف قابل استفاده‌اند.

بااینکه، مدل‌های بنیادین در زمینه‌‌های پردازش زبان طبیعی و بینایی ماشین پیش‌رفت‌های قابل توجهی داشته‌اند، اما در زمینه‌ی پیش‌بینی سری‌های زمانی که یکی از مهم‌ترین کاربرد‌های هوش مصنوعی به‌ویژه در کسب‌وکارها‌ست، هنوز جای کار بسیار است.

در زیر، لینک چند نمونه از مدل‌های بنیادین که اخیرا برای پیش‌بینی سری‌های زمانی معرفی شده‌اند را مشاهده می‌کنید:

https://arxiv.org/pdf/2402.02592.pdf
https://arxiv.org/pdf/2310.08278.pdf
https://arxiv.org/pdf/2402.03885.pdf
https://arxiv.org/pdf/2310.10688.pdf
👍268
This media is not supported in your browser
VIEW IN TELEGRAM
مدل بنیادین گوگل برای درک ویدئو منتشر شد!!!

مدل VideoPrism یک ViFM یا مدل بنیادین ویدئو‌ست که برخلاف مدل‌های قبلی مثل VideoCLIP برای دامنه‌ی وسیعی از تسک‌ها از جمله classification و localization و retrieval و captioning و question answering قابل استفاده‌ست.

https://blog.research.google/2024/02/videoprism-foundational-visual-encoder.html
🔥7👍4😍3
This media is not supported in your browser
VIEW IN TELEGRAM
نسخه‌ی جدید از مدل زبانی شرکت فرانسوی Mistral به نام Mistral Large که در روزهای اخیر معرفی شده توانسته (به‌ویژه در تسک‌های استدلال-محور) از سایر رقبا بهتر عمل کنه.

امروز شرکت مایکروسافت (که اتفاقا سهام‌دار اصلی OpenAI هم است) اعلام کرد طی قراردی همکاری‌ای جدید‌، این مدل روی Microsoft Azure AI Studio و Microsoft Azure Machine Learning Studio در دسترس است.

https://azure.microsoft.com/en-us/blog/microsoft-and-mistral-ai-announce-new-partnership-to-accelerate-ai-innovation-and-introduce-mistral-large-first-on-azure/
👍141
چگونه از Tensorboard در Google Colab استفاده کنیم؟!

همون‌طور که می‌دونید، Tensorboard ابزاری‌ست که برای به‌تصویرکشیدن متریک‌هایی مثل loss و accuracy در حین آموزش مدل در TensorFlow (و البته PyTorch) و چند مورد دیگه استفاده می‌شه.

برای این کار، هنگام آموزش مدل در تنسورفلو، یک callback به نام tf.keras.callbacks.TensorBoard را به متد train پاس می‌دیم و در پایتورچ، از torch.utils.tensorboard.SummaryWriter استفاده می‌کنیم. اطلاعات لازم در یک پوشه (مثلا /runs/. در پایتورچ) لاگ می‌شن. سپس سرویس TensorBoard که یک نرم‌افزار تحت وب جدا‌ست رو با اجرای دستور tensorboard در ترمینال اجرا کرده و از طریق مرورگر وب (http://localhost:6006) به آن متصل می‌شیم.

اما زمانی که از Google Colab استفاده می‌کنیم، مرورگر ما به ماشین مجازی‌ای که کد روی اون در حال اجراست، دسترسی نداره و چون اون ماشین مجازی، IP معتبر و اختصاصی روی اینترنت نداره، در حالت عادی نمی‌تونیم به سرویس TensorBoard روی اون متصل شیم.

پس راه‌حل چیست؟
پاسخ: باز کردن یک تونل از یک آدرس معتبر اینترنتی به داخل ماشین مجازی و سرویس تنسوربورد

اگه یه دامنه‌ی اختصاصی برای خودتون دارید می‌تونید روی سایت Cloudflare یه اکانت بسازید و اونجا از یک آدرس معتبر یه تونل به ماشینی که می‌خواید باز کنید.
ولی اگه دامین خودتون رو ندارید می‌تونید از Ngrok استفاده کنید.

برای استفاده از Ngrok داخل نوت‌بوک خود در گوگل کولب، اول دو دستور زیر رو اجرا کنید تا Ngrok دانلود و extract شه:

!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip -o ngrok-stable-linux-amd64.zip

بعد سرویس تنسوربورد رو با دستور زیر روی پورت ۶۰۰۶ اجرا کنید:

LOGDIR = '/tmp/log'
get_ipython().system_raw(
'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'
.format(LOG_DIR)
)

بعد Ngrok رو اجرا کرده و سر تونل رو به پورت ۶۰۰۶ ماشین مجازی وصل کنید

get_ipython().system_raw('./ngrok http 6006 &')

تونل شما آماده‌ست. با اجرای دستور زیر آدرس عمومی دسترسی به تونل رو پیدا کنید و ازون طریق تنسوربورد رو باز کنید:

!curl -s http://localhost:4040/api/tunnels | python3 -c \
"import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
👍196😍4🔥3
محاسبه‌ی فاصله به کمک Ultralytics YOLOv8

https://docs.ultralytics.com/guides/distance-calculation/#advantages-of-distance-calculation


پی‌نوشت: توی عکس چه‌جوری فاصله اون دو نفر ۴ متره؟! 😂
👍143🔥1
شرکت مایکروسافت یک شبکه‌ی عصبی گرافی به نام ViSNet برای مدل‌سازی و بازنمایی ساختارهای هندسی سه‌بعدی مانند مولکول‌ها ارائه داده‌ست که قادر‌ست ارتباطات پیچیده بین ساختار مولکولی و فعالیت بیولوژیکی (structure-activity relationships) را درک کرده و رفتار و ویژگی‌های مولکول‌‌ها را پیش‌بینی کند.


https://www.microsoft.com/en-us/research/blog/visnet-a-general-molecular-geometry-modeling-framework-for-predicting-molecular-properties-and-simulating-molecular-dynamics/

لینک مقاله در Nature:
https://www.nature.com/articles/s41467-023-43720-2
15👍7
اکثر دوستان با سه فریم‌ورک اصلی یادگیری عمیق یعنی TensorFlow و PyTorch و JAX آشنااند، اما voodoo یک فریم‌ورک نسبتا جدید‌ست که به زبان Mojo (زبان برنامه‌نویسی جدید برای AI که مزایای C و Python را ترکیب کرده‌ست) نوشته شده‌ست.

حال اینکه اخیرا آقای شوله، نویسنده‌ی Keras اعلام کرده‌اند که در حال بررسی این فریم‌ورک برای افزودن به لیست بک‌اند‌های قابل پشتیبانی در Keras 3 هستند.

https://github.com/Benny-Nottonson/voodoo
🔥22👍8
با گسترش استفاده از LLM ها در اپلیکیشن‌های تحت وب، و باتوجه به ماهیت غیرقطعی عمل‌کرد آن‌ها، آسیب‌پذیری‌های امنیتی جدیدی پدید آمده‌اند؛ مانند:
- Prompt Injection
- Data Leakage
- Inadequate Sandboxing
- Unauthorized Code Execution
- Model DoS
- Information Disclosure
و …
بنابراین، نیاز به یک دیواره‌ی آتش مناسب برای قرار گرفتن در جلوی مدل‌ها و بررسی درخواست‌ها برای تشخیص سواستفاده بیشتر از پیش حس می‌شود.


۱۰ آسیب‌پذیری در اپلیکیشن‌های مبتنی بر LLM ها به‌گفته‌ی OWASP
https://owasp.org/www-project-top-10-for-large-language-model-applications/

شرکت Cloudflare که جزو بزرگ‌ترین شرکت‌های ارائه‌دهنده‌ی خدمات ابری، CDN و امنیت سایبری و … است، از محصول جدید خود که یک دیواره‌ی آتش (Firewall) برای قرار گرفتن در جلوی LLM هاست، رونمایی کرد. محصول Firewall for AI در واقع یک WAF است که علاوه بر قابلیت‌های مرسوم مانند کنترل rate limit و جلوگیری از injection، قابلیت تحلیل پرامپت‌ها برای تشخیص سوءنیت را نیز دارد.

https://blog.cloudflare.com/firewall-for-ai/
👍11🔥2
کورس دیپ‌لرنینگ دکتر سهیل فیضی - دانشگاه مریلند

https://youtube.com/playlist?list=PLHgjs9ncvHi80UCSlSvQe-TK_uOyDv_Jf&si=fl3n4tW-WJ3th8f2

آخرین لکچر در مورد تولید تصاویر توسط diffusion model ها است:

https://youtu.be/rLepfNziDPM?si=9vMQYCOAhzL5u4Cn
👍102
روش‌های مختلف فاین‌تیون کردن مدل‌های زبانی بزرگ (LLM ها)

همون‌طور که می‌دونید، مدل‌های زبانی بزرگ معمولا از میلیاردها پارامتر قابل آموزش تشکیل شده‌اند که بهینه‌سازی و آموزش کامل همه‌ی آن‌ها نیازمند استفاده از حجم وسیعی داده‌ی متنی و توان پردازشی‌ست که حداقل فعلا از توان عامه‌ی پژوهش‌گرها خارج است و معمولا آزمایشگاه‌های تحقیقاتی بزرگ مانند OpenAI و Google با صرف زمان و هزینه زیاد مدل‌هایی را آموزش می‌دهند که ممکن است برای کاربردهای عمومی مناسب باشند. با این حال برای سفارشی‌سازی این مدل‌ها برای تسک‌های خاص، لازم است که این مدل‌ها روی مجموعه‌داده‌ی مربوط به آن تسک که عموما بسیار کوچک‌تر‌ست، با صرف توان پردازشی به مراتب کمتر، فاین‌تیون (Finetune) شوند. برای فاین‌نیون کردن شبکه‌های عصبی عمیق معمولی، پارامترهای مربوط به لایه‌های ابتدایی شبکه که ویژگی‌های پایه را یادگرفته‌اند، freeze شده و پارامترهای لایه‌های آخر که بیشتر با تسک مرتبط‌اند، اصلاح می‌شوند. اما فاین‌تیون کردن مدل‌های زبانی، به این سادگی نیست و حتی با یک اشتباه ممکن است مدل، الگوهای زبانی عمومی را نیز فراموش کند (Catastrophic Forgetting).

در اینجا به معرفی روش‌های مرسوم برای فاین‌تیون کردن مدل‌های زبانی می‌پردازیم.


روش اول) فاین‌تیون کردن کل مدل
یک مدل Pretrained انتخاب شده و همه‌ی پارامترهای آن بر روی دیتاست مربوط به تسک مورد نظر اصلاح می‌شوند. واضح‌ست که این روش از نظر زمان اجرا و حافظه‌‌ی مصرفی، در عمل، کارا نیست.

روش دوم) روش LoRA
این روش (Low-Rank Adaptation) توسط تیم مایکروسافت معرفی شده که در آن به جای اصلاح پارامترهای مدل زبانی، تعداد کمی پارامتر جدید موسوم به LoRA adapter به مدل اضافه می‌شوند و فقط این پارامترهای جدید بر روی دیتاست مربوط به تسک آموزش می‌بینند و پارامترهای خود مدل زبانی بدون تغییر باقی می‌مانند. واضح‌ست که این روش علاوه بر کارایی و مصرف کم‌تر حافظه، جلوی catastrophic forgetting را هم می‌گیرد.
روش‌های بهینه‌تری مانند QLoRA و +LoRA هم معرفی شده‌اند که می‌توانید در موردشان تحقیق کنید.

روش سوم)‌ روش Prompt Engineering
‌در این روش، پارامترهای LLM اصلاح نمی‌شوند. در واقع از LLM فقط برای فهم زبان استفاده می‌شود و داده‌های مربوط به تسک جدید، در قالب یک پرامپت مهندسی شده، قبل از کوئری، به LLM داده می‌شوند. واضح‌ست که تعداد توکن‌های ورودی LLM ها محدود است و این روش فقط برای زمانی کارایی دارد که تعداد نمونه‌های آموزشی، بسیار اندک‌اند (few-shot learning). همچنین، این روش در معرض خطر توهم (hallucinations) قرار دارد و ممکن‌ست با وجود دریافت چند شات دیتای آموزشی باز هم اطلاعات نادرست خروجی دهد.

روش چهارم) روش RAG
روش Retrieval-Augmented Generation تا حدی شبیه به روش Prompt Engineering است، با این تفاوت که در آن، تولید متن (Text Generation) توسط LLM، به کمک اطلاعاتِ مرتبطِ بازیابی‌شده‌ از یک پایگاه دانش (Knowledge base) انجام می‌گیرد.
به عبارت دیگر، در مرحله‌ی اول، یک مدل Embedding موسوم به مدل Retriever (برای انکودکردن مستندات و کوئری‌ها در یک فضای امبدینگ)، آموزش می‌بیند.
سپس در مرحله‌ي دوم، همه‌ی مستندات متنی مربوط به تسک مورد نظر، یک بار برای همیشه از این مدل امبدینگ عبور کرده و به بردار امبدینگ تبدیل می‌شوند.
در مرحله‌ی سوم، این بردارهای امبدینگ در یک Vector Database مانند Pinecone یا FAISS ذخیره (index) می‌شوند.
از اینجا به بعد، قبل از ارسال هر کوئری متنی به LLM، ابتدا آن کوئری را از مدل Retriever رد کرده و بردار امبدینگ آن را پیدا می‌کنیم. سپس با بررسی میزان مشابهت آن با بردارهای امبدینگ مربوط به مستندات ذخیره‌شده در Vector Database تعدادی از مستندات مرتبط را بازیابی کرده و قبل از کوئری اصلی، به شکل یک پرامپت مهندسی‌شده به LLM می‌دهیم.
این روش در شرایطی که تعداد زیادی سند متنی مرتبط با تسک موجود است، کارایی داشته و می‌تواند اطلاعات دقیق‌تری در رابطه با تسک ارائه دهد.

روش پنجم) روش RLHF
مدل‌های زبانی بزرگ معمولا بر روی حجم زیادی از داده‌های موجود در وب آموزش می‌بینند. این داده‌ها ممکن‌ست جهت‌دار و بی‌کیفیت باشند. برای رفع این مشکل، مدل زبانی آموزش‌داده‌شده، در دسترس چند نیروی انسانی قرار گرفته و عمل‌کرد آن در قالب بازخوردهایی ارزیابی می‌شود. سپس به کمک الگوریتم‌های یادگیری تقویتی مانند REINFORCE یا PPO یک مدل پاداش (Reward Model) آموزش داده می‌شود. از این مدل برای انتخاب خروجی بهتر در انتهای کار استفاده می‌شود. این روش که نوعی Fine-tuning به‌حساب می‌آید، به‌نام Reinforcement Learning from Human Feedback) شناخته می‌شود.


تصویر زیر برخی از این روش‌ها را به‌شکل بصری نمایش می‌دهد 👇👇👇
@schoolofai
12👍10👏2
اخیرا دو کتاب‌خانه به نام‌های KerasCV و KerasNLP برپایه‌ی Keras3 توسعه داده شده‌اند که پیاده‌سازی تسک‌های بینایی رایانه و پردازش زبان طبیعی را به ساده‌ترین و مقیاس‌پذیرترین شکل، ممکن می‌کنند.

حال تیم TensorFlow تعدادی ویدئوی آموزشی برای استفاده از این دو کتاب‌خانه برای مهندس‌های یادگیری ماشین منتشر کرده‌ست:

https://youtube.com/playlist?list=PLQY2H8rRoyvzor4yH2nFktNo-ug6RiNZ_&si=fjlXm-OK70NS_imy
👍173
چهارشنبه‌سوری‌ مبارک 🔥


(نگاره توسط مدل DALL-E 3 ساخته شده‌ست)
🔥286😍2👍1👏1
نسخه‌ی جدید TensorFlow (نسخه‌ی ۲.۱۶) منتشر شد.
این نسخه از Keras3 به‌جای Keras2 استفاده می‌کند. بنابراین اگر کد قدیمی‌ای دارید که با Keras جدید سازگار نیست، باید در آن به جای keras از tf-keras (کراس قدیمی ورژن ۲) استفاده کنید.


نصب:
‍‍‍‍
pip install tf-keras~=2.16


فعال‌سازی:

import os
os.environ["TF_USE_LEGACY_KERAS"]=”1”
👍91🙏1
اگر می‌خواهید به‌سادگی مدل‌های یادگیری ماشین رو به صورت realtime روی موبایل (اندروید یا آی‌او‌اس) و یا رزبری‌پای اجرا کنید، از Google MediaPipe استفاده کنید:

https://developers.google.com/mediapipe


مثال: آموزش اعمال فیلتر‌هایی شبیه به SnapChat و Instagram روی دوربین موبایل:
https://www.youtube.com/watch?v=QERl1-ckFr8
👍141