The Debugging Diaries
88 subscribers
63 photos
47 videos
33 files
73 links
گوشه‌ای برای یادداشت و ثبت مطالب مربوط به پایتون، یادگیری عمیق و هوش و هر چی که مربوط به تکنولوژی باشه.
加入频道
The Debugging Diaries
Photo
در ادامه پست قبل به پارامتر Temperature می رسیم.
🔍 دمای مدل (Temperature) چیست؟
دمای مدل یکی از پارامترهای مهم در مدل‌های زبانی بزرگ (LLMs) مثل GPT است که نقش تنظیم‌کننده خلاقیت و تصادفی بودن خروجی‌ها داره.
این پارامتر تعیین می‌کنه که مدل چقدر به احتمالات کلمات تولیدشده اعتماد کند و چقدر آزادانه گزینه‌های کم‌احتمال‌تر را انتخاب کند.
📊 چگونه کار می‌کند؟
دمای مدل، توزیع احتمالات کلمات خروجی را تغییر می‌دهد:
1️⃣ دمای پایین (T=0.2)
خروجی‌ها دقیق و قابل پیش‌بینی هستند.
مدل بیشتر به محتمل‌ترین کلمه اعتماد می‌کند.
مثال:
🔹 پرسش: داستانی درباره گربه‌ای سخنگو بنویس.
🔹 پاسخ: «گربه‌ای به نام ویسکرز که می‌توانست صحبت کند، به مردم شهر کمک می‌کرد و بسیار معروف شد.»
2️⃣ دمای متوسط (T=1.0)
ترکیبی از خلاقیت و دقت.
مدل توزیع اصلی احتمالات را حفظ می‌کند.
مثال:
🔹 «در دهکده‌ای آرام، گربه‌ای به نام ویسکرز که توانایی صحبت کردن داشت، داستان‌های جنگل را با مردم به اشتراک می‌گذاشت.»
3️⃣ دمای بالا (T=1.5)
خروجی خلاقانه و غیرمنتظره است، اما گاها ممکن هست بی ربط باشه.
مثال:
🔹 «ویسکرز، گربه‌ای کیهانی که در پرتوهای مهتاب می‌رقصید و قصه‌هایی از جهان‌های موازی می‌بافت.»

به صورت ریاضی T می تونه بین 0 تا بی نهایت باشه ولی غالبا در تنظیمات مدل بین 0 تا 2 دیده میشه
با استفاده از T طبق فرمول مشاهده شده در تصویر مقدار احتمال های کلمات پیش بینی شده تغییر میکنه
🎯 مثال عددی تأثیر دما بر احتمال کلمات
فرض کنید یک مدل زبان احتمالات زیر را برای سه کلمه خروجی محاسبه کرده است:
p(w1) =0.5 , p(w2) = 0.3 , p(w3) = 0.1

if (T = 0.5) -> p'(w1) = 0.7 , p'(w2) = 0.25 , p'(w3) = 0.03
if (T = 1.5) -> p'(w1) = 0.4 , p'(w2) = 0.25 , p'(w3) = 0.2


کاربرد دما
1️⃣ دمای پایین (مثلاً T=0.5)
کاربردها:
پاسخ به سوالات دقیق: مدل برای تولید پاسخ‌های مشخص و درست تمرکز می‌کند.
تولید کد برنامه‌نویسی: خروجی باید دقیق و بدون خطا باشد.
خلاصه‌سازی متون: برای خلاصه‌های واضح و کوتاه

2️⃣ دما متوسط (مثلا T=1)
کاربردها:
مکالمه انسانی: مدل با لحنی طبیعی و متنوع پاسخ می‌دهد.
تولید مقاله یا محتوای عمومی: متن هم روان است و هم کمی خلاقیت دارد.
پیشنهاد ایده‌ها: ایده‌هایی مناسب اما مرتبط ارائه می‌کند.

3️⃣ دمای بالا (مثلاً T=1.5)
کاربردها:
تولید داستان و شعر: مدل گزینه‌های غیرمعمول را انتخاب می‌کند تا متن خلاقانه‌تر شود.
#LLM
🔥1
تو هفته‌ای که درش هستیم اتفاقای زیادی در دنیای هوش مصنوعی افتاد که مهم ترینش یعنی 12day of openAi رو با هم مرور کنیم. این شرکت تصمیم گرفت در طی 12 روز که (4 روز ازش گذشته) هر روز یک آپدیت یا یک دمو جدید ارائه بده.
توی روز اول o1 رو معرفی کرد یعنی دیگه حالت preview نیست و به صورت کامل ارائه شده. 50 درصد سریع‌تر شده و الان به صورت multimodal در دسترس هست. خانواده o1 در واقع مدل‌هایی هست که به اصطلاح فک می‌کنن، تکنولوژی پشتش COT یا chain of tought که با استفاده از یه پرامپت خوب هم میشه تا حدی شبیه سازیش کرد ولی این مدل ها طبیعتا از روشی که با پرامپت بهش برسیم قوی تر هستند. متاسفانه این مدل ها به صورت رایگان در دسترس نیستند. openAi یک طرح اشتراکی دیگه هم اضافه کرده که ماهانه 200 دلار ناقابل هستش.(الان که دارم این متن رو می نویسم دلار 72.5 ناقابل هست که میشه ماهی 14.5 میلیون ) جزئیات این طرح توی تصاویر هست که خلاصه اش میشه استفاده نامحدود از مدل‌های موجود به اضافه دسترسی به o1 pro که برای حل مسائل سخت‌تر هست(سرعتش هم به تبع کمتر هستش). مطالب بیشتر راجع به O1 رو می تونین از این لینک بخونین
روز دوم یک شیوه fine-tune کردن معرفی کرد به نام reinforcement fine tuning که در این لینک می تونین معرفی‌اش رو ببنین.
روز سوم معرفی sora بود که مدل تولید فیلم هستش، این مدل هم برای پلن pro و plus عرضه میشه و در دامنه sora.com قرار داره. خیلی از کشورها هنوز پیشتبیانی نمیشه (برای ما که کلا ارائه نمیشه) و یه فیلم کوتاه استفاده از این مدل هست.
روز چهارم آپدیتی هست که قبلا برای کاربران Plus بود و خیلی بامزه است. اسمش canvas هست توی تصویر می تونین ببین از این به بعد خروجی که براتون تولید میکنه (ازقبیل کد و یا متن) قابل ادیت و انجام یسری تغییرات هستش تازه اگه کد باشه میتونین همونجا اجراش هم بکنین. حتما این رو یه امتحان بکنین ویژگی‌های بیشترش توی این لینک معرفی شده
خبرهایی دیگه هم بود که در ادامه بهش می‌پردازیم.
👍1
The Debugging Diaries
متاسفانه به دلیل مشغله های زیاد نشد که اخبار کامل کنم اما الان تیتر وار ده تاش رو ببنیم 1- معرفی LAMMA 3.3 70 b از متا 2- معرفی Advance Voice Mode 3- معرفی مدل Google Gemini 2.0 4 - معرفی مدل Phi-4 توسط ماکروسافت 5 - معرفی قابلیت پوشه بندی در چت های ChatGPT…
از بین اینا به نظرم، برای استفاده عمومی
شماره 5 و 9 عالین

یه توضیح کوتاه راجع به گیت‌هاب کوپایلت بدم
میشه ازش به عنوان دستیار کد نویسی با قابلیت بالا توی vs code استفاده‌ کرد.
برای این کار یه حساب گیت‌هاب میخواد و بروزترین نسخه vs code ( یا نصب extension GitHub copilot) و طبق معمول فیلترشکن😁
دو تا مدل Gpt4o و claude sonnet 3.5 رو پشتیبانی میکنه
و توی نسخه رایگان 2000 تا code compeltion در ماه داره هم‌چنین اطلاعات تکمیلی توی لینک پست قبل هست که می‌تونین مشاهده کنین.
برای استفاده از این محصول ماکروسافت به صورت best practice یه ویدیو کوتاه در یوتیوب رو پیشنهاد میدم.
youtube link
شماره 5 هم برای نظم دهی به چت‌ها در gpt هست که توی لینک پست قبل به طور کامل توضیحش داده شده.

شماره 10 و 2 برای شگفت زده شدن در آخر هفته تا حد خوبی ایده آل هست :)
#LLM
#ML
👍1
The Debugging Diaries
در ادامه پست قبل به پارامتر Temperature می رسیم. 🔍 دمای مدل (Temperature) چیست؟ دمای مدل یکی از پارامترهای مهم در مدل‌های زبانی بزرگ (LLMs) مثل GPT است که نقش تنظیم‌کننده خلاقیت و تصادفی بودن خروجی‌ها داره. این پارامتر تعیین می‌کنه که مدل چقدر به احتمالات…
در ادامه پارامترهای مدل‌های زبانی این دفعه Top-k رو بررسی می‌کنیم.
این پارامتر خیلی شبیه Top-p هست که توی پست‌های قبلی راجع بهش صحبت شد. توی فرآیند انتخاب کلمه بعدی تو مدل‌های زبانی به هر کلمه یه احتمال نسبت داده میشه، حالا برای نمونه برداری از کلمات یه رویکرد جمع احتمال‌ها بود (Top-p) یه رویکرد دیگه انتخاب kتای برتر بر اساس احتمال هست
یعنی اول براساس احتمال از بزرگ و کوچک مرتب میشه و سپس kتای برتر انتخاب و بعدش مراحل مثل Top-p طی میشه.
استفاده ازش باعث میشه دایر لغات استفاده شده در متن‌ وسیع‌تر بشه.
مقدار این پارامتر از 1 تا n هست(n به صورت عدد طبیعی)

کلا این پارامترها برای نمونه برداری برای تولید کلمه بعدی هستند و اگه مدل از اینا استفاده نکنه بهش میگن اصطلاحا حالت greedy که هر دفعه کلمه با بیشترین احتمال انتخاب میکنه
هر چند این حالت به طور کلی منطقی به نظر میاد اما ایراداتی هم به دنبال داره.

راستی یلداتون هم مبارک🥳
#LLM
#ML
Forwarded from Geek Alerts
شرکت OpenAI امشب در آخرین روز از «۱۲ روز با OpenAI» از مدل o3 رونمایی کردن. این مدل به حدی قوی بوده که در بنچمارک‌های ARC-AGI که یک بنچمارک برای وظایفی‌ که از یک AGI انتظار می‌ره هست، تونسته به 87.5% در حالت high-computingش با مصرف میلیون‌ها توکن برسه. درحالی که مدل o1 فقط به 13درصد رسیده بود. از طرفی هنوز در بعضی از تسک‌های این بنچمارک ضعف‌هایی رو نشون داده که نشون‌دهنده راه دراز برای رسیدن به یک AGI کامل هست اما بسیار پیشرفت چشمگیریه. این مدل به ریتینگ 2727 کدفرسز رسیده که این یعنی رتبه 175م این سایت، به طوری که از 99.9% انسان‌های فعلی بهتر می‌تونه سوالات این سایت رو حل کنه. نسخه mini این مدل در اواخر ماه بعد عرضه خواهد شد. البته شرکت‌ها و پژوهشگرانی که می‌تونن برای تست‌های safety به این مدل دسترسی داشته باشن.

tweet
hadi @geekalerts
دلم برای گوگل هم میسوزه
امروز Gemini 2.0 Flash Thinking رو معرفی کرد که مثلا اختلافش رو با openAi کم کنه :)))
داشتم چندتا فایل‌ رو از چندتا دایرکتوری میخوندم سه تا متد خیلی ساده و کار راه بنداز توی کار در این زمینه هست که البته بیشتر به str ربط داره تا خوندن فایل، ولی احتمالا بیشتر زمانی که میخواین نوع یک فایل چک کنین استفاده بشه
دو متد str.startswith و str.endswith که یک رشته می گیره و اگه با اون رشته عبارت مد نظر شما شروع یا ختم شده باشه True یا False بر میگردونه
filename = "example.png"
filename.endswith('png')
#out put is true

می تونین یه رنج خاصی هم بهش بدین که توی اون رنج این شرط چک کنه.
متد سوم هم os.path.splitext هست که اسم یه برنامه رو میگیره و اسم و پسوندش رو بر میگردونه
import os

# File name
filename = "example.png"

# Split the file name
root, ext = os.path.splitext(filename)
# output for root is example and for ext is .png

#python
یکی از متدهای لینوکسی برای بک آپ گرفتن و تجمیع فایل tar هست.tar به طور پیش فرض مثل zip الگوریتم فشرده سازی نیست ولی می تونه با یسری آرگومان ها فشرده سازی هم انجام میده که در فایل با حجم بالا عملکرد بهتری در فشرده سازی از zip داره. بریم سراغ دستورهای پرکاربردش
tar -cf archive.tar <dir or file>

به این صورت میتونین فایل ها تون رو tar کنین c به معنی create و f هم برای نوشتن اسم فایل خروجی هست.
tar -czf archive.tar.gz

اگه بخواین فشرده بکنه z یکی از آرگومان هاش برای gzip هست.
tar -tf archive.tar

مشاهده محتوایات داخل فایل tar
tar -xf archive.tar

استخراج محتوایات فایل tar شده
The Debugging Diaries
الان که دارم این متن رو می نویسم دلار 72.5 ناقابل
یک از شرکت هایی دیگری که تو زمینه مدل های زمانی بزرگ فعالیت میکنه DeepSeek هستش. امروز یه مدل 613 میلیاردی رو اوپن سورس کرد و یه تکنیکال ریپورت هم منتشر کرده. نکته جالبش هزینه ساخت این مدل هستش که حدود 5.5 میلیون دلار شده(بدون در نظر گرفتن آزمون خطاهاش) که الان دارم این متن رو می نویسم دلار 81 تومن ناقابل هست که میشه حدود 450 میلیارد تومن.
توی سایت chat.deepseek.com می تونین از این مدل به صورت رایگان استفاده کنین
یه نکته مثبتش اینکه فیلتر نیست و برای دوستانی چینی هستش، قابلیت سرچ وب، آپلود فایل و حتی قابلیت thinking هم داره.

#LLM
دو تا از built-in functionهای پایتون که اکثرا کمتر شناخته شده است تابع ()any و ()all هست.
اما این دو تابع چه کاربردی دارند؟
مثلا زمانی که بخوایم تمام عناصر لیست یا تاپل (یا به عبارت دقیق تر یک Iterable) دارای یک شرط خاص باشند چیکار می‌کنیم؟
اولین ایده اینکه روی تمام آیتم‌هاش for بزنیم و شرط رو چک کنیم، اما راه حل پایتونیش استفاده از این دو تابع بالا هست.
برای حالت and یعنی برقرار شرط روی تک تک اعضا از تابع ()all و برای برقراری شرط حداقل برای یک عضو از تابع ()any استفاده می کنیم.
مثال :
## check for exist item less than two
dummy_num = [1,2,3,4,5,6]
any( i<2 for i in dummy_num )
#output True

## Check if all items are greater than two
dummy_num = [1,2,3,4,5,6]
all( i<2 for i in dummy_num )
#output False

#python
بعد مدت‌ها غیبت این دفعه میخوام راجع به دستورات لینوکسی بگم که خیلی به درد تحلیلگران و مهندسان داده میخوره. طبیعتا این دستورات چون با کرنل لینوکس کار می‌کنن و خیلی بهینه هستن، احتمالا از معادلشون تو پایتون سریع‌تر خواهند بود. بیشتر دستوراتی هم که در ادامه ذکر میشه مربوط به کار با فایل‌هاست.
از مقدماتی و ساده شروع کنیم و کم کم بریم به سمت پیشرفته‌ترش
اولیش برای باز کردن و دیدن محتویات یک فایل هست.
cat <file>

اشکال این دستور اینکه برای فایل‌هایی که خیلی طولانی هستن خوب نیست، پس از یه دستور دیگه به نام less برای خوندن فایل‌هایی با خطوط بالا استفاده میشه.
less <file>

این دستور آپشن‌های خوبی هم داره
مثلا
less -N <file>  
# show line number

less +F <file>
#Continuously displays new lines as they are added to the file.

یه توضیح کوچیک راجع به F+ اینکه اگه دارین فایلی رو میخونین و همزمان هم چیزی در فایل نوشته میشه، با این سوییچ، نوشته‌های جدید رو هم نشون میده. توی حالت less با space میتونین یک صفحه یک صفحه جلو برین و با G+ میتونین از انتها فایل رو مشاهده کنین.

برای مشاهده ابتدا و انتهای یک فایل هم می تونین از دستور head و tail استفاده کنین.
head -n 10 <file>
# show first 10 line

tail -n 10 <file>
# show last 10 line

به جای n- میتونین از c- برای نمایش چندین بایت اول یا آخر فایل هم استفاده کرد. یکی از کاربردی‌ترین حالت‌های برای مشاهده لاگ، دستور tail -f هست که به صورت برخط مواردی که به فایل اضافه میشه رو نشون میده.
#linux
بریم سراغ ادامه پارامترهای مدل‌های زبانی بزرگ و Repetition Penalty یا جریمه تکرار

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

مدل‌های زبانی بخصوص هنگام تولید خروجی‌های طولانی‌تر، عبارات و جملات تکراری تولید می‌کنند، این رفتار به این دلیل به وجود میاد که مدل اغلب احتمالات بالاتری رو به کلمات یا عباراتی که قبلاً در متن ایجاد شدن اختصاص میده، علتش هم اینکه از نظر زمینه‌ای(context) به متن مرتبط‌تر هستند. بدون در نظر گرفتن جریمه، این مدل‌ها ممکن است روی این توکن‌های تکراری با احتمال بالا، یک loop ایجاد بشه.
برای رفع این مشکل، با استفاده از نرخ جریمه تکرار احتمال توکن‌هایی که قبلا تولید شده باشن رو کاهش می دیم. برای کاهش احتمال توکن‌ها میزان نرخ جریمه‌تکرار بیشتر از یک و اغلب کمتر مساوی 2 است.(از نظر ریاضی از یک تا بینهایت می تونه باشه)
مثال:

without repetition penalty
Prompt: "The sky is blue and the sea is ....
answer: The sky is blue and the sea is blue. The sky is blue and the sea is blue.

with repetition penalty(1.2 - 1.5)
Prompt: "The sky is blue and the sea is
answer:The sky is blue and the sea is calm and vast under the bright sun.


شیوه کارش هم خیلی سر راست هست،کلماتی که قبلا تولید شده، احتمال تولید مجددش شدنش رو تقسیم بر نرخ جریمه‌تکرار یا Repetition Penalty میکنه

#LLM
در ادامه دستورهای کاربردی لینوکس برای حوزه داده دستوری رو معرفی میکنم که تعداد بایت های فایل، تعداد کارکترها و خط‌های یک فایل رو میشماره و نشون میده (صد البته که تعداد خط‌ها فقط غالبا برا مهمه)

wc <file>
#output is line counts - char counts - bytes counts

wc -l <file>
# line counts

wc -c <file>
# byte counts

wc -m <file>
# char counts

دستور بعدی sort هست که خیلی مفصل و کاربردیه

sort <file>
# show sort result in output

sort -r <file>
# sort reverse

sort -n <file>
# Use for numeric sort

sort -R <file>
# shuffle file and random sort

sort <file> -o <new-file>
# save sort result in new file

با این همه اما این دستور هنوز کلی آپشن داره
توی پست لینوکسی بعدی سعی میکنم یه کاربرد حرفه‌ای از مجموعه دستوراتی که تا الان ذکر شد بهتون نشون بدم
#linux
به عنوان ۵امین پارامتر مدل‌های زبانی بریم سراغ یک پارامتر ساده این مدل‌ها یعنی max_token. به معنای بیشترین تعداد توکنی که مدل میتونه پردازش کنه. هر چقدر max_token بیشتر باشه مدل ram بیشتری برای اجرا نیاز داره و خروجی که میتونه تولید کنه(البته بسته به پرامپت و غیره) طولانی‌تر هست.
بحث اما یخورده اختلافی هست بعضیا فقط تعداد توکن خروجی مدل رو به عنوان حد max_token می دونن و برخی مجموع توکن ورودی و خروجی رو
چیزی که در داکیومنت OpenAi نوشته بود مجموع ورودی و خروجی رو شامل میشد.

The maximum number of tokens to generate shared between the prompt and completion. The exact limit varies by model. (One token is roughly 4 characters for standard English text)

#LLM
خب در ادامه لینوکس برای حوزه داده، بریم برای یک مثال عملی فرض کنین یک فایل به نام word.csv دارین دارای دو ستون (در ابتدایی ترین حالت) به شکل زیر
word,freq
python,10
linux,8
llm,15
java,20

و میخواین دو کلمه‌ای که بیشترین تکرار رو داشته در یک فایل ذخیره کنین. خب برای این کار باید این فایل رو بر اساس ستون freq مرتب کنین. طبیعتا به سراغ دستور sort میریم اما آیا میشه یک فایل بر اساس یک ستون با این دستور مرتب کرد؟
جوابش بله است
sort -t',' -k2,2 -rn file.csv

در اینجا با استفاده از t- جدا کننده (که در فایل های csv کاما هست) مشخص شده با k- ستون‌هایی که میخواین مرتب سازی بر اساسش انجام بشه رو مشخص میکنیم که در اینجا از ستون 2 تا ستون 2 (به معنای انتخاب ستون دوم) که freq هست در نظر گرفته میشه.
در ادامه هم rn- به معنای مرتب سازی نزولی و در نظر گرفتن ستون به صورت عدد می باشد.
اما این کار یه ایرادی داره و اونم اینکه سطر اول که freq و header هست هم به عنوان یه خط در نظر گرفته میشه و فایل خروجی‌مون سرستون نخواهد داشت برای رفع این مشکل دستور رو به صورت زیر بازنویسی میکنیم.
head -n 1 word.csv && tail -n +2 word.csv | sort -t',' -k2,2 -rn


دستور فوق در واقع به دو بخش قبل و بعد && تقسیم میشه
در قسمت اول با استفاده head -n 1 word.csv سطر اول که سرستون‌های فایل هست جدا میشه (بخش اول دستور) بخش دوم که tail -n +2 word.csv به معنای خط دوم تا انتهای فایل هست(نکته مهم اینکه 2+ و 2 در دستورهای tail و head معنای متفاوت داره). با استفاده از عملگر پایپ | (وظیفه این دستور ارسال خروجی یک دستور به دستور دیگر است)خروجی این دستور به دستور sort که نوشته شد ارسال میشه. در نهایت بخش اول و دوم با استفاده از && بهم متصل می شوند. برای این که دو کلمه که بیشترین تکرار داشته باشند رو پیدا کنیم و در یک فایل ذخیره کنیم، دستور نهایی به شکل زیر است.
(head -n 1 word.csv && tail -n +2 word.csv | sort -t',' -k2,2 -rn) | head -n 3 > output.txt

خروجی دستور رو با عملگر پایپ | مجددا به head ارسال میشه و برای اینکه دو کلمه برتر پیدا بشه (چون یکیش سر ستون هست) n- برابر با 3 قرار میگره با عملگر < هم خروجی دستورات رو میشه در یک فایل نوشت که اینجا در فایل output.txt نوشته شده است. در نهایت
cat output.txt
#output
word,freq
java,20
llm,15

به ظاهر شاید یخورده سخت باشه اما اگه با عملگرهای | و < که بهشون عملگرهای redirection و streaming میگن آشنا بوده باشین خیلی پیچیدگی دیگری نداره
در این مثال تقریبا از تمام مواردی که قبلا راجع بهشون صحبت کرده‌ بودیم استفاده کردیم.
#linux
👍2