The Debugging Diaries
88 subscribers
63 photos
47 videos
33 files
73 links
گوشه‌ای برای یادداشت و ثبت مطالب مربوط به پایتون، یادگیری عمیق و هوش و هر چی که مربوط به تکنولوژی باشه.
加入频道
آقای Andrew Ng جدیدا یک ویدیویی رو منتشر کردن که راجع به Agent ها و Agentic workflow ها صحبت میکنه.Agent ها یکی از مهمترین trend هاست. پیشنهاد میکنم حتما ویدئو را ببینید.

لینک ویدیو

https://youtu.be/sal78ACtGTc

🆔 @data_science_python_and_r
dataexpert.io/questions

سایت برای کوئری زدن و حل کردن تمرینات SQL
#sql
Forwarded from DLeX: AI Python (NaviD DariYa)
کورس جدید دانشگاه استنفورد درباره ترنسفورمرها از امروز آغاز می شه.
@ai_python

شرکت در این کورس از طریق زوم به صورت لایو و آنلاین و رایگان امکان پذیر خواهد بود.
همچنین فایل رکورد شده ۲ هفته بعد از هر جلسه در وب سایت قرار خواهد گرفت.

https://web.stanford.edu/class/cs25/
Forwarded from Mehdi Allahyari
برای فارسی مدل اپن سورس خوب زیاد نیست. مدلهای Nemotron کمپانی Nvidia و AYA از کمپانی Cohere خیلی از زبانها از جمله فارسی را ساپورت میکنن.
این لینک هاشون:
https://developer.nvidia.com/nemotron-3-8b
https://txt.cohere.com/aya/
1954815745_-1493141598.pdf
347.1 KB
پیشنهاد نمودارهای پاور بی آی برای کاربردهای مختلف
Forwarded from DLeX: AI Python (NaviD DariYa)
یک Survey درباره LLM های چند زبانه که به تازگی در اویل همین ماه میلادی منتشر شد و شاید مطالعه ش خالی از لطف نباشه.

@ai_python

از جمله به چالش های پیش روی این مدل های زبانی بزرگ چند زبانه نیز
پرداخته شده است

https://arxiv.org/abs/2404.04925
Forwarded from School of AI
پس از Databricks، این‌بار پژوهش‌گران هوش مصنوعی در شرکت Snowflake دست‌به‌کار شده و مدل زبانی Arctic را با شعار efficiently intelligent and truly open منتشر کرده‌اند.

معماری این مدل، ترنسفورمر ترکیبی (Dense+MoE) با ۱۲۸ خبره و تعداد کل ۴۸۰ میلیارد پارامترست که به کمک یک مکانیزم top-2 gating در هر لحظه فقط ۱۷ میلیارد پارامتر فعال داشته و به‌کمک ۳/۵ تریلیون توکن آموزش دیده‌ست.

این مدل، تسک‌های سازمانی هم‌چون SQL Generation و Coding و Instruction Following را با دقتی در حد Llama3 70B انجام می‌دهد با این‌که هزینه‌ی بسیار کمتری (کم‌تر از ۲ میلیون دلار - حدود یک هفدهم) از لحاظ محاسبات، صرف آموزش آن شده‌ست.

آموزش این مدل ۷ برابر محاسبات کم‌تری نسبت به مدل زبانی شرکت Databriks موسوم به DBRX دارد، بااین‌حال، در ریاضیات، استدلال و فهم زبان بهتر عمل می‌کند.

وزن‌ها و کدهای این مدل تحت لیسانس Apache 2.0 به‌صورت کاملا اوپن-سورس منتشر شده‌ست. همچینین، تمام داده‌ها و بینش‌های پژوهشی نیز در اختیار عموم قرار گرفته‌ست.

این مدل از امروز روی HuggingFace دردسترس است.
https://huggingface.co/Snowflake/snowflake-arctic-instruct
Forwarded from DLeX: AI Python (NaviD DariYa)
این کتابخونه پایتون با استفاده از LLM یک پایپ لاین برای Scraping تهیه می کنه

@ai_python

https://github.com/VinciGit00/Scrapegraph-ai
Forwarded from School of AI
طی روزهای گذشته، بسیاری از دوستان ML Engineer، پرسش‌هایی در مورد روش عملی پیاده‌سازی یک سامانه‌ی RAG داشته‌اند. بنابراین در این نوشتار به‌خلاصه در این مورد
می‌پردازم.

مدل‌های زبانی، در واقع، با نگاه به حجم زیادی داده‌ی متنی، زبان آن متون رو یاد می‌گیرند نه چیز دیگری. بنابراین متن‌های تولید‌شده به‌کمک مدل‌های زبانی، به متن‌هایی که هنگام آموزش مدل مورد استفاده قرار گرفته‌اند، وابسته‌اند و ممکن‌ست از لحاظ زبانی، درست، ولی از نظر صحت، نادرست باشند. بنابراین می‌توان هنگام تولید متن (generation) اطلاعاتی را در اختیار مدل قرار داد (augmentation) که مدل بر اساس آن اطلاعات، به پرسش‌ها پاسخ دهد. با این کار می‌توان دانش مدل زبانی را به‌روز نگه داشت و میزان Context Awareness را در مدل افزایش داد.

این اطلاعات معمولا به‌صورت متن‌هایی داخل فایل‌های بی‌ساختار (Unstructured) مثل فایل‌های PDF و HTML و … قرار دارند. قبل از هر چیز، این فایل‌ها باید جمع‌آوری، ذخیره و به‌روزرسانی شوند. این فایل‌ها را می‌توان روی سامانه‌های فایل (مثلا دیسک سخت یا Google Drive یا …) ذخیره کرد. البته در یک پلتفرم داده‌ای مقیاس‌پذیر، این فایل‌ها معمولا روی Object Storage هایی مانند MINIO یا Amazon S3 ذخیره می‌شوند.

در مرحله‌ی بعد، این اطلاعات باید ETL شوند. یعنی اطلاعات متنی از داخل فایل‌ها استخراج (Extract) شده، به شکل مطلوب تبدیل (Transform) شده (مثلا تگ‌ها و اموجی‌ها حذف شده، متن‌های طولانی، خلاصه و پارتیشن شده و به‌صورت استاندارد درآمده) و در نهایت در جای مناسبی (معمولا یک Vector Database) ذخیره (Load) می‌شوند. برای ETL کردن داده‌ها می‌توان از ابزارهایی مثل https://unstructured.io/platform استفاده کرد.

پایگاه‌های داده‌ی برداری (Vector Databases)، اطلاعات متنی و بردار Embeddig متناظر با آن‌ها را به‌شکلی ذخیره می‌کنند که متن‌هایی که بردار تعبیه‌ی مشابه به هم دارند، به‌سرعت قابل بازیابی (retrieval) باشند. از Google ScaNN یا Meta FAISS یا ابزارهای پیش‌رفته‌تری مانند Weaviate و Pinecone می‌توان به‌عنوان پایگاه داده‌ی برداری استفاده کرد.

برای محاسبه‌ی بردار تعبیه‌ی اطلاعات متنی می‌توان از مدل‌های Embedding آماده و رایگان مثل BAAI/bge-base-en-v1.5 و یا مدل‌های غیررایگان مثل OpenAI Text Embedding استفاده کرد.

هر زمان که کاربر، پرسشی را از چت‌بات می‌پرسد، آن پرسش را از مدل Embedding رد کرده و بردار تعبیه متناظر با آن را پیدا می‌کنیم، سپس به‌کمک این بردار تعبیه، تعداد مشخص و محدودی (مثلا ۵ عدد) از اسناد مشابه و مرتبط از پایگاه داده‌ی برداری، بازیابی (retrieve) شده و در قالب یک پرامپتِ مهندسی‌شده، قبل از پرسش، به مدل زبانی داده می‌شوند. مثلا:


<|start_header_id|>user<|end_header_id|>
You are an assistant for answering questions about IPM.
You are given the extracted parts of a long document and a question. Provide a conversational answer.
If you don't know the answer, just say "I do not know." Don't make up an answer.
Question: {question}
Context: {context}<|eot_id|><|start_header_id|>assistant<|end_header_id|>


مدل زبانی، بسته به نیاز می‌تواند هر مدلی باشد. از مدل‌های اوپن-سورس مثل Meta Llama 3 و Google Gemma و Microsoft Phi-3 و Snowflake Arctic تا مدل‌های تجاری مانند OpenAI GPT-4 …
البته پرامپتی که در بالا آمده مربوط به مدل Meta-Llama-3-8B-Instruct است. بیش‌تر مدل‌های اوپن-سورس روی پلتفرم HuggingFace موجود‌اند و می‌توان به‌سادگی و به‌کمک پکیج Transformers آن‌ها را مورد استفاده قرار داد.

برای اتصال همه‌ی این بخش‌ها به هم، می‌توان از فریم‌ورک‌های مربوط به LLM ها مانند LangChain و یا Llama Index بهره برد.


لینک زیر یک Jupyter Notebook آموزشی است که همه‌ی موارد گفته‌شده در بالا را در عمل و به‌سادگی نشان می‌دهد. اطلاعات متنی موجود در یک فایل PDF به‌کمک ابزار unstructured.io استخراج شده و براساس عنوان‌ها، پارتیشن می‌شوند. سپس این اطلاعات توسط مدل BAAI/bge-base-en-v1.5 به بردار تعبیه تبدیل شده و در Meta FAISS برای بازیابی در آینده، ذخیره می‌شوند. سپس به‌کمک فریم‌ورک LangChain یک پایپلاین RAG طراحی شده و اطلاعات بازیابی‌شده، به مدل زبانی Meta-Llama-3-8B-Instruct که روی HuggingFace قرار دارد، داده‌شده و پاسخ مطلوب تولید شده‌ست.
https://colab.research.google.com/drive/1BJYYyrPVe0_9EGyXqeNyzmVZDrCRZwsg?usp=sharing#scrollTo=zKG6n2JpMtu3
کتابخونه جدید پایتورچ به نام torchtune برای فاین‌تیون کردن LLM ها

با #torchtune میتونین #LLM ها رو فاین تیون کنید: لینک

توی لینک زیر، درمورد Llama3 گفته که شامل بخش‌های معرفی مدل، دسترسی به مدل، فایل‌تیون کردن با تورچ‌تیون، ارزیابی کردن مدل فایل‌تیون‌شدن، جنریت متن، جنریت سریع‌تر با کوانتیزیشن هست:
لینک
#fine_tuning
@silicon_brain | از هوش مصنوعی عقب نمانید
Forwarded from School of AI
واچکانش دانش (Knowledge Distillation) در یادگیری ماشین چیست و چه کاربردی دارد؟

در شرایطی که محدودیت در توان پردازشی داریم (مثلا هنگام توسعه‌ی یک اپلیکیشن موبایل)، دانش موجود در یک مدل یادگیری ماشینِ نسبتا بزرگ، پیچیده و کند (Base Model) را به‌صورت چکیده به یک مدل بسیار ساده‌تر، کوچک‌تر و سریع‌تر (Target Model) منتقل می‌کنیم به‌نحوی که عمل‌کردی مشابه با مدل اصلی را با هزینه‌ی پردازشی بسیار پایین‌تر داشته باشد. به این کار، واچکانش دانش گفته می‌شود.

مثلا فرض کنید در حال توسعه‌ی یک مدل تشخیص شیء (Object Detection) برای پیداکردن ره‌گذرهای پیاده و همچنین خودرو‌های موجود در تصویر یک خیابان هستید. قدیم‌تر، برای انجام این تسک، نیاز به آموزش یک مدل Object Detection برروی یک مجموعه‌داده‌ی برچسب‌خورده داشتیم. امروز اما به‌طورمعمول، از مدل‌های بنیادین (Foundation Models) ازپیش‌آموزش‌دیده استفاده می‌شود که به‌صورت Zero-shot (بدون مشاهده‌ی داده‌ی آموزشی جدید) قابل بهره‌برداری‌اند. مثلا مدل Groundig DINO یا مدل YOLO-World (که به آن‌ها مدل‌های Open Vocabulary Detection هم گفته می‌شود) یک پرامپت متنی از شما دریافت کرده و شیء(های) متناظر با آن را در تصویر شناسایی می‌کند. مثلا کافی‌ست واژه‌هایی هم‌چون vehicle یا sedan car یا bike یا human یا … را به‌عنوان متن ورودی به آن بدهیم و مدل اشیای مورد نظر را تشخیص می‌دهد.
مشکل این‌جاست که مدل‌های Open Vocabulary Detection، دانش نهفته‌ی زیادی در مورد اشیای مختلف (مثلا اسب و هواپیما و …) دارند که در مسئله‌ی ما بی‌اهمیت‌اند. بنابراین، می‌توانیم با ارائه‌ی پرامپت مناسب به مدل Grounding DINO یک مجموعه تصویر را به‌صورت خودکار برچسب زده و از این مجموعه‌داده‌ی حاصل برای آموزش یک مدل شناسایی شیء ساده‌تر مانند YOLO-NAS یا YOLOv8 استفاده کنیم. در این حالت، بخش مور نیاز ما از دانش موجود در Grounding DINO به‌صورت چکیده به مدل YOLO-NAS منتقل (واچکانی) می‌شود و می‌توانیم ازین مدل ساده‌تر در پروژه استفاده کنیم.

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


pip install autodistill autodistill-grounding-dino autodistill-yolonas supervision



from autodistill_grounding_dino import GroundingDINO
from autodistill.detection import CaptionOntology
from autodistill_yolonas import YOLONAS


PROMPT = “any vehicle”
CLASS = “vehicle”

IMAGES_DIR_PATH = “path/to/images/dir”
DATASET_PATH = ”path/to/store/dataset”

base_model = GroundingDINO(ontology=CaptionOntology({“PROMPT: CLASS}))
target_model = YOLONAS("yolo_nas_s.pt")

base_model.label(input_folder=IMAGES_DIR_PATH, output_folder=DATASET_PATH")
target_model.train(DATASET_PATH, epochs=20)
pred = target_model.predict(DATASET_PATH+”/train/images/image.jpg", confidence=0.5)
Forwarded from School of AI
یکی دیگه از VLM ها که به‌تازگی توسط HuggingFace معرفی شده، Idefics2 است.

این مدل نیز مانند PaliGemma هشت میلیارد پارامتر دارد.

قابلیت دریافت دنباله‌ای از تصاویر (مثلا تکه‌ای از یک ویدئو) را دارد.

تصاویر با رزولوشن و aspect ratio خودشان پردازش می‌شوند.

قابلیت OCR بسیار خوبی دارد.

تحت مجوز Apache 2.0 منتشر شده و استفاده از آن برای هر منظوری بلامانع‌ست.


بلاگ‌پست معرفی:
https://huggingface.co/blog/idefics2

مقاله:
https://arxiv.org/pdf/2405.02246

مستندات:
https://huggingface.co/docs/transformers/main/en/model_doc/idefics2

فاین‌تیون کردن برای استخراج اطلاعات از قبض:
https://github.com/NielsRogge/Transformers-Tutorials/blob/master/Idefics2/Fine_tune_Idefics2_for_JSON_extraction_use_cases_(PyTorch_Lightning).ipynb
Forwarded from School of AI
شاید شنیده باشید که در هنگام آموزش شبکه‌های عصبی، وقتی اندازه‌ی batch ها را x برابر می‌کنید، به‌تر‌ست نرخ آموزش را نیز x برابر (اگر الگوریتم آموزش SGD است) و یا x√ برابر (اگر الگوریتم آموزش Adam است) کنید.

مثلا در LLM ها که بیش‌تر از الگوریتم آموزشی Adam استفاده می‌شود، اندازه‌ی batch ها را تا حدی که GPU شما خطای Out_Of_Memory نمی‌دهد (به صورت توانی از ۲) افزایش دهید. هر بار که اندازه batch را ۲ برابر می‌کنید، نرخ آموزش را ۱/۴ برابر کنید.

این مقاله‌ی جالب از دانشگاه پرینستون، به کمک معادلات دیفرانسیل تصادفی، الگوی کارایی برای تغییر هایپرپارامترها (مثل learning rate) با افزایش batch size ارائه می‌دهد.

https://www.cs.princeton.edu/~smalladi/blog/2024/01/22/SDEs-ScalingRules/

پی‌نوشت:
معمولا در عمل، نرخ آموزش هرچقدر هم که باشد، در طی epoch ها، ابتدا از 0.1 نرخ آموزش شروع کرده و در ده درصد ابتدایی مسیر آموزش، این نرخ را به‌صورت خطی زیاد کرده تا وقتی ده درصد epoch ها طی شد، به نرخ اصلی رسیده باشیم. از آن‌جا به بعد (۹۰ درصد باقی epoch ها) نرخ آموزش به‌صورت کسینوسی کم می‌شود.
مدل Qwen2 منتشر شد، قبلا راجب مدل اولش گفتم و واقعاً عملکرد خوبی داشت

اما چندتا نکته قابل توجه داره این مدل:
1- عملکرد بهتر از Llama3
2- سایز بزرگتر برای Context-length
3- انتشار مدل در ۵ سایز از 0.5B تا 72B پارامتر
4- و البته از همه مهمتر پشتیبانی از 29 زبان

اما چیزی که بسیار توجه جلب می‌کنه؛ امتیازش روی تست
MMLU-Pro
هست که :
ChatGpt4o : 72.2
Claude 3 Opus : 68.4
Qwen2 : 64.4
Llama3 : 56.2



Blog Post

مدل ۷۲ میلیارد پارامتری دمو هم داره در حال حاضر.


اضافه کنم :
فراموش نکنید Phi3 فقط زبان انگلیسی رو پشتیبانی می‌کنه.
برای همین توی این لیست راجبش چیزی نگفتم.
Forwarded from DLeX: AI Python (NaviD DariYa)
Forwarded from School of AI (Hamidreza Hosseinkhani)
⚠️⚠️ توجه: مطمئنا این پست همون چیزیه که خیلی از عزیزان دنبالش‌اند ⚠️⚠️

هوش مصنوعی خیلی سریع داره رشد می‌کنه جوری که:
خیلی‌ها نمی‌دونن از کجا شروع کنن و در کدوم مسیر ادامه بدن!
نمی‌دونن کدوم کورس/کتاب قدیمیه و دیگه به درد نمی‌خوره و کدوم رو باید ببینن!
نمی‌دونن کدوم مقاله مهمه که بخونن و کدوم مقاله دیگه به‌روز نیست!

حالا Ilya Sutskever که یکی از به‌ترین و پرکارترین پژوهش‌گرهای هوش مصنوعی‌ست، یک لیست ۲۷تایی از کورس‌ها، کتاب‌ها، پست‌ها و مقاله‌های مهم آماده کرده که به اعتقاد ایشان (که از ستون‌های AI اند) مسلط‌شدن به این ۲۷ مورد، باعث می‌شه شما به ۹۰ درصد چیزهایی که در AI امروز مهم‌اند، مسلط شوید.

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

https://arc.net/folder/D0472A20-9C20-4D3F-B145-D2865C0A9FEE
Forwarded from Deep Time
یک نفر در Stackoverflow سوال کرده بود "چطور میشه گپ بین دقت داده train و test رو در مدل‌های Machine Learning حل کرد"؟ سوال برای یک مسئله سری زمانی بود. اول با خودم گفتم آقا خسته نباشی ملت صبح و شب در تلاش برای همین کار هستن تا هوش مصنوعی بهتر یاد بگیره. اما خوب تصمیم گرفتم به سوالش جواب بدم و حتی vote منفی سوالش رو که بقیه داده بودن خنثی کردم. روند توسعه مدل Machine Learning خیلی اوقات خوب انجام نمیشه و موارد پایه‌ای دیتاساینس و ماشین لرن رعایت نمیشه. مواردی مثل مانیتور کردن bias variance، شروع با مدل ساده و ارتقا با توجه به بایاس واریانس، experiment tracking و بعضی روش‌های Advanced رو در 8 مورد نوشتم.
Link
پ.ن: تمامی LLM ها و چت جی پی تی از منابعی مثل Stackoverflow کار و ریزه کاری کدزنی رو یاد گرفتن و باهوش شدن. پس مشارکت در Stackoverflow فراموش نشه.

@deeptimeai
اگر شما هم مثل ما توی پروداکشن مشکل context دارید (با مدل‌های بزرگ که امکان ترین و ... نیست)
حتما به این مقاله نگاه کنید

Arxiv Link

16K —> 256K

ادعای بزرگ و جذابی هست
Forwarded from مرجع دیتاست فارسی (محمد)
دیتاست مربوط به instructهای فارسی مناسب برای فاین تیون کردن مدل های زبانی

📱 GitHub Repo
Forwarded from مرجع دیتاست فارسی (محمد)
اگر به حوزه پردازش زبان طبیعی (NLP) و مدل‌های زبانی هوش مصنوعی علاقه‌مندید، این مجموعه داده برای شماست! این پروژه با هدف ارزیابی عملکرد ChatGPT برای زبان فارسی ایجاد شده است. شامل مجموعه‌ای متنوع از سوالات و پاسخ‌ها به زبان فارسی می‌باشد که می‌تواند در پروژه‌های مرتبط با توسعه مدل‌های AI و NLP بسیار کاربردی باشد. می‌توانید از این دیتاست برای ارزیابی و بهبود مدل‌های زبان فارسی در اپلیکیشن‌های چت‌بوت، ترجمه ماشینی و سایر کاربردهای مشابه استفاده کنید.

📱 GitHub Repo