Md Daily
#ام_دی_کورس خب ما تا اینجا با مفهوم little-endian و big-endian آشنا شدیم و میدونیم چطوری کار میکنند. حالا وقتشه یه نقشه ی راه از کاری که قراره بکنیم داشته باشیم. > پست های مربوط به الگوریتم رو میتونید از اینجا بخونید تسک های ما : ۱. یک پیام به کاربر…
#ام_دی_کورس
💡 اگر ما فایل تصویرمون را با یک Hex editor باز کنیم (اینجا من از xxd استفاده کردم یعنی :
👨🏻💻پس بریم که توی پست بعدی برنامش رو بنویسیم :)
⚠️پی نوشت :
هدف این آموزش آشنایی شما با نحوه ی کار با binary در گولنگ و مفاهیم است و برای تغییر کامل metadata ها و انجام تبدیل endian ها ابزار های زیادی مثل exiftool وجود داره . اگر فایل مهمی دارید این کد را روی اون فایل اجرا نکنید چون ممکنه باعث خرابی فایل بشه.
🆔 @MdDaily
💡 اگر ما فایل تصویرمون را با یک Hex editor باز کنیم (اینجا من از xxd استفاده کردم یعنی :
xxd filename.jpg ) . اگر exif byte order ما little-endian باشه با همچین چیزی مواجه هستیم :0000000: 4949 2a00 0800 0600 ffff 0000 0000 ffff II*.............و اگر big-endian باشه با این مقدار :
0000000: 4d4d 002a 0006 0008 ffff 0000 0000 ffff MM.*............برای تغییر byte order از little-endian به big-endian و برعکس یکی از کار هایی که میتونیم انجام بدیم اینکه II رو به MM و یا MM را به II تغییر بدیم.
👨🏻💻پس بریم که توی پست بعدی برنامش رو بنویسیم :)
⚠️پی نوشت :
هدف این آموزش آشنایی شما با نحوه ی کار با binary در گولنگ و مفاهیم است و برای تغییر کامل metadata ها و انجام تبدیل endian ها ابزار های زیادی مثل exiftool وجود داره . اگر فایل مهمی دارید این کد را روی اون فایل اجرا نکنید چون ممکنه باعث خرابی فایل بشه.
🆔 @MdDaily
❤1
Md Daily
#ام_دی_کورس 💡 اگر ما فایل تصویرمون را با یک Hex editor باز کنیم (اینجا من از xxd استفاده کردم یعنی : xxd filename.jpg ) . اگر exif byte order ما little-endian باشه با همچین چیزی مواجه هستیم : 0000000: 4949 2a00 0800 0600 ffff 0000 0000 ffff II*.............…
#ام_دی_کورس
کد کامل پروژه را به همراه فایل نمونه را توی ریپوی mdpe-ir/md-course گذاشتم.
خب ما اول نیاز داریم که از کاربر بخوایم آدرس عکسش رو بهمون بده :
خب حالا فقط کافیه ی که عکس جدید را ذخیره کنیم :
🆔 @MdDaily
کد کامل پروژه را به همراه فایل نمونه را توی ریپوی mdpe-ir/md-course گذاشتم.
خب ما اول نیاز داریم که از کاربر بخوایم آدرس عکسش رو بهمون بده :
fmt.Print("Enter the image path: ")
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
imagePath := scanner.Text()
در مرحله ی بعد ما باید فایل تصویر را تبدیل به آرایه ای از byte ها کنیم :data, err := ioutil.ReadFile(imagePath)حالا که بایت های تصویر را داریم . باید با استفاده از یه حلقه توی بایت ها دنبال این باشیم که هدر Exif از کجا شروع شده پس :
for i := 0; i < len(data); i++ {
if i >= 6 && string(data[i:i+5]) == "Exif\x00" {
data = convertExifByteOrder(data, i+6)
break
}
}
و اما میریم سراغ تابع convertExifByteOrder توی این تابع قراره نوع endian را تشخیص بدیم و اگه little endian بود تبدیل بشه به big endian و برعکس :func convertExifByteOrder(data []byte, offset int) []byte {
// Read exif byte order marker
order := binary.LittleEndian.Uint16(data[offset:])
// If little endian, convert to big endian
if order == 0x4949 {
binary.BigEndian.PutUint16(data[offset:], 0x4D4D)
}
// If big endian, convert to little endian
if order == 0x4D4D {
binary.LittleEndian.PutUint16(data[offset:], 0x4949)
}
return data
}
نکته: ما توی این تابع فقط hex کدی که مربوط به نوع endian هست را تغییر میدیم و بقیه ی متا دیتا ها را تغییر نمیدیم. چون که هر متا دیتایی مقدار خودش را داره و ما قرار نیست خیلی آموزش رو پیچیده کنیم خب حالا فقط کافیه ی که عکس جدید را ذخیره کنیم :
err = ioutil.WriteFile("output.jpg", data, 0644)
و تمام . هر سوالی که داشتید فقط کافیه توی ایشو های mdpe-ir/md-course بپرسید :) 🆔 @MdDaily
❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
#ام_دی_کورس
خب اینم از نتیجه ی کار
و پایان آموزش دانش پایه Exif Data و سعی در ادیت کردن Exif Byte Order عکس با Golang
🆔 @MdDaily
خب اینم از نتیجه ی کار
و پایان آموزش دانش پایه Exif Data و سعی در ادیت کردن Exif Byte Order عکس با Golang
🆔 @MdDaily
👍1
3 شهریور، تولد 32 سالگی لینوکس مبارک 🥳.
در سال 1991، دانشجوی فنلاندی، لینوس توروالدز، کار روی سیستم عامل آزاد برای کلونهای 386(486) AT را به عنوان سرگرمی آغاز کرد.
32 سال از آن زمان میگذرد و لینوکس به چیزی بزرگ و مورد استفاده
میلیونها کاربر در سراسر جهان تبدیل شده.
امروز، لینوکس در همهجا حضور دارد، از تلفنهای هوشمند تا اینترنت و ماهواره و هواپیما ها .
32 سال لینوکس در زندگیهای ما بوده و حتی اگر از آن استفاده نکنید، همیشه وجود داره :)
🆔 @MdDaily
در سال 1991، دانشجوی فنلاندی، لینوس توروالدز، کار روی سیستم عامل آزاد برای کلونهای 386(486) AT را به عنوان سرگرمی آغاز کرد.
32 سال از آن زمان میگذرد و لینوکس به چیزی بزرگ و مورد استفاده
میلیونها کاربر در سراسر جهان تبدیل شده.
امروز، لینوکس در همهجا حضور دارد، از تلفنهای هوشمند تا اینترنت و ماهواره و هواپیما ها .
32 سال لینوکس در زندگیهای ما بوده و حتی اگر از آن استفاده نکنید، همیشه وجود داره :)
🆔 @MdDaily
❤2🎉1
برای فان یه پروژه ی اسپاتیفای دانلودر با Pure Golang نوشتم.
سعی کردم تا جای ممکن کد ها ساده و تمیز باشند که اگر کسی خواست به توسعش کمک کنه یا گولنگ را تازه شروع کرده و دنبال یه پروژه ی تمرینیه بتونه ازش استفاده کنه
برنامه اینطوری کار میکنه که میاد از شما لینک اسپاتیفای رو میگیره و به اسپاتیفای وصل میشه (کلاینت سکرت و آیدی اسپاتیفای هم توی کد هارد کد شده اگه پروژه ی اسپاتیفای دیگه ای هم داشتید میتونید ازشون استفاده کنید 🙃 )
توی اسپاتیفای دنبال اهنگ میگرده بعد از اینکه پیداش کرد میره از یوتیوب دانلودش میکنه و در نهایت با ffmpeg صدا را از تصویر جدا میکنه و به شما دوتا فایل .mp4 و .mp3 تحویل میده (قبل از دانلود هم ازتون میپرسه که کدوم کیفیت رو دانلود کنه)
از بخش ریلیز میتونید نسخه ویندوز، مک و لینوکسش رو دانلود کنید و تحت ترمینال با دستور
لینک ریپو:
https://github.com/mdpe-ir/md_spotify_dl
🆔 @MdDaily
سعی کردم تا جای ممکن کد ها ساده و تمیز باشند که اگر کسی خواست به توسعش کمک کنه یا گولنگ را تازه شروع کرده و دنبال یه پروژه ی تمرینیه بتونه ازش استفاده کنه
برنامه اینطوری کار میکنه که میاد از شما لینک اسپاتیفای رو میگیره و به اسپاتیفای وصل میشه (کلاینت سکرت و آیدی اسپاتیفای هم توی کد هارد کد شده اگه پروژه ی اسپاتیفای دیگه ای هم داشتید میتونید ازشون استفاده کنید 🙃 )
توی اسپاتیفای دنبال اهنگ میگرده بعد از اینکه پیداش کرد میره از یوتیوب دانلودش میکنه و در نهایت با ffmpeg صدا را از تصویر جدا میکنه و به شما دوتا فایل .mp4 و .mp3 تحویل میده (قبل از دانلود هم ازتون میپرسه که کدوم کیفیت رو دانلود کنه)
از بخش ریلیز میتونید نسخه ویندوز، مک و لینوکسش رو دانلود کنید و تحت ترمینال با دستور
./md_spotify_dl [url]
ازش استفاده کنیدلینک ریپو:
https://github.com/mdpe-ir/md_spotify_dl
🆔 @MdDaily
👨💻2🆒1
سایت Datacamp به مدت یک هفته تمام دورههاشو رایگان کرده. میتونید شرکت کنید، یاد بگیرید و مدرک دوره رو هم بگیرید
https://www.datacamp.com/blog/data-camp-free-access-week-aug-2023
🆔 @MdDaily
https://www.datacamp.com/blog/data-camp-free-access-week-aug-2023
🆔 @MdDaily
🔥2💯1
Md Daily
موضوعات آموزش:
خب طبق نظر سنجی، از فردا تا جمعه توی ۳ روز متوالی قراره آموزش پروژه ی هوش مصنوعی پرسشو پاسخ بر اساس متن و مستندات با استفاده از مدل Llama 7b را داشته باشیم .
قراره توی این دوره از Google Colab استفاده کنیم.
اگه با google colab آشنایی ندارید یه سرویس گوگل برای توسعه دهنده هاس که به شما یه Jupyter notebook میده که میتونید کد پایتون و بش اسکریپت ران کنید. توی پلن رایگانش تا ۱۲ گیگ رم و ۱۰۰ گیگ فضا و تا ۱۲ گیگ gpu nvidia در اختیار دارید
توی دوره ی فردا این مباحث قراره پوشش داده بشن:
- آموزش راه اندازی Google colab
-دانلود مدل تمرین داده شده
-آموزش پرامپت نویسی
-طراحی یه صفحه ی ui تحت وب که ما بیایم متن ، مستندات یا ... خودمون رو یهش بدیم و بر اساس اون به سوالاتمون پاسخ داده باشه
-در پایان هم راجب کار ها و ایده هایی که میشه روش سوار کرد صحبت میکنیم
🆔 @MdDaily
قراره توی این دوره از Google Colab استفاده کنیم.
اگه با google colab آشنایی ندارید یه سرویس گوگل برای توسعه دهنده هاس که به شما یه Jupyter notebook میده که میتونید کد پایتون و بش اسکریپت ران کنید. توی پلن رایگانش تا ۱۲ گیگ رم و ۱۰۰ گیگ فضا و تا ۱۲ گیگ gpu nvidia در اختیار دارید
توی دوره ی فردا این مباحث قراره پوشش داده بشن:
- آموزش راه اندازی Google colab
-دانلود مدل تمرین داده شده
-آموزش پرامپت نویسی
-طراحی یه صفحه ی ui تحت وب که ما بیایم متن ، مستندات یا ... خودمون رو یهش بدیم و بر اساس اون به سوالاتمون پاسخ داده باشه
-در پایان هم راجب کار ها و ایده هایی که میشه روش سوار کرد صحبت میکنیم
🆔 @MdDaily
#ام_دی_کورس
آموزش پروژه ی هوش مصنوعی پرسشو پاسخ بر اساس متن و مستندات با استفاده از مدل Llama 7b و Longchain
خب ما دقیقا قرار چیکار کنیم؟
قراره محیط توسعه ی خودمون رو راه اندازی کنیم
دپندسی ها را نصب کنیم و مدلمون رو از huggingface دانلود کنیم
و شروع کنیم به کشف چیز های جدید و از همه مهم تر خندون باشیم :)
خب اول از همه بریم با مفاهیم آشنا بشیم که توی هر پست به صورت مجزا راجبشون توضیح میدم .
ادامه در پست بعدی...
🆔 @MdDaily
آموزش پروژه ی هوش مصنوعی پرسشو پاسخ بر اساس متن و مستندات با استفاده از مدل Llama 7b و Longchain
خب ما دقیقا قرار چیکار کنیم؟
قراره محیط توسعه ی خودمون رو راه اندازی کنیم
دپندسی ها را نصب کنیم و مدلمون رو از huggingface دانلود کنیم
و شروع کنیم به کشف چیز های جدید و از همه مهم تر خندون باشیم :)
خب اول از همه بریم با مفاهیم آشنا بشیم که توی هر پست به صورت مجزا راجبشون توضیح میدم .
ادامه در پست بعدی...
🆔 @MdDaily
Md Daily
#ام_دی_کورس آموزش پروژه ی هوش مصنوعی پرسشو پاسخ بر اساس متن و مستندات با استفاده از مدل Llama 7b و Longchain خب ما دقیقا قرار چیکار کنیم؟ قراره محیط توسعه ی خودمون رو راه اندازی کنیم دپندسی ها را نصب کنیم و مدلمون رو از huggingface دانلود کنیم و…
#ام_دی_کورس
هوش مصنوعی (Artificial Intelligence): سیستمهایی که میتونن کارایی مشابه انسان داشته باشن، مثل تشخیص چهره، ترجمه زبان، بازی شطرنج و غیره. 🧠🤖
- یادگیری ماشین (Machine Learning): شاخهای از هوش مصنوعی که به سیستمهای کامپیوتری امکان میدهد تا از دادهها یاد بگیرند و خودشون رو بهبود ببخشند، بدون اینکه نیاز به برنامهنویسی دقیق داشته باشند. 📊👩🎓
- مدل (Model): مجموعهای از قوانین و دستورالعملهایی که به کامپیوترها اجازه میدهد تا دادهها را پردازش و پیشبینی کنند 🧮
- تمرین مدل (Model Training): فرآیند آموزش یک مدل با استفاده از دادههای مربوط به مسئلهای که قصد حل آن را داریم، تا مدل بتواند پاسخهای درست را بدهد. 🏋️♂️🎯
- مدل تمرین داده شده (Trained Model): یک مدل که با دادههای آموزش دیده است و حالا قادر است به سوالات جدید پاسخ دهد. 🎓🗣
- مدل LLM : مخفف Large language model (مدل زبانی بزرگ) است که یک نوع خاص از مدل هوش مصنوعی است که قادر است با استفاده از دادههای متنی محتوا تولید کند، زبانها را ترجمه کند و به سوالات شما پاسخ دهد 🤖✍️
ادامه در پست بعدی...
🆔 @MdDaily
هوش مصنوعی (Artificial Intelligence): سیستمهایی که میتونن کارایی مشابه انسان داشته باشن، مثل تشخیص چهره، ترجمه زبان، بازی شطرنج و غیره. 🧠🤖
- یادگیری ماشین (Machine Learning): شاخهای از هوش مصنوعی که به سیستمهای کامپیوتری امکان میدهد تا از دادهها یاد بگیرند و خودشون رو بهبود ببخشند، بدون اینکه نیاز به برنامهنویسی دقیق داشته باشند. 📊👩🎓
- مدل (Model): مجموعهای از قوانین و دستورالعملهایی که به کامپیوترها اجازه میدهد تا دادهها را پردازش و پیشبینی کنند 🧮
- تمرین مدل (Model Training): فرآیند آموزش یک مدل با استفاده از دادههای مربوط به مسئلهای که قصد حل آن را داریم، تا مدل بتواند پاسخهای درست را بدهد. 🏋️♂️🎯
- مدل تمرین داده شده (Trained Model): یک مدل که با دادههای آموزش دیده است و حالا قادر است به سوالات جدید پاسخ دهد. 🎓🗣
- مدل LLM : مخفف Large language model (مدل زبانی بزرگ) است که یک نوع خاص از مدل هوش مصنوعی است که قادر است با استفاده از دادههای متنی محتوا تولید کند، زبانها را ترجمه کند و به سوالات شما پاسخ دهد 🤖✍️
ادامه در پست بعدی...
🆔 @MdDaily
❤1
Md Daily
#ام_دی_کورس هوش مصنوعی (Artificial Intelligence): سیستمهایی که میتونن کارایی مشابه انسان داشته باشن، مثل تشخیص چهره، ترجمه زبان، بازی شطرنج و غیره. 🧠🤖 - یادگیری ماشین (Machine Learning): شاخهای از هوش مصنوعی که به سیستمهای کامپیوتری امکان میدهد تا…
#ام_دی_کورس
و اما LangChain 🔗🦜 چیه؟
یک فریمورک قدرتمند و متن باز است که به توسعهدهندگان امکان میدهد با استفاده از LLM ها، برنامههایی در زمینههای گوناگون از جمله چتباتها، پرسش و پاسخ تولیدی و خلاصهسازی ایجاد کنند. LangChain با اتصال دادن اجزای مختلف از ماژولهای گوناگون، امکان ساخت برنامههای عالی مبتنی بر قدرت LLMs را فراهم میکند.
گیت هاب: https://github.com/langchain-ai/langchain
مستندات رسمی: https://python.langchain.com/
ادامه در پست بعدی...
🆔 @MdDaily
و اما LangChain 🔗🦜 چیه؟
یک فریمورک قدرتمند و متن باز است که به توسعهدهندگان امکان میدهد با استفاده از LLM ها، برنامههایی در زمینههای گوناگون از جمله چتباتها، پرسش و پاسخ تولیدی و خلاصهسازی ایجاد کنند. LangChain با اتصال دادن اجزای مختلف از ماژولهای گوناگون، امکان ساخت برنامههای عالی مبتنی بر قدرت LLMs را فراهم میکند.
گیت هاب: https://github.com/langchain-ai/langchain
مستندات رسمی: https://python.langchain.com/
ادامه در پست بعدی...
🆔 @MdDaily
❤1👍1
Md Daily
#ام_دی_کورس و اما LangChain 🔗🦜 چیه؟ یک فریمورک قدرتمند و متن باز است که به توسعهدهندگان امکان میدهد با استفاده از LLM ها، برنامههایی در زمینههای گوناگون از جمله چتباتها، پرسش و پاسخ تولیدی و خلاصهسازی ایجاد کنند. LangChain با اتصال دادن اجزای…
#ام_دی_کورس
خب ما قراره از یه LLM به نام Llama 2 استفاده کنیم اما این مدل زبانی چه مزیتی برای ما داره و دقیقا چیکار میکنه ؟
یک مدل زبانی متن باز هستش که توسط متا/فیسبوک به عنوان جایگزینی برای مدلهای متنبسته مانند GPT و PaLM ایجاد شده و بر خلاف بقیه ی مدل های متنبسته امکان استفاده ی تجاری داره.
این مدل توی چند نسخه ی مختلف قابل استفادس:
نسخه Llama 2 7B: یعنی ۷ میلیارد پارمتر داره
نسخه Llama 2 13B: یعنی ۱۳ میلیارد پارمتر داره
نسخه Llama 2 70B: یعنی ۷۰ میلیارد پارمتر داره
این مدل با دادههای عمومی مانند داده های استخراج شده از اینتنرت آموزش دیده و با امتیاز دادن به جواب هاش توسط نیرو های انسانی بهینهسازی شده. همچنین این امکان وجود داره که با داده های خودمون این مدل رو آموزش بدیم.
در آزمونهای استاندارد، Llama 2 عملکردی مشابه GPT-3.5 داشته و از دیگر مدلهای متنباز بهتر عملکرده اما به اندازه GPT-4 و PaLM 2 خوب عمل نمیکنه.
باید این نکته را در نظر بگیریم که Llama 2 70B درسته 70 میلیارد پارامتر داره ولی GPT-4 چیزی حدود 100 تریلیون پارامتر داره :)
ادامه در پست بعدی...
🆔 @MdDaily
خب ما قراره از یه LLM به نام Llama 2 استفاده کنیم اما این مدل زبانی چه مزیتی برای ما داره و دقیقا چیکار میکنه ؟
یک مدل زبانی متن باز هستش که توسط متا/فیسبوک به عنوان جایگزینی برای مدلهای متنبسته مانند GPT و PaLM ایجاد شده و بر خلاف بقیه ی مدل های متنبسته امکان استفاده ی تجاری داره.
این مدل توی چند نسخه ی مختلف قابل استفادس:
نسخه Llama 2 7B: یعنی ۷ میلیارد پارمتر داره
نسخه Llama 2 13B: یعنی ۱۳ میلیارد پارمتر داره
نسخه Llama 2 70B: یعنی ۷۰ میلیارد پارمتر داره
این مدل با دادههای عمومی مانند داده های استخراج شده از اینتنرت آموزش دیده و با امتیاز دادن به جواب هاش توسط نیرو های انسانی بهینهسازی شده. همچنین این امکان وجود داره که با داده های خودمون این مدل رو آموزش بدیم.
در آزمونهای استاندارد، Llama 2 عملکردی مشابه GPT-3.5 داشته و از دیگر مدلهای متنباز بهتر عملکرده اما به اندازه GPT-4 و PaLM 2 خوب عمل نمیکنه.
باید این نکته را در نظر بگیریم که Llama 2 70B درسته 70 میلیارد پارامتر داره ولی GPT-4 چیزی حدود 100 تریلیون پارامتر داره :)
ادامه در پست بعدی...
🆔 @MdDaily
Md Daily
#ام_دی_کورس خب ما قراره از یه LLM به نام Llama 2 استفاده کنیم اما این مدل زبانی چه مزیتی برای ما داره و دقیقا چیکار میکنه ؟ یک مدل زبانی متن باز هستش که توسط متا/فیسبوک به عنوان جایگزینی برای مدلهای متنبسته مانند GPT و PaLM ایجاد شده و بر خلاف بقیه ی…
#ام_دی_کورس
پلتفرم Huggingface مجموعه ایه که برای توسعه و به اشتراک گذاری مدل های هوش مصنوعی و ابزارهای مربوط به پردازش زبان طبیعی فعالیت می کنه.
این شرکت در سال 2016 تأسیس شد. هدف اونها ایجاد یک اکوسیستم باز برای توسعه هوش مصنوعی بود که همه بتونند ازش استفاده کنند.
شما در این پلتفرم میتونید به مخزن بزرگی از مدل های تمرین داده شده، دیتاست ها و ابزارهای مربوط به پردازش زبان طبیعی دسترسی پیدا کنید.
لینک های مفید:
https://huggingface.co/
https://huggingface.co/openlm-research
https://en.wikipedia.org/wiki/Hugging_Face
ادامه در پست بعدی...
🆔 @MdDaily
پلتفرم Huggingface مجموعه ایه که برای توسعه و به اشتراک گذاری مدل های هوش مصنوعی و ابزارهای مربوط به پردازش زبان طبیعی فعالیت می کنه.
این شرکت در سال 2016 تأسیس شد. هدف اونها ایجاد یک اکوسیستم باز برای توسعه هوش مصنوعی بود که همه بتونند ازش استفاده کنند.
شما در این پلتفرم میتونید به مخزن بزرگی از مدل های تمرین داده شده، دیتاست ها و ابزارهای مربوط به پردازش زبان طبیعی دسترسی پیدا کنید.
لینک های مفید:
https://huggingface.co/
https://huggingface.co/openlm-research
https://en.wikipedia.org/wiki/Hugging_Face
ادامه در پست بعدی...
🆔 @MdDaily
Md Daily
#ام_دی_کورس پلتفرم Huggingface مجموعه ایه که برای توسعه و به اشتراک گذاری مدل های هوش مصنوعی و ابزارهای مربوط به پردازش زبان طبیعی فعالیت می کنه. این شرکت در سال 2016 تأسیس شد. هدف اونها ایجاد یک اکوسیستم باز برای توسعه هوش مصنوعی بود که همه بتونند ازش…
#ام_دی_کورس
خب بریم برای ادامه ی آموزش و شروع کار به کد نویسی :)
به دلیل اینکه LLM ها نیاز به منابع زیادی برای پردازش دارند ما قرار از colab استفاده کنیم که به ما یه محیط توسعه میده با run time های متفاوت.
وارد سایت https://colab.google/ بشید و روی دکمه ی New Note book کلیک کنید
ادامه در پست بعدی...
🆔 @MdDaily
خب بریم برای ادامه ی آموزش و شروع کار به کد نویسی :)
به دلیل اینکه LLM ها نیاز به منابع زیادی برای پردازش دارند ما قرار از colab استفاده کنیم که به ما یه محیط توسعه میده با run time های متفاوت.
وارد سایت https://colab.google/ بشید و روی دکمه ی New Note book کلیک کنید
ادامه در پست بعدی...
🆔 @MdDaily
This media is not supported in your browser
VIEW IN TELEGRAM
#ام_دی_کورس
خب توی این ویدیو با هم یک note book جدید می سازیم و اسمش را تغییر میدیم. در نهایت با تغییر rune time از CPU به T4 GPU و اجرای کامند های لینوکس میزان منابعی که در اختیار داریم رو میبینیم.
برای فان هم چنتا کامند لینوکس رو تست میگریم
ادامه در پست بعدی...
🆔 @MdDaily
خب توی این ویدیو با هم یک note book جدید می سازیم و اسمش را تغییر میدیم. در نهایت با تغییر rune time از CPU به T4 GPU و اجرای کامند های لینوکس میزان منابعی که در اختیار داریم رو میبینیم.
برای فان هم چنتا کامند لینوکس رو تست میگریم
ادامه در پست بعدی...
🆔 @MdDaily
This media is not supported in your browser
VIEW IN TELEGRAM
#ام_دی_کورس
خب توی این ویدیو پیش نیاز هامون را نصب میکنیم و مدلمون رو از Huggingface دانلود میکنیم. به دلیل اینکه Llama 2 برای دسترسی نیاز به ثبت نام داره ما از open_llama_7b استفاده می کنیم که نیاز به ثبت نام نداره.
لینک مدل در Huggingface
لینک مدل در گیت هاب
کد های استفاده شده در این ویدیو:
Install prerequisites:
🆔 @MdDaily
خب توی این ویدیو پیش نیاز هامون را نصب میکنیم و مدلمون رو از Huggingface دانلود میکنیم. به دلیل اینکه Llama 2 برای دسترسی نیاز به ثبت نام داره ما از open_llama_7b استفاده می کنیم که نیاز به ثبت نام نداره.
لینک مدل در Huggingface
لینک مدل در گیت هاب
کد های استفاده شده در این ویدیو:
Install prerequisites:
!pip install -q transformers einops accelerate langchain bitsandbytes
!pip install sentencepiece
Import packages:from langchain import HuggingFacePipelineDownload model:
from transformers import AutoTokenizer, pipeline
from transformers import LlamaTokenizer, LlamaForCausalLM
import torch
model_path = "openlm-research/open_llama_7b" # Hugging Face
tokenizer = LlamaTokenizer.from_pretrained(model_path)
model = LlamaForCausalLM.from_pretrained(
model_path, torch_dtype=torch.float16, device_map='auto',
)
ادامه در پست بعدی... 🆔 @MdDaily
#ام_دی_کورس
بعد از اینکه مدلمون دانلود شد وقت اینه که llm امون رو اماده کنیم.
کد استفاده شده در تصویر :
LLM:
🆔 @MdDaily
بعد از اینکه مدلمون دانلود شد وقت اینه که llm امون رو اماده کنیم.
کد استفاده شده در تصویر :
LLM:
pipeline = pipeline(
"text-generation", #task
model=model,
tokenizer=tokenizer,
torch_dtype=torch.bfloat16,
trust_remote_code=True,
device_map="auto",
max_length=1000,
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id
)
llm = HuggingFacePipeline(pipeline = pipeline, model_kwargs = {'temperature':0})
توضیحات کد در پست بعدی...🆔 @MdDaily
Md Daily
#ام_دی_کورس بعد از اینکه مدلمون دانلود شد وقت اینه که llm امون رو اماده کنیم. کد استفاده شده در تصویر : LLM: pipeline = pipeline( "text-generation", #task model=model, tokenizer=tokenizer, torch_dtype=torch.bfloat16, trust_remote_code=True…
#ام_دی_کورس
این کد پایتون یک pipeline از کتابخانه HuggingFace را ایجاد میکند که میتواند متن را تولید کند 📝. برای این کار، این کد چند چیز را تعریف میکند:
-تابع pipeline: این یک تابع است که یک شیء pipeline را برمیگرداند. این شیء میتواند وظایف مختلفی را انجام دهد، مثلاً تحلیل احساسات، تشخیص نامهای propoer، و غیره. در اینجا، وظیفهای که ما مشخص کردهایم "text-generation" است، یعنی تولید متن 📝.
- شیء model: این یک شیء است که نشان میدهد که چه مدل عصبی را برای pipeline استفاده میکنیم. در اینجا، ما model را به عنوان یک پارامتر به تابع pipeline دادهایم. model ممکن است یک نام باشد (مثلاً "gpt-2") یا یک شیء که قبلاً بارگذاری شده باشد.
- شیء tokenizer: این یک شیء است که نشان میدهد که چگونه متن را به توکنهای کوچکتر تقسیم کنیم. توکنها واحدهای پایهای هستند که مدل عصبی با آنها کار میکند. tokenizer هم مثل model ممکن است یک نام باشد (مثلاً "bert-base-cased") یا یک شیء که قبلاً بارگذاری شده باشد.
- پارامتر torch_dtype: این یک پارامتر است که نشان میدهد که چه نوع دادهای را برای tensor های torch استفاده کنیم. tensor ها ساختارهای دادهای هستند که در جبر خطی و شبکههای عصبی به کار میروند. torch_dtype ممکن است float32، float64، bfloat16 و غیره باشد. در اینجا، ما bfloat16 را انتخاب کردهایم که نوع دادهای با دقت پایین است ولی سرعت بالاتر و حافظه کمتری نسبت به float32 دارد.
- پارامتر trust_remote_code: این یک پارامتر بولین (True/False) است که نشان میدهد آیا pipeline به صورت خودکار برخورد با remote code را فعال کند یا خیر. remote code به این معناست که pipeline بتواند برخی از قسمتهای خود را از منابع دور دست (مثلاً اینترنت) در زمان اجرا درآورده و به آنها دسترس پیدا کند. در اینجا، ما trust_remote_code را True قرار دادهایم، چون ممکن است model و tokenizer را از منابع دور دست بخواهید.
- پارامتر device_map: این یک پارامتر است که نشان میدهد pipeline بر روی چه دستگاه (device) ای اجرا شود. دستگاه ممکن است CPU یا GPU باشد. در اینجا، ما device_map را "auto" قرار دادهایم، چون میخواهیم pipeline خودش تشخیص دهد که چه دستگاهی را استفاده کند.
- پارامتر max_length: این یک پارامتر است که نشان میدهد حداکثر چند توکن را برای تولید متن در نظر بگیریم. در اینجا، ما max_length را 1000 قرار دادهایم، چون میخواهیم متنهای طولانی تولید کنیم.
- پارامتر do_sample: این یک پارامتر بولین (True/False) است که نشان میدهد آیا pipeline به صورت تصادفی (random) متن را تولید کند یا خیر. در اینجا، ما do_sample را True قرار دادهایم، چون میخواهیم متنهای خلاقانه و جذاب تولید کنیم.
- پارامتر top_k: این یک پارامتر است که نشان میدهد pipeline در هر مرحله از تولید متن، چند توکن با بالاترین احتمال را در نظر بگیرد. در اینجا، ما top_k را 10 قرار دادهایم، چون میخواهیم pipeline از تعداد مناسبی از توکنهای محتمل انتخاب کند.
- پارامتر num_return_sequences: این یک پارامتر است که نشان میدهد pipeline چند جمله (sequence) را به عنوان خروجی برگرداند. در اینجا، ما num_return_sequences را 1 قرار دادهایم، چون فقط یک جمله را میخواهیم.
- پارامتر eos_token_id: این یک پارامتر است که نشان میدهد pipeline با چه توکنی (token) بفهمد که جمله به پایان رسیده است. در اینجا، ما eos_token_id را با tokenizer.eos_token_id قرار دادهایم، که نشان دهنده توکن پایان جمله (end of sentence) در tokenizer است.
شیء llm: این یک شیء است که نشان دهنده pipeline هست ولی با بعضی تفاوتها. llm نام کلاس HuggingFacePipeline را دارد و pipeline را به عنوان پارامتر خود در نظر میگیرد. llm همچنین model_kwargs را به عنوان پارامتر خود دارد که شامل temperature است. temperature یک عدد بین صفر و یک است که نشان میدهد pipeline چقدر خلاق و جسور باشد. هرچه temperature بالاتر باشد، pipeline جسورتر و خلاقانهتر عمل میکند ولی همچنین خطای بالاتر هم دارد. در اینجا، ما temperature را صفر قرار دادهایم، چون میخواهیم pipeline به صورت حساب شده و منطقی عمل کند.
🆔 @MdDaily
این کد پایتون یک pipeline از کتابخانه HuggingFace را ایجاد میکند که میتواند متن را تولید کند 📝. برای این کار، این کد چند چیز را تعریف میکند:
-تابع pipeline: این یک تابع است که یک شیء pipeline را برمیگرداند. این شیء میتواند وظایف مختلفی را انجام دهد، مثلاً تحلیل احساسات، تشخیص نامهای propoer، و غیره. در اینجا، وظیفهای که ما مشخص کردهایم "text-generation" است، یعنی تولید متن 📝.
- شیء model: این یک شیء است که نشان میدهد که چه مدل عصبی را برای pipeline استفاده میکنیم. در اینجا، ما model را به عنوان یک پارامتر به تابع pipeline دادهایم. model ممکن است یک نام باشد (مثلاً "gpt-2") یا یک شیء که قبلاً بارگذاری شده باشد.
- شیء tokenizer: این یک شیء است که نشان میدهد که چگونه متن را به توکنهای کوچکتر تقسیم کنیم. توکنها واحدهای پایهای هستند که مدل عصبی با آنها کار میکند. tokenizer هم مثل model ممکن است یک نام باشد (مثلاً "bert-base-cased") یا یک شیء که قبلاً بارگذاری شده باشد.
- پارامتر torch_dtype: این یک پارامتر است که نشان میدهد که چه نوع دادهای را برای tensor های torch استفاده کنیم. tensor ها ساختارهای دادهای هستند که در جبر خطی و شبکههای عصبی به کار میروند. torch_dtype ممکن است float32، float64، bfloat16 و غیره باشد. در اینجا، ما bfloat16 را انتخاب کردهایم که نوع دادهای با دقت پایین است ولی سرعت بالاتر و حافظه کمتری نسبت به float32 دارد.
- پارامتر trust_remote_code: این یک پارامتر بولین (True/False) است که نشان میدهد آیا pipeline به صورت خودکار برخورد با remote code را فعال کند یا خیر. remote code به این معناست که pipeline بتواند برخی از قسمتهای خود را از منابع دور دست (مثلاً اینترنت) در زمان اجرا درآورده و به آنها دسترس پیدا کند. در اینجا، ما trust_remote_code را True قرار دادهایم، چون ممکن است model و tokenizer را از منابع دور دست بخواهید.
- پارامتر device_map: این یک پارامتر است که نشان میدهد pipeline بر روی چه دستگاه (device) ای اجرا شود. دستگاه ممکن است CPU یا GPU باشد. در اینجا، ما device_map را "auto" قرار دادهایم، چون میخواهیم pipeline خودش تشخیص دهد که چه دستگاهی را استفاده کند.
- پارامتر max_length: این یک پارامتر است که نشان میدهد حداکثر چند توکن را برای تولید متن در نظر بگیریم. در اینجا، ما max_length را 1000 قرار دادهایم، چون میخواهیم متنهای طولانی تولید کنیم.
- پارامتر do_sample: این یک پارامتر بولین (True/False) است که نشان میدهد آیا pipeline به صورت تصادفی (random) متن را تولید کند یا خیر. در اینجا، ما do_sample را True قرار دادهایم، چون میخواهیم متنهای خلاقانه و جذاب تولید کنیم.
- پارامتر top_k: این یک پارامتر است که نشان میدهد pipeline در هر مرحله از تولید متن، چند توکن با بالاترین احتمال را در نظر بگیرد. در اینجا، ما top_k را 10 قرار دادهایم، چون میخواهیم pipeline از تعداد مناسبی از توکنهای محتمل انتخاب کند.
- پارامتر num_return_sequences: این یک پارامتر است که نشان میدهد pipeline چند جمله (sequence) را به عنوان خروجی برگرداند. در اینجا، ما num_return_sequences را 1 قرار دادهایم، چون فقط یک جمله را میخواهیم.
- پارامتر eos_token_id: این یک پارامتر است که نشان میدهد pipeline با چه توکنی (token) بفهمد که جمله به پایان رسیده است. در اینجا، ما eos_token_id را با tokenizer.eos_token_id قرار دادهایم، که نشان دهنده توکن پایان جمله (end of sentence) در tokenizer است.
شیء llm: این یک شیء است که نشان دهنده pipeline هست ولی با بعضی تفاوتها. llm نام کلاس HuggingFacePipeline را دارد و pipeline را به عنوان پارامتر خود در نظر میگیرد. llm همچنین model_kwargs را به عنوان پارامتر خود دارد که شامل temperature است. temperature یک عدد بین صفر و یک است که نشان میدهد pipeline چقدر خلاق و جسور باشد. هرچه temperature بالاتر باشد، pipeline جسورتر و خلاقانهتر عمل میکند ولی همچنین خطای بالاتر هم دارد. در اینجا، ما temperature را صفر قرار دادهایم، چون میخواهیم pipeline به صورت حساب شده و منطقی عمل کند.
🆔 @MdDaily
#ام_دی_کورس
وقتشه که خروجیه تا این بخش از کار را باهم ببنیم.
الان که llm امون آمادس و طبق توضیحات پست قبلی پارامتر هاشم مشخص شدند به این شکل میتونیم ازش سوال بپرسیم :
> تقریبا برای تولید هر ریسپانس 33 ثانیه زمان نیاز داره. که با اختصاص منابع گرافیکی بیشتر میشه این مدت رو کمتر کرد. برای این کار باید اشتراک google colab pro را داشته باشد.
کد استفاده شده در تصویر:
Let's Have Some Fun
وقتشه که خروجیه تا این بخش از کار را باهم ببنیم.
الان که llm امون آمادس و طبق توضیحات پست قبلی پارامتر هاشم مشخص شدند به این شکل میتونیم ازش سوال بپرسیم :
llm("متن یا سوال شما")
همانطور که توی تصویر می بینید من ازش چنتا سوال فان پرسیدم که بریم توی پست بعد جواب هاشا ببینم. > تقریبا برای تولید هر ریسپانس 33 ثانیه زمان نیاز داره. که با اختصاص منابع گرافیکی بیشتر میشه این مدت رو کمتر کرد. برای این کار باید اشتراک google colab pro را داشته باشد.
کد استفاده شده در تصویر:
Let's Have Some Fun
q1 = llm("What do you know About IRAN?")
q2 = llm("What is Python programming langgue?")
q3 = llm("Write a hello world in python")
q4 = llm("Write a hello world in Golang")
🆔 @MdDaily❤2
#ام_دی_کورس
جوابی که که برای ما تولید کرد، خیلی طولانیه، جملاتش بهم ارتباط ندارند و دقیقا چیزی که ما میخوایم نیست.
خب اینجاس که ما از longchain و دانش prompt engineering استفاده میکنیم تا به مدل بفهمونیم باید چطوری رفتار کنه، چطوری جواب بده و وظیفش چیه
ادامه در پست بعدی...
🆔 @MdDaily
جوابی که که برای ما تولید کرد، خیلی طولانیه، جملاتش بهم ارتباط ندارند و دقیقا چیزی که ما میخوایم نیست.
خب اینجاس که ما از longchain و دانش prompt engineering استفاده میکنیم تا به مدل بفهمونیم باید چطوری رفتار کنه، چطوری جواب بده و وظیفش چیه
ادامه در پست بعدی...
🆔 @MdDaily
❤1
#ام_دی_کورس
با استفاده از PromptTemplate به مدلمون میگیم قراره یه متنی بهش بدیم و وظیفت اینکه نکات کلیدی متن را برای ما استخراج کنی .
کد استفاده شده در تصویر:
🆔 @MdDaily
با استفاده از PromptTemplate به مدلمون میگیم قراره یه متنی بهش بدیم و وظیفت اینکه نکات کلیدی متن را برای ما استخراج کنی .
کد استفاده شده در تصویر:
from langchain import PromptTemplate, LLMChain
template = """
Write a concise summary of the following text delimited by triple backquotes.
Return your response in bullet points which covers the key points of the text.
```{text}```
BULLET POINT SUMMARY:
"""
prompt = PromptTemplate(template=template, input_variables=["text"])
llm_chain = LLMChain(prompt=prompt, llm=llm)
ادامه در پست بعدی...🆔 @MdDaily
#ام_دی_کورس
و تمام :)
توی تصویر ها میتونید ورودی متن ها و خروجی های تولید شده را ببینید
کد کامل در ریپوی Md Course
🆔 @MdDaily
و تمام :)
توی تصویر ها میتونید ورودی متن ها و خروجی های تولید شده را ببینید
کد کامل در ریپوی Md Course
🆔 @MdDaily