🧑‍💻Cyber.vision🧑‍💻
465 subscribers
169 photos
12 videos
20 files
144 links
Python tips and tricks
The Good, Bad and the Ugly
متخصص امنیت شبکه های کنترل صنعتی
👨‍💻این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی این چند سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار)
https://t.iss.one/Hacker0x01
Download Telegram
🧑‍💻Cyber.vision🧑‍💻
یک نفر در Stackoverflow سوال کرده بود "چطور میشه گپ بین دقت داده train و test رو در مدل‌های Machine Learning حل کرد"؟ سوال برای یک مسئله سری زمانی بود. اول با خودم گفتم آقا خسته نباشی ملت صبح و شب در تلاش برای همین کار هستن تا هوش مصنوعی بهتر یاد بگیره. اما…
In theory, the gap between train and test sets' error can not be less than what is called Bayes error, which is sometimes equivalent to human-level intelligence/error in fields where human natural perception is high (such as NLP and Vision). However, in Time Series, it is difficult to predict how far we can minimize this gap. The following steps are what I suggest and they are all basically about using model's bias & variance in each experiment and then use some techniques to improve the model:

0. Use an experiment tracking tool: Start by organizing all your experiments using MLOps tools such as WandB and MLflow that let you log metadata (such as cross-validation results) and save models as artifacts. I prefer Weights&Biases which lets you do multiple experiments using Sweep and Grid Search or Bayesian Optimization to maximize a defined metric on your cross-validation for HPO. Note: Do not waste your time by overly tuning the models' parameters when doing HPO. It is wise to work on data centric approaches instead

1. Start with simple models: Avoid starting with irrelevant or overly complicated models. Begin with simple models and monitor their bias and variance. If you observe underfitting, you might want to use models that can capture non-linear relationships and work well with tabular time series data, such as Random Forest and XGBoost. Avoid jumping directly to complicated RNN models like LSTM, which were initially developed for NLP applications and have not performed well in time series competitions.

2. Address overfitting: Once you solve the underfitting problem, you may reach a model that can learn non-linear relationships in the training data. At this point, your model might exhibit high variance and overfitting on the training data. There are several ways to mitigate overfitting:

Add more training data or use data augmentation techniques. For example, a 2017 Kaggle winning solution for tabular data augmentation and representation learning used DAE. Regularization techniques: Apply L1 and L2 regularization (known as reg_lambda and reg_alpha in XGBoost) to penalize large weights and coefficients. Early stopping, Dropout, and Reduce Learning Rate on Plateau are other techniques commonly used for neural networks.

3. Use ensemble methods: Combine multiple models using techniques like soft voting.

4. Blending & stacking: Implement blending and stacking techniques to leverage the strengths of different models.

5. Advanced time series representations: Explore advanced methods such as signature kernels and wavelets to create better features and representations of your data.

6. Advanced tabular ML models: Look into new models like GRANDE, which combines the advantages of tree-based models and neural networks. Note that if you want to use models such as RF, XGB or GRANDE for time series problems you should do some shape transform first.

7. Improved time-series CV: You can use more advanced time-series Cross-Validation techniques like Embargo & Purge which usually used in quantitative finance.
🧑‍💻Cyber.vision🧑‍💻
In theory, the gap between train and test sets' error can not be less than what is called Bayes error, which is sometimes equivalent to human-level intelligence/error in fields where human natural perception is high (such as NLP and Vision). However, in Time…
از ابتدا انگلیسی نوشته شد و عوضش نکردم. سه مورد اول بیشترین اهمیت رو در روند توسعه یک مدل Machine Learning دارن. رایج ترین اشتباهات هم مربوط به انتخاب اولین مدل هست. در واقع مدل اول باید یک مدل ساده و مورد پذیرش در اون حوزه باشه و با مشاهده underfitting به مرور پیچیدگی اضافه میشه: مدل‌های دقیق‌تر یا پارامترهایی که پیچیدگی اضافه میکنن. مثلا اضافه کردن لایه در شبکه عصبی یا max_depth در tree-based models
مورد اول هم حتما به کارتون اضافه کنید. یادگیری mlflow یا wandb واقعا سادس اما مزیت بالایی برای سیستمی که میسازید داره.
بالا اشاره نکردم اما کالیبره کردن مدل‌ها با با روش‌های Uncertainty Quantification خیلی کمک کنندس. برای مثال Conformal Prediction در Classification کمک میکنه False Positive کمتری داشته باشید. در این مورد بیشتر مینویسم.
پندی که میتونیم از این داستان بگیریم چیه؟
تو هر شاخه ای که میخایم وارد بشیم اول از همه به زیرساخت اون موضوع کامل مسلط بشیم
مثال من میخام پنتستر شبکه بشم از همون اول شروع نکنم به سنس دیدن
اول از همه باید به عنوان یه مهندس شبکه فعالیت کنم و یاد بگیرم بعد که مسلط شدم حالا میتونم برم تو مباحث تست نفوذش
🔥2
اولین مورد توی عکس رو ببینید و با ردیف 50 مقایسه کنید.

Gemma 2 2B > ChatGpt 3.5 Turbo

این مدل به تازگی منتشر شد، دقت کنید اطراف این مدل نتایج بهتری از مدل‌های ۷، ۱۴ و حتی ۳۲ میلیاردی چندماه قبل داره. اهمیت دیتا

پ.ن : خودم هنوز باورم نمی‌شه
با این وضعیت فکر کنید مدل ۹ میلیاردی و ۲۷ میلیاردی آپدیت جدید بگیره

مورد دوم :
۱۳ روز دیگه معرفی Pixel 9 Pro هست و چون این مدل برای On-device هم مناسب سازی شده
ممکن هست این مدل، مدل اصلی روی گوشی‌های Google باشه


یک سری آدم نشستن؛ همین حالا مدل رو روی linux tablet ها اجرا کردن؛ با توجه به اینکه فعلا فقط CPU هست تقریبا حدود ۸-۱۲ توکن بر ثانیه خروجی میده.
زیر ۲۸ توکن بر ثانیه حوصله سربر میشه برای یوزر

توی تست های خودمم روی GPU زیر ۲ ثانیه مدل load میشه Q4 سرعتی هم که نیازی به توضیح نداره.
🔥1
به بهانه‌ی این مطلب چند تا نکته در مورد خوندن کد بگم:

۱- خوندن کد خوبه و هر کدی هم باشه کلا خوبه. مثل کتاب خوندن. از نظر من کد خوندن مثل رمان و کتاب خوندنه.

۲- با خوندن کد بیشتر و بهتر، کدهای بهتری هم خواهید نوشت. یادگیری دیزاین پترن و اصول کد تمیز خوبه ولی دیدن اینکه در عمل چه چیزی باعث خوب شدن کد می‌شه یه چیز دیگه‌ست و اگه کد بخونید از بقیه جلو می‌افتید.

۳- همونطور که وقتی الفبا رو یاد گرفتیم نمیشه انتظار داشت که آثار شکسپیر رو بخونیم، قاعدتا اگه اولین کدی که می‌خونیم کد لینوکس باشه، خیلی چیزاشو متوجه نمی‌شیم. می‌شه اول از چیز‌های ساده‌تر شروع کرد.

۴- یه سری پروژه‌ها (مثلا minix) به هدف اینکه سورس کد قابل فهمی داشته باشن نوشته می‌شن و یه سری دیگه به هدف پرفورمنس و کاربردی بودن و ... شروع کردن از اونایی که سورس کد مرتب تر و ساده‌تری دارن قطعا توصیه می‌شه. مخصوصا اگه ایده‌ی کلی از اون سیستمی که پیاده‌سازی می‌شه نداریم. مثلا اگه نمی‌دونیم سیستم‌عامل چطوری کار می‌کنه بهتره اول کتاب در موردش بخونیم. بعد یه کتاب یا منبعی که سورس‌کد رو توضیح داده بخونیم (یا همین مینیکس که سورس کد ساده و با کامنتی داره). و در نهایت می‌تونیم (شاید بتونیم) سورس کد یه سیستم‌عامل واقعی رو بخونیم.

۵- خوندن کد خیلی وقتا مثل کتاب نیست که از اول شروع کنیم تا آخر بریم، بلکه به شکل چرخیدن تو یه جنگل بزرگه. می‌چرخیم و جاهای جالبش رو نگاه می‌کنیم. مثلا همین که فایل cgroupش رو باز می‌کنیم. گاهی هم سعی می‌کنیم ساختارمندتر کار کنیم مثلا main رو باز می‌کنیم و از اونجا می‌ریم جلو. (البته اگه mainی در کار باشه!)

۶- (شاید نظر نامحبوب) خیلی وقتا نیازی نیست همه‌ی کد رو خونده باشیم یا حتی فهمیده باشیم تا بتونیم یه contributionی انجام بدیم. برای انجام یه تغییر کافیه بدونیم کلیت داستان چیه (مثلا main چطوری کار می‌کنه، قسمتی که کد من رو کال می‌کنه چطوریه و معماری و پوشه‌بندی کلی چطوریه) و تغییرمون رو در جای درستش اعمال کنیم. مثلا اگه می‌خوایم کوئری بهینه‌تری برای دیتابیس بنویسیم خیلی وقتا نیاز نیست که بدونیم تو dockerfile چه خبره یا مثلا تو http handler دقیقا چه اتفاقی می‌افته. یا در مثال لینوکسش، اگه می‌خوایم در مورد cgroup بیشتر بدونیم قاعدتا نیاز نیست در مورد درایورهای گرافیک چیز زیادی بدونیم. مخصوصا اگه معماری کد خوب باشه و الکی چیزا رو به هم متصل نکرده باشه.
👍1
🔴سلام وقت عزیزان بخیر
در تصاویر بالا تفاوت payload های stage و stageless رو مشاهده میکنید .

⚠️stage : چند مرحله ای
❗️در چند مرحله payload ارسال میشود . (stager , stage 1 , stage 2 , ...)
❗️حجم کمتری دارد .(70kb)

⚠️stageless : تک مرحله ای

در یک مرحله payload ارسال میشود
حجم بیشتری دارد (250kb)
🧠 آغاز ثبت‌نام رایگان مسابقات بین‌المللی هوش مصنوعی رایان (Rayan) | دانشگاه صنعتی شریف

🪙با بیش از ۳۵ هزار دلار جایزه نقدی
🎓چاپ دستاوردهای ۱۰ تیم برتر در کنفرانس‌‌ها/مجلات برتر بین‌المللی هوش مصنوعی
👥 امکان شرکت به صورت تیم‌های ۱ تا ۴ نفره
🗓شروع مسابقه از ۲۶ مهرماه ۱۴۰۳

💬موضوعات مورد بررسی اعتمادپذیری در یادگیری عمیق:
💬 Model Poisoning
💬 Compositional Generalization
💬 Zero-Shot Anomaly Detection

👀 مسابقات بین‌المللی هوش مصنوعی رایان با حمایت معاونت علمی ریاست‌جمهوری و موضوع Trustworthy AI، توسط دانشگاه صنعتی شریف برگزار می‌گردد. این مسابقه در ۳ مرحله (۲ مرحله مجازی و ۱ مرحله حضوری) از تاریخ ۲۶ مهر آغاز می‌شود.

⭐️ رایان جهت حمایت از تیم‌های برتر راه‌یافته به مرحله سوم، ضمن تأمین مالی بابت هزینه سفر و اسکان، دستاوردهای علمی تیم‌های برتر را در یکی از کنفرانس‌ها یا مجلات مطرح این حوزه با ذکر نام اعضای تیم در مقاله‌ی مربوطه، چاپ و منتشر خواهد کرد. این شرکت‌کنندگان برای دستیابی به جایزه ۳۵ هزار دلاری برای تیم‌های برتر، در فاز سوم به رقابت می‌پردازند.
با سلام و شب بخیر ❤️دوستانی که به دلیل بالا بودن قیمت های دوره های در سایت های آموزشی توانایی زیادی برای پرداخت خرید دوره رو ندارند بنده تصمیم گرفتم که یه بستر برای دوستانی ایجاد کنم به محتوای به روز شده و کامل دسترسی پیدا کنند و از فرصتی که دارند استفاده درست کنند در همین راستا بنده تصمیم گرفتم یک چنل جداگانه آماده کنم برای خرید دوره ها به صورت اشتراکی توضیحات کامل به این طور می باشد که دور های که خریداری می شود فقط در اختیار دوستانی قرار میگیرد که در خرید هزینه پرداخت می‌کنند و برای جلوگیری از درز کردن محتویات دوره که فردا روزی خدا نکرده کسی بگه این دوره ها کرک شده یا پاب شده بنده هر دوره را در یک چنل جداگانه قرار داده و قابلیت فوروارد هم می بندم چیزی به اسم کرک کردن و پاب کردن اصلا وجود ندارند ما اینجا قصد سواستفاده نداریم فقط داریم بستری رو فراهم می‌کنیم که به دوستانی که توانایی زیادی برای پرداخت هزینه دوره ندارند ایجاد کنیم که به هدف هاشون برسن❤️🥰
🧑‍💻Cyber.vision🧑‍💻 pinned «https://t.iss.one/HacktasticLearningcyber لینک چنل رو براتون قرار میدم و مورد آخر که لازم به ذکر هست ما در چنل نظر سنجی قرار می دهیم و طبق نیاز فراگیر ها دوره رو قرار میدهیم 🥰»
بسیاری از افرادی که در حوزه‌های علوم و مهندسی (که خارج از هسته اصلی هوش مصنوعی هستند) فعالیت می‌کنند وقتی از عبارات «هوش مصنوعی» یا «روش‌های مبتنی بر هوش مصنوعی» استفاده می‌کنند منظور اصلی‌شان پردازش سیگنال است، نه هوش مصنوعی!

حالا فکر کنید چرا باید از نیمه‌ی شب گذشته، به این موضوع فکر کنم!
🌐 برنامه‌نویسی سطح بالا و سطح پایین 🌐:

برنامه‌نویسی سطح بالا (High-level programming)

مثل زبان‌هایی که ما معمولاً می‌نویسیم و می‌خونیم (مثل Python، Java و C++) به انسان‌ها نزدیک‌تر هستند و با جملات و عبارات قابل فهمی نوشته می‌شن. این زبان‌ها خیلی از جزییات سخت‌افزاری مثل مدیریت حافظه یا کار با CPU رو از کاربر پنهان می‌کنن و همین باعث می‌شه که برنامه‌نویسی باهاشون ساده‌تر باشه.
مثال:
print("Hello, World!")

همین یک خط کد، به سادگی پیام "Hello, World!" رو چاپ می‌کنه.

برنامه‌نویسی سطح پایین (Low-level programming)

بیشتر به زبانی نزدیکه که کامپیوتر‌ها متوجه می‌شن؛ مثل اسمبلی (Assembly) یا حتی زبان ماشین (Machine Language). توی این زبان‌ها باید دقیقاً مشخص کنیم که چی داره توی CPU و حافظه اتفاق می‌افته و این کدها معمولاً بسیار پیچیده‌تر و دشوارترند.
مثال (Assembly):

MOV AH, 09
MOV DX, OFFSET message
INT 21H

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

حالا برنامه‌نویسی پویا چیه؟ 🤔

برنامه‌نویسی پویا (Dynamic Programming Language) یک نوع از زبان‌های برنامه‌نویسی سطح بالاست که انعطاف‌پذیرتره و خیلی از تصمیمات و رفتارها رو در زمان اجرای برنامه می‌گیره، نه در زمان کامپایل. این یعنی شما می‌تونید در طول اجرای برنامه، ساختارهای داده‌ها یا حتی خود کد رو تغییر بدید!

زبان‌های پویایی مثل Python یا JavaScript به برنامه‌نویس اجازه می‌دن تا بدون نیاز به مشخص کردن نوع داده‌ها از قبل (مثل int یا string)، کد بنویسن. این باعث می‌شه که نوشتن و تغییر کد سریع‌تر و راحت‌تر بشه.
یک مثال از برنامه‌نویسی پویا:

این کد به طور خودکار نوع متغیرها رو تشخیص می‌ده و به کاربر اجازه می‌ده تا در حین اجرای برنامه با نوع‌های مختلف کار کنه:
x = 10
print(x)

x = "Hello"
print(x)
همون‌طور که می‌بینید، متغیر x اول یک عدد بود و بعد به یک رشته تبدیل شد، بدون اینکه لازم باشه ما نوعش رو به طور صریح تغییر بدیم. این یکی از ویژگی‌های جالب زبان‌های پویاست! 🎯

منابع 📚:

Wikipedia: Dynamic Programming Language
GeeksforGeeks: High Level vs Low Level Programming Languages
RealPython: Python Type System

#DynamicProgramming
#ProgrammingLanguages
#HighLevelLanguages
#LowLevelLanguages
#PythonCoding
#JavaScriptProgramming
#LearnToCode
#SoftwareDevelopment
پیش نیازها:
انگیزه داشته باشید:
انگیزه در یادگیری توسعه اکسپلویت امری کلیدی هستش. بجای اینکه خودتون رو مجبور به گذروندن موضوعاتی کنید که احساس خستگی میکنید، به علایق خودتون عمل کنید. اگه علاقه خودتون رو از دست دادید، موضوع رو عوض کنید و بعداً برگردید. حفظ انگیزه مهمتر از دنبال کردن ترتیب “درست” هستش. در طول این مسیر ناامید خواهید شد، ناامیدی بخش کلیدی توسعه اکسپلویت هستش و شما باید یاد بگیرید که اونرو بپذیرید و به پیش برید.
یادگیری زبان برنامه نویسی C :
یادگیری C به معنای تبدیل شدن به یک برنامه‌نویس C نیست، بلکه درک مدل حافظه CPU هستش. از اونجایی که باگهای خرابی حافظه در این سطح به حافظه حمله میکنن، C دقیقترین مدل ذهنی رو ارائه میده.
شما باید درک جامعی از حافظه نرم‌افزار، مناطق مختلف، تخصیص ها و اشاره گرها داشته باشید. پست Evan Miller با عنوان “You Can’t Dig Upwards” مدل ذهنی رو که از نوشتن C بدست میارید و در زبانهایی مانند پایتون بدست نمیارید رو توضیح میده.
کد ماشین/زبان اسمبلی x86-x64 :
بسیاری از منابع توصیه شده بر روی اکسپلویت کردن باینری‌های x86-x64 تمرکز دارن که در دسکتاپها و لپ‌تاپها رایج هستن. برخلاف برنامه‌نویسها، توسعه‌ دهندگان اکسپلویت با کد ماشین “خام” کار میکنن که فاقد اکثر امکانات موجود برای برنامه‌نویسهاست.
درک اونچه که خود CPU میبینه مهمه. برخی از موضوعات مهم برای درک، شامل موارد زیر هستن:
قراردادهای فراخوانی توابع و سیستم‌ کالها (Syscall)
تقسیم بندی حافظه (Memory segmentation)
ترجمه نوعهای سطح بالا به بایتهای خام (raw bytes) (در اسمبلی، همه چیز فقط بایت در حافظه یا رجیستر هستش)
برای یادگیری این موارد میتونید از دوره ی رایگان مهندسی معکوس نرم افزار (Software Reverse Engineering) استفاده کنید که با محوریت درک کدهای اسمبی در حال انتشار هستش.

دانش یک زبان اسکریپت نویسی:
اکسپلویت کردن شامل تعامل با نرم‌افزارهای دیگه هستش که اغلب با استفاده از یک زبان اسکریپت‌نویسی انجام میشه. پایتون و کتابخونه PwnTools انتخابهای رایجی هستن، اما هر زبانی دیگه ای رو میتونید برای این کار انتخاب کنید.
دانش اولیه استفاده از لینوکس:
بیشتر منابع مبتنی بر لینوکس هستن، بنابراین باید با ترمینال لینوکس و ابزارهای خط فرمان رایج راحت باشید.
Pwn College – Fundamentals :
بخش Fundamentals ماژول‌هایی رو ارائه میده که بیشتر این موضوعات رو پوشش میدن و ارزش بررسی قبل از شروع رو دارن.
راه اندازی محیط:
منابعی که اینجا معرفی میشن، سعی شده مواردی باشن که به راحتی در دسترس باشن. مشکل اصلی نسخه ی قبلی رودمپ، این بود که راه اندازی یک محیط کاری سخت بود.
بیشتر منابعی که اینجا معرفی شدن رو میتونید با یک ویرایشگر متن برای یادداشتهای شخصی و یک مرورگر طی کنید. البته برای اجرای برخی از باینری ها باید دسترسی به لینوکس داشته باشید که برای این کار میتونید از یک ماشین مجازی استفاده کنید. البته یک بخش اختیاری هم وجود داره که هدفش بررسی توسعه ی اکسپلویت در معماری های دیگه هستش و بنابراین برای این بخش، نیاز به اجرای باینری در Qemu دارید.
در این آشفته‌بازار این روزهای مدل‌های زبانی بزرگ، و هیجانات غالب بر جامعه‌ی علمی و غیرعلمی و تاثیر شگرفش روی سهام شرکت‌های فراهم‌کننده‌ی زیرساخت‌های سخت‌افزاری، پرسش اصلی‌ای که به وجود میاد اینه که بعد از گذشت هفتاد سال از مطرح شدن «بازی تقلید» (معروف به تست تورینگ) برای سنجش «تفکر ماشینی» و هوش مصنوعی، آیا سرانجام می‌تونیم چت‌بات‌های مبتنی بر مدل‌های زبانی نظیر GPT رو برنده‌ی این بازی و فاتح جایگاهی در نظر بگیریم که تورینگ در دهه‌ی پنجاه میلادی پیش‌بینی کرده بود؟ پرسشی که در ابتدا ممکنه ساده به نظر بیاد، به خصوص که ادعای «پاس شدن تست تورینگ» این روزها لقلقه‌‌ی زبان مدیران شرکت‌‌ها و بازوهای تبلیغاتیشونه، اما زمانی پیچیده می‌شه که متوجه می‌شیم در آزمایش‌های واقعی، درصد قابل‌توجهی از انسان‌ها هم در این تست مردود می‌شوند. مشکل کجاست؟

«آیا ماشین‌ها قادر به تفکر هستند؟»، سوالیه که آلن تورینگ در مقاله‌ی ۱۹۵۰ خودش مطرح می‌کنه، و تلاش می‌کنه تا با طرح بازی تقلید، معیاری برای سنجش تفکر ماشینی خلق کنه. بازی شامل یک پرسشگر، یک انسان و یک ماشینه. پرسشگر جدا از انسان و ماشین در یک اتاق جداگانه قرار گرفته و با هدف حذف فاکتورهای غیرمرتبط از جمله صدا و تصویر، ارتباط او با دو بازیکن دیگه، صرفا از طریق مکاتبه انجام می‌شه. هدف پرسشگر، تشخیص انسان از بین دو بازیکن دیگر، هدف انسان، کمک به این تشخیص و هدف ماشین، گمراهی پرسشگر است تا برنده‌ی این بازی باشه. تیمی از پژوهشگرهای دانشگاه کالیفرنیا در سن‌دیگو (UCSD)، اخیرا نسخه‌ای دو نفره از این بازی رو با پانصد شرکت‌کننده شبیه‌سازی کردند، و نتایج، خارج از انتظار بود.

اگر به تاریخچه‌ی چت‌بات‌ها علاقه‌مند باشید، احتمالا با Eliza آشنا هستید. تاریخچه‌ی این چت‌بات به دهه‌ی ۶۰ میلادی و دانشگاه MIT می‌رسه و در زمان خودش، پیشرو به شمار میومد (از اینجا امتحانش کنید). در آزمایش جدید، علاوه‌ بر GPT سه‌ونیم و چهار، نسخه‌ای از Eliza هم مورد استفاده قرار گرفته. بازی دو نفره رو به این صورت طراحی کردند که شرکت‌کننده‌‌ها در برابر یک انسان یا یکی از سه چت‌بات بالا قرار می‌گرفتند و باید ظرف مدت پنج دقیقه، تشخیص می‌دادند که با یک انسان دیگه و یا یک چت‌بات صحبت می‌کنند.

مطابق انتظار، Eliza و GPT-4 به ترتیب در ۲۲ و ۵۴ درصد بازی‌ها، برنده شدند. اگر با Eliza کار کرده باشید، می‌دونید که عدد ۲۲، درصد بالایی به حساب میاد؛ پدیده‌ای که تحت عنوان Eliza Effect شناخته می‌شه و بر اثرش، پرسشگرها برخلاف چیزی که می‌بینند و استدلال می‌کنند، رفتارهای انسان‌گونه رو به Eliza نسبت می‌دن. از سمت دیگه، بازیکن‌های انسانی که به جای چت‌بات‌ها قرار گرفته بودند، تنها در ۶۷ درصد موارد موفق به قانع کردن پرسشگرها شدند.

اقتصاددان‌ها در این مواقع از «علیت دوّار» صحبت می‌کنند، که در علم اقتصاد، به ارتباط علت و معلولی متقابل میان چند پدیده‌ گفته می‌شه. در این مورد هم برخوردهای شرکت‌کننده‌های آزمایش با چت‌بات‌ها، موجب شده بود که سطح انتظارها از عملکرد هوش مصنوعی به قدری بالا بیاد که در ۳۳ درصد موارد، انسان‌ها رو هم به اشتباه ربات تشخیص بدن. از طرف دیگه، پرسشگرها در تشخیص GPT-4 هم عملکردی در حد و اندازه‌ی پرتاب سکه داشتند (اگر فکر می‌کنید که می‌تونید عملکرد بهتری از شرکت‌کننده‌ها داشته باشید، تلاش کنید که از بین چهار عکس زیر، انسان رو تشخیص بدید؛ سه عکس مربوط به AI و یک عکس مربوط به بازیکن انسانیه. سبزها مکالمات پرسشگر و خاکستری‌ها جواب انسان‌/چت‌بات‌ها هستند).

با لحاظ این موارد، به نظر میاد که نیاز به بازنگری در تست تورینگ، بیشتر از هر زمان دیگه‌ای احساس می‌شه؛ و تا به امروز، پیشنهاداتی هم روی میز قرار گرفته. یکی از این‌ها، ایده‌ی یکی از اساتید روانشناسی دانشگاه پرینستونه. Philip Johnson-Laird اعتقاد داره که برای آزمایش مدل‌ها، باید اون‌ها رو در برابر آزمون‌های روانشناسی قرار بدیم، و مثل یک جلسه‌ی تراپی، شباهتش با رفتارهای انسان‌گونه رو بررسی کنیم؛ یک دیدگاه میان‌رشته‌ای که می‌تونه درهای جدیدی رو به سوی شناخت LLMها باز کنه.

از سمت دیگه، Terrence Sejnowski استاد علوم اعصاب UCSD هم در مقاله‌ی اخیرش، با مطالعه روی شیوه‌ی رفتاری و عملکرد مغزی انسان‌ها، نگاه کاملا متفاوتی رو مطرح می‌کنه: همون‌طور که در یک بازی تنیس، یک رقیب قدرمندتر، از شما بازیکن بهتری می‌سازه، LLMها هم صرفا بازتاب‌‌دهنده‌ی ضریب هوشی پرسشگر هستند. در حقیقت، هر بار که ما با اون‌ها صحبت می‌کنیم، این ما هستیم که در جایگاه پرسش‌شونده قرار گرفته‌ایم، پدیده‌ای که او ازش به عنوان «تست تورینگ وارونه» تعبیر می‌کنه. این دیدگاه، با نتایج آزمایش بالا هم‌خوانی داره و می‌تونه دلیلی باشه بر اینکه چرا اطلاق جایگاه پرسشگر به انسان‌ها در تست تورینگ، می‌تونه به چنین نتایج دور از ذهنی منجر بشه.
با توجه به اینکه خیلی از دوستان سیستم مناسبی ندارن و شوق یادگیری هم درونش وجود داره و مشکل با مجازی سازی های پرمصرف دارند من پیشنهادم به اونها وگرنت و هشی کورپ هست

برای راه‌اندازی یک محیط لینوکسی با استفاده از Vagrant و HashiCorp، و به حداقل رساندن مصرف RAM، مراحل زیر را دنبال کنید:

📚 مرحله اول: نصب Vagrant و VirtualBox

قبل از هر چیز، لازم است که Vagrant و VirtualBox را بر روی سیستم‌تان نصب کنید. این دو ابزار به شما این امکان را می‌دهند تا به سادگی ماشین‌های مجازی را مدیریت کنید.

📚 مرحله دوم: ایجاد یک پروژه جدید

یک دایرکتوری جدید برای پروژه خود بسازید:
mkdir my-vagrant-project
cd my-vagrant-project
📚 مرحله سوم: ایجاد فایل Vagrantfile

در این دایرکتوری، یک فایل جدید به نام Vagrantfile ایجاد کنید. این فایل تنظیمات مربوط به ماشین مجازی را مشخص می‌کند. برای استفاده از حداقل منابع، می‌توانید از یک تصویر دستوری Ubuntu یا Alpine استفاده کنید. برای مثال:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64" # یا "alpine/edge"
config.vm.network "forwarded_port", guest: 80, host: 8080

config.vm.provider "virtualbox" do |vb|
vb.memory = "512" # تنظیم مقدار رم
vb.cpus = 1 # تنظیم تعداد هسته‌ها
end

end


📚 مرحله چهارم: بارگذاری ماشین مجازی

حالا که تنظیمات را انجام داده‌اید، زمان آن رسیده که ماشین مجازی را بارگذاری کنید:
vagrant up
این دستور Vagrant را به کار می‌اندازد و ماشین مجازی را به حالت آماده به کار می‌آورد.

📚 مرحله پنجم: ورود به ماشین مجازی

پس از راه‌اندازی، می‌توانید با استفاده از دستور زیر به محیط ماشین مجازی وارد شوید:
vagrant ssh
📚 مرحله ششم: استفاده بهینه از منابع

برای کاهش بیشتر مصرف RAM و CPU، از نصب تنها برنامه‌هایی که به آنها نیاز دارید اطمینان حاصل کنید. همچنین می‌توانید تنظیمات ماشین مجازی را در Vagrantfile تغییر دهید تا به میزان نیاز خود بهینه‌سازی کنید.
قطعا به این فکر کردین که آیا میشه مدل های هوش مصنوعی داشته باشیم که در انحصار شرکت خاصی نباشه؟

بله، شرکت Prime Intellect AI بر اساس تمرکززدایی و استفاده از منابع محاسباتی مشترک برای آموزش مدل‌های هوش مصنوعی در مقیاس بزرگ بنا شده.

یعنی شما اگه GPU داری میتونی از طریق این پلتفرم کار پردازشی انجام بدی و پول دربیاری

با این حرکت فضای رقابتی جالبی درست شده و در جهت اینه که توان پردازشی رو از انحصار شرکت های بزرگ و همچنین کلاود هایی که تعرفه های بالایی دارن بگیره و به سمت یوزر های عادی بازار رقابتی و آزاد حرکت بکنه

قطعا متوجه شدین که این حرکت هم به سمت بازار آزاد اقتصادی هست (حال میکنی درک اقتصادیو😁 )و هم فضای داده ی آزاد و بدون انحصار(این یکی کارمه نمیخواد حال کنی)

تو پست بعدی در مورد یکی از پروژه های خفن این پلتفرم میگم