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

https://www.aparat.com/v/Pmrs8
Download Telegram
محاسبه‌ی فاصله به کمک 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
This media is not supported in your browser
VIEW IN TELEGRAM
در این ویدئو که اخیرا وایرال شده، همکاری شرکت Figure (تولید‌کننده‌ی روبات‌های انسان‌نما) با شرکت OpenAI در زمینه‌ی استفاده از LLM ها در
روبات‌ها را می‌بینید.

شرکت Figure AI اخیرا از مایکروسافت، NVIDIA، جف بزوس، OpenAI و … جذب سرمایه کرده‌ست.

https://www.figure.ai/
11🔥2
بیل گیتس، هم‌بنیان‌گزار شرکت مایکروسافت، تصویری قدیمی رو منتشر کرده و نوشته:
سی سال پیش، زمانی که می‌خواستیم ظرفیت ذخیره‌سازی CD-ROM را به نمایش بگذاریم، تیم‌مون این پیشنهاد رو داد.
🔥57😍6👏52👍1
مقاله‌ی زیر یک معرفی مقدماتی از شبکه‌های عصبی گرافی (GNNs)، ویژگی‌ها و کاربردهای آن‌‌ها ارائه می‌دهد.
مطالعه‌ی این مقاله که اخیرا در nature reviews methods primers چاپ شده به همه‌ی علاقه‌مندان به شبکه‌های عصبی مبتنی بر گراف پیشنهاد می‌شود.

https://www.nature.com/articles/s43586-024-00294-7.epdf?sharing_token=fW6ehDTzeKWGaFSGjBB25NRgN0jAjWel9jnR3ZoTv0Mx-Ec2c5b7HJq2X5pp5qmTMk3JrKDeNuBgjO_2uyPzUlZTxcsjmO-fIsEPC_c7UE-Y-2o2qWDh0D751I7WsDTa1ixYnKYvWX6ZcJN-nxCeM18iu5ovq05u1nHtXqExuko%3D
16👍3
در حالت کلی برای RAG از Vector Database هایی مثل Pinecone استفاده می‌شه. این دیتابیس‌ها برای کار با داده‌های بی‌ساختار (Unstructured) با بُعد بالا طراحی شده‌اند و در ذخیره و بازیابی داده‌های ساختارمند (Structured) مثل گراف، ناتوان‌اند.

با این حال، در بسیاری از اپلیکیشن‌ها، یکی از منابع خوب برای بالا بردن دقت RAG، گراف‌های دانش (Knowledge Graphs) اند. برای ذخیره‌ و بازیابی اطلاعات به‌شکل گراف از دیتابیس‌های گرافی مثل Neo4j استفاده می‌شه.

بازیابی اطلاعات از گراف‌های دانش در عملیات RAG، به Graph RAG معروف‌ست

برای Graph RAG به کمک Neo4j می‌شه از فریم‌ورک LangChain استفاده کرد که آموزش کامل‌‌اش در لینک زیر موجوده:

https://blog.langchain.dev/enhancing-rag-based-applications-accuracy-by-constructing-and-leveraging-knowledge-graphs/
👍133
تولید تصویر از روی متن یکی از قابلیت‌های جذاب AI است که کاربردهای بی‌شماری دارد.

یکی از شناخته‌شده‌ترین مدل‌ها برای این منظور DALL-E (یک مدل مبتنی بر Tranformer) است که توسط OpenAI معرفی شده اما کد آن در دسترس عموم قرار ندارد و نمی‌توان از آن به سادگی و رایگان در پروژه‌های شخصی استفاده کرد و ساده‌ترین راه استفاده از آن از طریق Microsoft Copilot است.

مدل دیگر Stable Diffusion است که توسط استارتاپ stability.ai به صورت کاملا متن‌باز معرفی شده و به سادگی و کاملا رایگان قابل استفاده در پروژه‌های شخصی‌ست.

به‌صورت خلاصه، یک Text Encoder پرامپت متنی را از کاربر گرفته و آن را در یک فضای امبدینگ، کد می‌کند.
یک تصویر 64x64 به صورت یک نویز تصادفی تولید شده و با بردار امبدینگ متن، Concat می‌شود.
حاصل به یک مدل Latent Diffusion داده‌شده و نویزگیری می‌شود.
عمل نویزگیری (Denoising) ۵۰ بار تکرار شده و در نهایت یک امبدینگ برای تصویری شفاف به دست می‌آید.
این امبدینگ به یک Decoder داده شده و یک تصویر 512x512 دیکود می‌شود.

پیاده‌سازی Stable Diffusion اما به کمک پکیج KerasCV بسیار ساده‌ست و کد آن را در تصویر می‌بینید.
👏13👍53
مدل زبانی Grok-1 که توسط xAI (شرکت هوش مصنوعی متعلق به ایلان ماسک) معرفی شده بود، اوپن‌سورس شد.

این مدل زبانی یک Mixture-of-Experts با ۳۱۴ میلیارد پارامتر است و با فریم‌ورک JAX و زبان Rust توسعه داده شده‌ست.

این مدل در چت‌بات Grok استفاده شده‌ست. این چت‌بات به دلیل دسترسی به اطلاعات لحظه‌ای توییتر معروف‌ست.

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


بلاگ‌پست معرفی:
https://x.ai/blog/grok-os

مخزن گیت‌هاب:
https://github.com/xai-org/grok-1
11👍5
Forwarded from Tensorflow(@CVision) (Alireza Akhavan)
🎉تخفیف‌های ویژه نوروزی کلاس‌ویژن
مهلت استفاده: تا 5 فرودین

💻دوره جامع یادگیری عمیق: تسلط بر هوش مصنوعی با 40 ساعت آموزش (Tensorflow/keras)
🎊400 هزارتومان تخفیف با کد: nowruz_j403

💻دوره‌ی آموزشی ویدیویی Graph Neural Network
🎊200 هزارتومان تخفیف با کد: nowruz_gnn403

💻 دوره آموزشی شبکه‌های بازگشتی عمیق و سری‌های زمانی با تنسرفلو 2
🎊20 درصد تخفیف با کد: nowruz_rnn403

💻دوره آموزشی تخصصی بازشناسی چهره عمیق با Tensorflow/Keras
🎊30 درصد تخفیف با کد: nowruz_face403

💻آموزش پردازش تصویر و بینایی ماشین با OpenCV
🎊50 درصد تخفیف با کد: opencv-akhavan
👍1
یکی از اشتباهات مرسوم بین نوآموزان یادگیری ماشین، تفاوت fine-tuning با transfer learning است.
به جز این دو مفهوم، حتی مفاهیم دیگری نیز هم‌چون multi-task learning گاهی باعث ابهام می‌شوند.

در finetuning ما با یک تسک واحد (مثلا شناسایی اتوموبیل‌ها در تصویر) و دو دیتاست متفاوت مواجه‌ایم. دیتاست اصلی که دقیقا مربوط به تسک ما است (تصاویری که خودمان گرفته‌ایم و قرار است مدل روی آن‌ها کار کند)، دیتاست کوچک و کم‌حجمی‌ست که به تنهایی برای آموزش یک مدل قدرت‌مند کافی نیست و باعث بیش‌برازش (overfit) مدل می‌شود. بااین‌حال، دیتاست مشابه اما بزرگ دیگری برای تشخیص اتومبیل در تصاویر، در دسترس است که مثلا تصاویر آن تفاوت‌هایی جزیی با تصاویر ما دارند. در این صورت می‌توان مدلی را روی دیتاست بزرگ‌تر آموزش داد (pre-trained model) و از پارامترهای آن به عنوان پارامترهای اولیه برای آموزش مدل روی دیتاست خودمان استفاده کرد (به جای پارامترهای تصادفی). مثلا می‌توان مدلِ ازپیش‌آموزش‌دیده‌ی YOLO را برداشت و برای دیتاست تشخیص اتوموبیل، فاین‌تیون کرد. و یا مدل زبانی Gemma را برداشت و برای تولید متن با سبک ادبی، فاین‌تیون کرد.

در transfer learning با دو تسک مجزا اما تا حدی مشابه رو‌به‌رو هستیم. مثلا تسک مطلوب ما یافتن اتوموبیل در تصویر است ولی یک تسک مشابه (مثلا تشخیص مدل اتوموبیل) وجود دارد. برای تسک مطلوب، دیتاست بزرگ و کافی نداریم اما تسک مشابه دیتای قابل توجهی دارد. در این صورت، ابتدا، یک مدل برای انجام تسکی که دیتای کافی دارد آموزش می‌دهیم. انتظار می‌رود که لایه‌های ابتدایی ویژگی‌های سطح پایین تصویر مثل شناسایی لبه‌ها و … را یاد گرفته و لایه‌های انتهایی، ویژگی‌های سطح بالا و مرتبط‌تر به تسک را یاد گرفته باشند. بنابراین پارامترهای لایه‌های ابتدایی را freeze (غیر قابل تغییر) کرده و مدل را روی دیتاست خودمان آموزش می‌دهیم تا پارامترهای لایه‌های انتهایی بر اساس تسک ما بهینه شوند. حتی در بسیاری از موارد، بدون دست‌زدن به لایه‌های ابتدایی که ویژگی‌های کلی تصویر را یادگرفته‌اند، تغییراتی در معماری لایه‌های انتهایی می‌دهیم تا برای تسک ما مناسب‌تر شود. یکی از مثال‌های این کار مدل Stable Diffusion است که برای تبدیل متن به تصویر استفاده می‌شود. این مدل برای تبدیل پرامپت متنی به بردار امبدینگ از مدل آماده و فریزشده‌ی OpenAI CLIP استفاده می‌کند.

یادگیری چندوظیفه‌ای (multi-task learning) بسیار شبیه به transfer learning است و اینجا هم با دو تسک کاملا مجزا اما تا حدی مرتبط به هم مواجه هستیم. با این تفاوت که، در transfer learning ابتدا تسک اول به‌طور کامل آموزش دیده و سپس دانش آن به نحوی به مدل دوم منتقل می‌شود اما در یادگیری چندوظیفه‌ای (MTL) هر دو تسک همزمان با هم آموزش می‌بینند. مثلا فرض کنید تسک اصلی، یک سامانه‌ی پیشنهاددهنده‌ست که در ورودی، یک کاربر و یک قلم کالا را دریافت کرده و در خروجی، میزان علاقه‌ی کاربر به آن قلم کالا را پیش‌بینی می‌کند. برای آموزش این مدل می‌خواهیم از امتیازاتی که کاربران به کالاها داده‌اند استفاده کنیم اما این دیتاست (امتیازهایی که کاربران به کالاها داده‌اند) همیشه در واقعیت بسیار محدود و کم است و به‌تنهایی کمکی به آموزش مدل نمی‌کند. در عوض یک دیتاست بسیار حجیم از کلیک‌های کاربران روی اقلام مختلف داریم. بنابراین تسک دوم می‌شود اینکه آیا کاربر روی قلم کالا کلیک می‌کند یا خیر. واضح‌ست که این تسک یک binary classification بوده و با توجه به فراوانی داده، به راحتی قابل انجام است.
بنابراین تسک اصلی پیش‌بینی میزان علاقه‌ی کاربر به قلم کالا و تسک کمکی، پیش‌بینی کلیک کردن کاربر روی کالا است.
در یادگیری چند‌وظیفه‌ای، بخشی از پارامترها بین دو تسک به اشتراک گذاشته می‌شوند و با آموزش همزمان این دو تسک، تسک کمکی به عنوان یک inductive bias و regularization عمل کرده و به آموزش تسک اصلی کمک می‌کند.

تصویر زیر که از blog.dailydoseofds.com برداشته شده، این مفاهیم را به‌شکل بصری نمایش می‌دهد 👇👇👇

@schoolofai
👍38👏1