ترجمه کتاب ساخت برنامههای کاربردی با مدلهای پایه - انتشارات O’Reilly
BOOK: O'Reilly_AI_Engineering_Building_Applications_with_Foundation_Models
یک مدل زبانی، اطلاعات آماری درباره یک یا چند زبان را کدگذاری میکند. به طور شهودی، این اطلاعات به ما میگویند که یک کلمه چقدر احتمال دارد در یک زمینه خاص ظاهر شود. برای مثال، با توجه به زمینه «رنگ مورد علاقه من __ است»، یک مدل زبانی که انگلیسی را کدگذاری کرده است، بیشتر از «ماشین»، «آبی» را پیشبینی میکند.
ماهیت آماری زبانها قرنها پیش کشف شد. در داستان «ماجرای مردان رقصان» (۱۹۰۵)، شرلوک هولمز از اطلاعات آماری ساده انگلیسی برای رمزگشایی دنبالهای از figures چوبی مرموز استفاده کرد. از آنجایی که رایجترین حرف در انگلیسی E است، هولمز استنتاج کرد که رایجترین figure چوبی باید نمایانگر E باشد.
بعدها، کلود شانون از آمار پیشرفتهتری برای decipher کردن پیامهای دشمن در طول جنگ جهانی دوم استفاده کرد. کار او درباره چگونگی مدلسازی انگلیسی، در مقاله مهم او با عنوان «پیشبینی و آنتروپی انگلیسی چاپی» (۱۹۵۱) منتشر شد. بسیاری از مفاهیم معرفی شده در این مقاله، از جمله آنتروپی، هنوز برای مدلسازی زبان استفاده میشوند.
در روزهای اولیه، یک مدل زبانی فقط یک زبان را شامل میشد. اما امروزه، یک مدل زبانی میتواند چندین زبان را دربرگیرد.
واحد پایه یک مدل زبانی، توکن (token) است. یک توکن میتواند یک نویسه (character)، یک کلمه، یا بخشی از یک کلمه (مانند -tion) باشد که بستگی به مدل دارد. برای مثال، GPT-4 (مدل پشت ChatGPT) عبارت «I can’t wait to build AI applications» را به ۹ توکن تجزیه میکند. توجه کنید که در این مثال، کلمه «can’t» به دو توکن «can» و «’t» شکسته شده است.

فرآیند شکستن متن اصلی به توکنها، توکنسازی (tokenization) نامیده میشود. برای GPT-4، طول متوسط یک توکن تقریباً ¾ طول یک کلمه است. بنابراین، ۱۰۰ توکن تقریباً معادل ۷۵ کلمه است.
مجموعه تمام توکنهایی که یک مدل میتواند با آنها کار کند، واژگان (vocabulary) مدل نامیده میشود. شما میتوانید با تعداد کمی توکن، تعداد زیادی کلمه متمایز بسازید، مشابه نحوه استفاده از چند حرف الفبا برای ساخت بسیاری از کلمات. مدل Mixtral 8x7B اندازه واژگانی معادل ۳۲,۰۰۰ توکن دارد. اندازه واژگان GPT-4 برابر ۱۰۰,۲۵۶ توکن است. روش توکنسازی و اندازه واژگان توسط توسعهدهندگان مدل تعیین میشود.
چرا مدلهای زبانی به جای کلمه (word) یا نویسه (character)، از توکن استفاده میکنند؟
سه دلیل اصلی وجود دارد:
۱. در مقایسه با کاراکترها، توکنها به مدل اجازه میدهند کلمات را به اجزای معنادار تجزیه کنند. برای مثال، «cooking» میتواند به «cook» و «ing» شکسته شود که هر دو جزء حاوی بخشی از معنای کلمه اصلی هستند.
۲. از آنجایی که توکنهای منحصر به فرد کمتر از کلمات منحصر به فرد هستند، این امر اندازه واژگان مدل را کاهش داده و مدل را کارآمدتر میسازد.
۳. توکنها به مدل در پردازش کلمات ناشناخته نیز کمک میکنند. برای مثال، یک کلمه ساختگی مانند «chatgpting» میتواند به «chatgpt» و «ing» تقسیم شود که به مدل کمک میکند ساختار آن را درک کند. توکنها تعادلی بین داشتن واحدهای کمتر نسبت به کلمات و حفظ معنای بیشتر نسبت به نویسههای مجزا برقرار میکنند.
دو نوع اصلی مدل زبانی وجود دارد:
مدلهای زبانی پوشیده (masked language models) و مدلهای زبانی خودرگرسیو (autoregressive language models).
این دو بر اساس اطلاعاتی که برای پیشبینی یک توکن استفاده میکنند، تفاوت دارند:
مدل زبانی پوشیده: این نوع مدل آموزش دیده است تا توکنهای گمشده در هر نقطه از یک دنباله را با استفاده از زمینههای قبل و بعد از توکنهای گمشده پیشبینی کند. در essence، یک مدل زبانی پوشیده آموزش دیده است تا بتواند جای خالی را پر کند. برای مثال، با توجه به زمینه «My favorite __ is blue»، یک مدل زبانی پوشیده باید پیشبینی کند که جای خالی به احتمال زیاد «color» است. یک مثال شناخته شده از این نوع، BERT است. در زمان نوشتن این کتاب، مدلهای زبانی پوشیده معمولاً برای وظایف غیرتولیدی (non-generative) مانند تحلیل احساسات و طبقهبندی متن استفاده میشوند. آنها برای وظایفی که نیاز به درک کلی context دارند، مانند دیباگ کردن کد، نیز مفید هستند؛ جایی که مدل نیاز دارد هم کد قبل و هم بعد را بفهمد تا خطاها را شناسایی کند.
مدل زبانی خودرگرسیو: این نوع مدل آموزش دیده است تا توکن بعدی در یک دنباله را فقط با استفاده از توکنهای قبلی پیشبینی کند. این مدل پیشبینی میکند که بعد از «My favorite color is __» چه میآید. یک مدل خودرگرسیو میتواند به طور مداوم یک توکن پس از دیگری تولید کند. امروزه، مدلهای زبانی خودرگرسیو مدلهای انتخابی برای تولید متن هستند و به همین دلیل، محبوبیت بسیار بیشتری نسبت به مدلهای زبانی پوشیده دارند.

در این کتاب، مگر اینکه صراحتاً ذکر شود، «مدل زبانی» به یک مدل خودرگرسیو اشاره خواهد کرد.
خروجیهای مدلهای زبانی باز (open-ended) هستند. یک مدل زبانی میتواند از واژگان ثابت و محدود خود برای ساخت خروجیهای ممکن نامحدود استفاده کند. مدلی که میتواند خروجیهای open-ended تولید کند، تولیدی (generative) نامیده میشود، از این رو اصطلاح هوش مصنوعی تولیدی (generative AI) به وجود آمده است.
میتوانید یک مدل زبانی را به عنوان یک ماشین تکمیلکننده (completion machine) در نظر بگیرید: با دریافت یک متن (prompt)، سعی میکند آن متن را تکمیل کند. در اینجا یک مثال آورده شده است:
پِرامپت (از کاربر): “To be or not to be”
تکمیل (از مدل زبانی): “, that is the question.”
مهم است توجه داشته باشید که تکمیلها، پیشبینیهایی بر اساس احتمالات هستند و تضمینی برای صحیح بودن آنها وجود ندارد. این ماهیت احتمالاتی مدلهای زبانی، استفاده از آنها را هم بسیار هیجانانگیز و هم گاهی frustating میسازد.
هرچند ساده به نظر میرسد، اما تکمیل کردن به طور باورنکردنی قدرتمند است. بسیاری از وظایف، از جمله ترجمه، خلاصهسازی، کدنویسی و حل مسائل ریاضی، میتوانند به عنوان وظایف تکمیل قالببندی شوند.
مدلسازی زبان فقط یکی از الگوریتمهای یادگیری ماشین (ML) است. مدلهایی برای تشخیص اشیاء، مدلسازی موضوعی، سیستمهای پیشنهاددهنده، پیشبینی آب و هوا، پیشبینی قیمت سهام و غیره نیز وجود دارند. چه چیزی در مورد مدلهای زبانی خاص است که آنها را به مرکز رویکرد scalingی تبدیل کرد که منجر به «لحظه ChatGPT» شد؟
پاسخ این است که مدلهای زبانی میتوانند با استفاده از خود-نظارتی آموزش ببینند، در حالی که بسیاری از مدلهای دیگر نیاز به نظارت (supervision) دارند. نظارت به فرآیند آموزش الگوریتمهای ML با استفاده از دادههای برچسبدار (labeled data) اشاره دارد که میتواند گران و کند به دست آید. خود-نظارتی به غلبه بر گلوگاه برچسبزنی دادهها کمک میکند تا مجموعه دادههای بزرگتری برای یادگیری مدلها ایجاد شود و به طور مؤثر به مدلها اجازه scale up را میدهد.
با نظارت (supervision)، شما مثالها را برچسبگذاری میکنید تا رفتارهایی را که میخواهید مدل یاد بگیرد، نشان دهید و سپس مدل را با استفاده از این مثالها آموزش میدهید. پس از آموزش، میتوانید مدل را روی دادههای جدید اعمال کنید. به عنوان مثال، برای آموزش یک مدل شناسایی تقلب (fraud detection)، شما از نمونههایی از تراکنشها استفاده میکنید که هر کدام با برچسب «تقلب» یا «غیرتقلب» مشخص شدهاند. وقتی مدل از این نمونهها یاد گرفت، میتوانید از آن برای پیشبینی اینکه آیا یک تراکنش جدید تقلبی است یا خیر، استفاده کنید.
موفقیت مدلهای هوش مصنوعی در دهه ۲۰۱۰ در نظارت نهفته بود. مدلی که انقلاب یادگیری عمیق را آغاز کرد، AlexNet (Krizhevsky و همکاران، ۲۰۱۲)، یک مدل نظارتشده بود. این مدل آموزش دیده بود تا نحوه طبقهبندی بیش از ۱ میلیون تصویر در مجموعه داده ImageNet را یاد بگیرد. هر تصویر را در یکی از ۱۰۰۰ دسته مانند «ماشین»، «بالن» یا «میمون» طبقهبندی میکرد.
عیب نظارت این است که برچسبزنی دادهها گران و زمانبر است. اگر برچسبزنی یک تصویر برای یک نفر ۵ سنت هزینه داشته باشد، برچسبزنی یک میلیون تصویر برای ایمیج نت، ۵۰,۰۰۰ دلار هزینه در بر خواهد داشت. اگر بخواهید دو نفر متفاوت هر تصویر را برچسبزنی کنند - تا بتوانید کیفیت برچسب را cross-check کنید - هزینه دو برابر خواهد شد. از آنجایی که جهان بسیار بیشتر از ۱۰۰۰ شیء دارد، برای گسترش قابلیتهای مدلها برای کار با اشیاء بیشتر، باید برچسبهای دستههای بیشتری اضافه کنید. برای scale up کردن تا ۱ میلیون دسته بندی، تنها هزینه برچسبزنی به ۵۰ میلیون دلار افزایش مییابد.
برچسبزنی اشیاء روزمره کاری است که اکثر مردم بدون آموزش قبلی میتوانند انجام دهند. از این رو، میتوان آن را نسبتاً ارزان انجام داد. با این حال، همه وظایف برچسبزنی به این سادگی نیستند. تولید ترجمههای لاتین برای یک مدل انگلیسی به لاتین گرانتر است. برچسبزنی اینکه آیا یک سیتی اسکن نشانههایی از سرطان را نشان میدهد یا نه، هزینهای سرسامآور خواهد بود.
خود-نظارتی به غلبه بر گلوگاه برچسبزنی دادهها کمک میکند. در خود-نظارتی، به جای نیاز به برچسبهای صریح (explicit)، مدل میتواند برچسبها را از دادههای ورودی استنتاج کند. مدلسازی زبان self-supervised است زیرا هر دنباله ورودی، هم برچسبها (توکنهایی که باید پیشبینی شوند) و هم زمینههایی (contexts) که مدل میتواند برای پیشبینی این برچسبها استفاده کند را فراهم میکند. برای مثال، جمله “I love street food.” شش نمونه آموزشی تولید میکند، همان که در جدول 1-1 نشان داده شده است.

در جدول 1-1، <BOS> و <EOS> به ترتیب نشانگر آغاز و پایان یک دنباله (sequence) هستند.
این نشانگرها برای اینکه یک مدل زبانی بتواند با چندین دنباله کار کند، ضروری هستند. هر نشانگر معمولاً به عنوان یک توکن ویژه (special token) توسط مدل در نظر گرفته میشود. نشانگر پایان دنباله به ویژه اهمیت دارد، زیرا به مدلهای زبانی کمک میکند تا بدانند چه زمانی باید پاسخهای خود را به پایان برسانند.
یادگیری self-supervised با یادگیری بدون نظارت (unsupervised) متفاوت است. در یادگیری self-supervised، برچسبها از دادههای ورودی استنتاج میشوند. در یادگیری بدون نظارت، شما اصلاً به برچسب نیاز ندارید.
یادگیری self-supervised به این معنی است که مدلهای زبانی میتوانند از دنبالههای متنی بدون نیاز به هیچ برچسبزنی یاد بگیرند. از آنجایی که دنبالههای متنی همه جا وجود دارند - در کتابها، پستهای وبلاگ، مقالات و نظرات Reddit - امکان ساخت حجم عظیمی از دادههای آموزشی وجود دارد که به مدلهای زبانی اجازه میدهد تا scale up کنند و به LLM تبدیل شوند.
با این حال، LLM (Large Language Model ) به سختی یک اصطلاح علمی است. یک مدل زبانی چقدر باید بزرگ باشد تا بزرگ در نظر گرفته شود؟ آنچه امروز بزرگ است ممکن است فردا کوچک در نظر گرفته شود. اندازه یک مدل معمولاً توسط تعداد پارامترهای (parameters) آن اندازهگیری میشود. یک پارامتر یک متغیر در درون یک مدل ML است که از طریق فرآیند آموزش بهروزرسانی میشود. به طور کلی، هرچه یک مدل پارامترهای بیشتری داشته باشد، ظرفیت بیشتری برای یادگیری رفتارهای desired دارد (اگرچه این همیشه صادق نیست).
وقتی اولین مدل مولد پیشآموزشدیده ترنسفورمر اوپنایآی (GPT) در ژوئن ۲۰۱۸ عرضه شد، ۱۱۷ میلیون پارامتر داشت و در آن زمان بزرگ در نظر گرفته میشد. در فوریه ۲۰۱۹، وقتی اوپنایآی مدل GPT-2 را با ۱.۵ میلیارد پارامتر معرفی کرد، مدل ۱۱۷ میلیونی به عنوان مدلی کوچک تنزل رتبه یافت. در زمان نوشتن این کتاب، مدلی با ۱۰۰ میلیارد پارامتر، بزرگ در نظر گرفته میشود. شاید روزی این اندازه نیز کوچک به حساب آید.
پیش از آنکه به بخش بعدی برویم، میخواهم به این سوال که معمولاً بدیهی فرض میشود بپردازم: چرا مدلهای بزرگتر (larger models) به دادههای بیشتری نیاز دارند؟ مدلهای بزرگتر ظرفیت یادگیری بیشتری دارند و در نتیجه برای حداکثر کردن عملکرد خود به دادههای آموزشی بیشتری نیاز خواهند داشت. شما میتوانید یک مدل بزرگ را روی یک مجموعه داده کوچک نیز آموزش دهید، اما این کار هدر دادن منابع پردازشی خواهد بود. با مدلهای کوچکتر میتوانستید به نتایج مشابه یا حتی بهتری روی این مجموعه داده دست یابید.
اگرچه مدلهای زبانی قادر به انجام کارهای باورنکردنی هستند، اما به متن (text) محدود شدهاند. به عنوان انسان، ما جهان را نه تنها از طریق زبان، بلکه از طریق بینایی، شنوایی، لامسه و موارد بیشتر درک میکنیم. توانایی پردازش دادههای فراتر از متن برای هوش مصنوعی ضروری است تا در دنیای واقعی عمل کند.
به همین دلیل، مدلهای زبانی در حال گسترش هستند تا روش های داده ای بیشتری را ترکیب کنند. GPT-4V و Claude 3 میتوانند تصاویر و متون را درک کنند. برخی مدلها حتی ویدیوها، assets سهبعدی، ساختارهای پروتئینی و غیره را درک میکنند. ترکیب روش های داده ایِ بیشتر به مدلهای زبانی، آنها را حتی قدرتمندتر میسازد.
در حالی که بسیاری از مردم هنوز Gemini و GPT-4V را LLM مینامند، بهتر است آنها را به عنوان مدلهای پایه (Foundation Models) توصیف کنیم. کلمه «پایه» هم اهمیت این مدلها در برنامههای کاربردی هوش مصنوعی و هم این واقعیت که میتوانند برای نیازهای مختلف بنا شوند را نشان میدهد.
مدلهای پایه، یک جهش از ساختار سنتی تحقیقات هوش مصنوعی را نشان میدهند. برای مدت طولانی، تحقیقات هوش مصنوعی بر اساس modalities داده تقسیمبندی شده بود. پردازش زبان طبیعی (Natural language Processing ) (NLP) فقط با متن سر و کار داشت. بینایی کامپیوتر فقط با vision سر و کار داشت. مدلهای مبتنی بر متن (Text-only models) میتوانند برای وظایفی مانند ترجمه و تشخیص هرزنامه (spam detection) استفاده شوند. مدلهای مبتنی بر تصویر (Image-only models) میتوانند برای تشخیص اشیاء (object detection) و طبقهبندی تصاویر (image classification) به کار روند. مدلهای مبتنی بر صوت (Audio-only models) میتوانند وظایفی مانند تشخیص گفتار (speech-to-text یا STT) و سنتز گفتار (text-to-speech یا TTS) را انجام دهند.
مدلی که بتواند با بیش از یک modality داده کار کند، یک مدل چندوجهی (multimodal) نیز نامیده میشود. یک مدل چندوجهی تولیدی، مدل بزرگ چندوجهی (Large Multimodal Model - LMM) نیز نامیده میشود. اگر یک مدل زبانی، توکن بعدی را با شرط شدن (conditioned on) روی توکنهای متنی تولید میکند، یک مدل چندوجهی (multimodal model) توکن بعدی را با شرط شدن روی هر دوی توکنهای متنی و تصویری، یا هر modality دیگری که مدل پشتیبانی میکند، تولید مینماید؛ همانطور که در شکل ۱-۳ نشان داده شده است.

درست مانند مدلهای زبانی، مدلهای چندوجهی نیز برای مقیاسپذیری به داده نیاز دارند. خود-نظارتی برای مدلهای چندوجهی نیز کاربرد دارد. برای مثال، اوپنایآی از گونهای از خود-نظارتی به نام نظارت زبان طبیعی (natural language supervision) برای آموزش مدل زبان-تصویر خود به نام CLIP (اوپنایآی، ۲۰۲۱) استفاده کرد. به جای تولید دستی برچسب برای هر تصویر، آنها جفتهای (تصویر، متن)ی را پیدا کردند که به طور همزمان در اینترنت ظاهر میشدند. آنها توانستند یک مجموعه داده متشکل از ۴۰۰ میلیون جفت (تصویر، متن) تولید کنند که ۴۰۰ برابر بزرگتر از ImageNet بود، بدون هزینه برچسبزنی دستی. این مجموعه داده به CLIP اجازه داد تا به اولین مدلی تبدیل شود که میتوانست بدون نیاز به آموزش اضافی، به چندین کار طبقهبندی تصویر تعمیم یابد.
این کتاب از اصطلاح مدلهای پایه (foundation models) برای اشاره به هر دو نوع مدلهای زبانی بزرگ و مدلهای چندوجهی بزرگ استفاده میکند.
توجه داشته باشید که CLIP یک مدل مولد (generative) نیست — آموزش ندیده بود تا خروجیهای باز تولید کند. CLIP یک مدل embedding است که آموزش دیده تا embeddingهای مشترک (joint embeddings) هم برای متون و هم برای تصاویر تولید کند. بخش “مقدمهای بر Embedding” در ادامه کتاب در مورد embeddingها بحث میکند. برای حالا، میتوانید embeddingها را به عنوان بردارهایی در نظر بگیرید که هدف آنها ثبت معنای دادههای اصلی است. مدلهای embedding چندوجهی مانند CLIP، ستون فقرات مدلهای مولد چندوجهی، مانند Flamingo، LLaVA و Gemini (پیشتر با نام Bard) هستند.
مدلهای پایه همچنین نشاندهنده گذار از مدلهای ویژه-وظیفه به مدلهای همهمنظوره هستند. پیش از این، مدلها اغلب برای وظایف خاصی مانند تحلیل احساسات یا ترجمه توسعه مییافتند. یک مدل آموزشدیده برای تحلیل احساسات نمیتوانست ترجمه انجام دهد و بالعکس.
مدلهای پایه، به لطف مقیاس و روش آموزششان، قادر به انجام طیف گستردهای از وظایف هستند. مدلهای همهمنظوره به صورت out-of-the-box (بدون تنظیم خاص) میتوانند برای بسیاری از وظایف نسبتاً خوب عمل کنند. یک مدل زبانی بزرگ (LLM) میتواند هم تحلیل احساسات انجام دهد و هم ترجمه. با این حال، اغلب میتوانید یک مدل همهمنظوره را برای حداکثر کردن عملکردش در یک وظیفه خاص تنظیم (task) کنید.
شکل ۱-۴ وظایفی را نشان میدهد که توسط معیار سنجش Super-NaturalInstructions برای ارزیابی مدلهای پایه استفاده شده (Wang و همکاران، ۲۰۲۲)، که ایدهای از انواع وظایفی که یک مدل پایه میتواند انجام دهد ارائه میکند.
تصور کنید که شما با یک خردهفروشی کار میکنید تا یک برنامه برای تولید توضیحات محصول برای وبسایت آنها بسازید. یک مدل out-of-the-box ممکن است بتواند توضیحات دقیقی تولید کند، اما ممکن است در ثبت لحن برند یا برجسته کردن پیامرسانی برند شکست بخورد. توضیحات تولیدشده حتی ممکن است پر از سخنان بازاریابی و کلیشهها باشد.

تکنیکهای متعددی وجود دارد که میتوانید استفاده کنید تا مدل را وادار به تولید خروجی مورد نظرتان کنید. برای مثال، میتوانید دستورالعملهای دقیقی همراه با مثالهایی از توضیحات محصول مطلوب بسازید. این رویکرد، مهندسی پیشنگاشت (Prompt Engineering) است. میتوانید مدل را به یک پایگاه داده از نظرات مشتریان متصل کنید که مدل بتواند از آن برای تولید توضیحات بهتر بهرهبرداری کند. استفاده از یک پایگاه داده برای تکمیل دستورالعملها، تولید تقویتشده با بازیابی (Retrieval-Augmented Generation یا RAG) نامیده میشود. همچنین میتوانید مدل را روی یک مجموعهداده از توضیحات محصول باکیفیت، بیشتر آموزش دهید (Further Train) یا به اصطلاح (Fine-Tuning) کنید.
مهندسی پیشنگاشت (Prompt Engineering)، RAG و فاین-تیونینگ (Fine-Tuning) سه تکنیک بسیار رایج در مهندسی هوش مصنوعی هستند که میتوانید برای تطبیق یک مدل با نیازهای خود از آنها استفاده کنید. بقیه کتاب به طور مفصل در مورد همه آنها بحث خواهد کرد.
تطبیق یک مدل قدرتمند موجود با وظیفه شما، عموماً بسیار آسانتر از ساختن یک مدل برای وظیفه از ابتدا است — برای مثال، مقایسه ده مثال و یک آخر هفته در مقابل ۱ میلیون مثال و شش ماه. مدلهای پایه، توسعه برنامههای کاربردی هوش مصنوعی را ارزانتر کرده و زمان عرضه به بازار (Time to Market) را کاهش میدهند. دقیقاً چه مقدار داده برای تطبیق یک مدل مورد نیاز است، به این بستگی دارد که از کدام تکنیک استفاده میکنید. این کتاب در هنگام هر تکنیک به این سوال نیز خواهد پرداخت. با این حال، مدلهای (task-specific) هنوز مزایای زیادی دارند، برای مثال، ممکن است بسیار کوچکتر باشند که باعث میشود استفاده از آنها سریعتر و ارزانتر تمام شود.
اینکه مدل خود را بسازید یا از مدل موجود بهرهبرداری کنید، یک سوال کلاسیک “خرید در مقابل ساخت” (Buy-or-Build) است که تیمها باید خود به آن پاسخ دهند. بحثهای سراسر این کتاب میتواند در اتخاذ این تصمیم کمک کند.
مهندسی هوش مصنوعی به فرآیند ساخت برنامههای کاربردی بر روی مدلهای پایه اشاره دارد. مردم بیش از یک دهه است که در حال ساخت برنامههای کاربردی هوش مصنوعی هستند - فرآیندی که اغلب به عنوان مهندسی یادگیری ماشین (ML engineering) یا MLOps (مخفف عملیات یادگیری ماشین) شناخته میشود.
چرا اکنون در مورد مهندسی هوش مصنوعی صحبت میکنیم؟
اگر مهندسی ML سنتی شامل توسعه مدلهای ML است، مهندسی هوش مصنوعی مدلهای موجود را به کار میگیرد. در دسترس بودن و دسترسی پذیری مدلهای پایه قدرتمند منجر به سه عامل میشود که در کنار هم، شرایط ایدهآلی برای رشد سریع مهندسی هوش مصنوعی به عنوان یک رشته ایجاد میکنند:
عامل ۱: قابلیتهای هوش مصنوعی همهمنظوره (General-purpose AI capabilities)
مدلهای پایه قدرتمند هستند نه فقط به این که میتوانند وظایف موجود را بهتر انجام دهند، بلکه به این دلیل که میتوانند وظایف بیشتری را انجام دهند. برنامههای کاربردی که قبلاً غیرممکن تصور میشد اکنون ممکن شدهاند، و برنامههای کاربردی که قبلاً به آنها فکر نشده بود در حال ظهور هستند. حتی برنامههای کاربردی که امروز غیرممکن به نظر میرسند ممکن است فردا ممکن شوند. این موضوع هوش مصنوعی را برای جنبههای بیشتری از زندگی مفید میسازد و به طور قابل توجهی هم کاربری و هم تقاضا برای برنامههای کاربردی هوش مصنوعی را افزایش میدهد.
برای مثال، از آنجایی که هوش مصنوعی اکنون میتواند به خوبی انسانها و گاهی حتی بهتر بنویسد، میتواند هر وظیفهای که نیازمند ارتباطات است را به طور کامل یا جزئی خودکارسازی کند - که تقریباً همه چیز را شامل میشود. از هوش مصنوعی برای نوشتن ایمیلها، پاسخ به درخواستهای مشتریان و توضیح قراردادهای پیچیده استفاده میشود. هر فردی با یک کامپیوتر به ابزارهایی دسترسی دارد که میتوانند فوراً تصاویر و ویدیوهای باکیفیت و سفارشیشده تولید کنند تا به ایجاد مطالب بازاریابی، ویرایش عکسهای پروفایل حرفهای، تصویرسازی مفاهیم هنری، مصورسازی کتابها و غیره کمک کنند. هوش مصنوعی حتی میتواند برای سنتز دادههای آموزشی، توسعه الگوریتمها و نوشتن کد استفاده شود، که همه اینها به آموزش مدلهای قدرتمندتر در آینده کمک خواهند کرد.
عامل ۲: افزایش سرمایهگذاریها در هوش مصنوعی (Increased AI investments)
موفقیت چتجیپیتی (ChatGPT) باعث افزایش شدید سرمایهگذاری در هوش مصنوعی شد، هم از سوی سرمایهگذاران خطرپذیر و هم از سوی enterprises (شرکتهای بزرگ). از آنجایی که ساخت برنامههای کاربردی هوش مصنوعی ارزانتر و سریعتر به بازار عرضه میشوند، بازده سرمایهگذاری (ROI) برای هوش مصنوعی جذابتر شده است. شرکتها برای ادغام هوش مصنوعی در محصولات و فرآیندهای خود عجله دارند. مت راس، یک مدیر ارشد تحقیقات کاربردی در Scribd، به من گفت که هزینه تخمینی هوش مصنوعی برای موارد استفاده او از آوریل ۲۰۲۲ تا آوریل ۲۰۲۳ دو برابر کاهش یافته است.
تحقیقات گلدمن ساکس تخمین زد که سرمایهگذاری در هوش مصنوعی میتواند تا سال ۲۰۲۵ به ۱۰۰ میلیارد دلار در ایالات متحده و ۲۰۰ میلیارد دلار در سطح جهانی نزدیک شود. هوش مصنوعی اغلب به عنوان یک مزیت رقابتی ذکر میشود. FactSet دریافت که از هر سه شرکت در شاخص S&P 500، یک شرکت در تماسهای درآمدی (earnings calls) خود برای سهماهه دوم سال ۲۰۲۳ به هوش مصنوعی اشاره کرده است - سه برابر بیشتر از سال قبل. شکل ۱-۵ تعداد شرکتهای S&P 500 که از سال ۲۰۱۸ تا ۲۰۲۳ در تماسهای درآمدی خود به هوش مصنوعی اشاره کردهاند را نشان میدهد.
طبق WallStreetZen، شرکتهایی که در تماسهای درآمدی خود به هوش مصنوعی اشاره کردند، شاهد افزایش بیشتر قیمت سهام خود نسبت به آن که اشاره نکردند بودند: به طور متوسط ۴.۶٪ افزایش در مقایسه با ۲.۴٪. مشخص نیست که این رابطه علّی (causation) است (هوش مصنوعی این شرکتها را موفقتر میکند) یا همبستگی (correlation) (شرکتها موفق هستند زیرا سریعاً خود را با فناوریهای جدید تطبیق میدهند).
عامل ۳: مانع ورود کم برای ساخت برنامههای کاربردی هوش مصنوعی (Low entrance barrier to building AI applications)
رویکرد مدل به عنوان سرویس (Model as a Service) که توسط اوپنایآی و سایر ارائهدهندگان مدل محبوب شده است، به کارگیری هوش مصنوعی برای ساخت برنامهها را آسانتر میکند. در این رویکرد، مدلها از طریق APIها در معرض استفاده قرار میگیرند که queries (پرسوجوهای) کاربر را دریافت کرده و خروجیهای مدل را برمیگردانند. بدون این APIها، استفاده از یک مدل هوش مصنوعی مستلزم داشتن زیرساخت میزبانی و سرویسدهی آن مدل است. این APIها به شما امکان دسترسی به مدلهای قدرتمند را تنها با فراخوانیهای API تککلمهای میدهند.
نه تنها آن، هوش مصنوعی همچنین ساخت برنامههای کاربردی با حداقل کدنویسی را ممکن میسازد. اول، هوش مصنوعی میتواند برای شما کد بنویسد و به افراد بدون پیشینه مهندسی نرمافزار اجازه دهد تا به سرعت ایدههای خود را به کد تبدیل کرده و آن را در مقابل کاربران خود قرار دهند. دوم، شما میتوانید با این مدلها به زبان انگلیسی ساده (plain English) کار کنید، به جای این که مجبور به استفاده از یک زبان برنامهنویسی باشید. هر کسی، و واقعاً هر کسی، اکنون میتواند برنامههای کاربردی هوش مصنوعی توسعه دهد.
به دلیل منابعی که برای توسعه مدلهای پایه لازم است، این فرآیند فقط برای شرکتهای بزرگ (گوگل، متا، مایکروسافت، بایدو، تنسنت)، دولتها (ژاپن، امارات متحده عربی) و استارتآپهای بلندپرواز و دارای بودجه کافی (اوپنایآی، Anthropic، Mistral) امکانپذیر است. سام آلتمن، مدیرعامل اوپنایآی، در مصاحبهای در سپتامبر ۲۰۲۲ گفت که بزرگترین فرصت برای اکثریت قریب به اتفاق مردم، تطبیق این مدلها برای برنامههای کاربردی خاص خواهد بود.
دنیا به سرعت این فرصت را پذیرفته است. مهندسی هوش مصنوعی به سرعت به عنوان یکی از سریعالرشدترین رشتههای مهندسی - و به احتمال زیاد سریعالرشدترین آنها - ظهور کرده است. ابزارهای مهندسی هوش مصنوعی سریعتر از هر ابزار مهندسی نرمافزار قبلی در حال جذب توجه هستند. در عرض تنها دو سال، چهار ابزار منبع باز مهندسی هوش مصنوعی (AutoGPT, Stable Diffusion Web UI, LangChain, Ollama) توانستهاند ستارههای بیشتری در گیتهاب نسبت به بیتکوین جمعآوری کنند. آنها در مسیری هستند که حتی از محبوبترین فریمورکهای توسعه وب، از جمله React و Vue، از نظر تعداد ستاره پیشی بگیرند. شکل ۱-۶ رشد ستارههای گیتهاب ابزارهای مهندسی هوش مصنوعی را در مقایسه با بیتکوین، Vue و React نشان میدهد.
یک نظرسنجی لینکدین از آگوست ۲۰۲۳ نشان میدهد که تعداد متخصصانی که عباراتی مانند “هوش مصنوعی مولد (Generative AI)”، “ChatGPT”، “ (Prompt Engineering)” و “Prompt Crafting” را به پروفایل خود اضافه کردهاند به طور متوسط ۷۵٪ در هر ماه افزایش یافته است. ComputerWorld اعلام کرد که “آموزش رفتار به هوش مصنوعی سریعالرشدترین مهارت شغلی است”.
چرا اصطلاح “مهندسی هوش مصنوعی”؟
اصطلاحات زیادی برای توصیف فرآیند ساخت برنامههای کاربردی بر روی مدلهای پایه استفاده میشود، از جمله مهندسی ML، MLOps، AIOps، LLMOps و غیره. چرا من برای این کتاب “مهندسی هوش مصنوعی” را انتخاب کردم؟
من اصطلاح مهندسی ML را انتخاب نکردم زیرا، همانطور که در بخش “مهندسی هوش مصنوعی در مقابل مهندسی ML” در صفحه ۳۹ بحث خواهد شد، کار با مدلهای پایه در چندین جنبه مهم با کار با مدلهای ML سنتی تفاوت دارد. اصطلاح مهندسی ML برای نشان دادن این تمایز کافی نخواهد بود. با این حال، مهندسی ML یک اصطلاح عالی برای در بر گرفتن هر دو فرآیند است.
من تمام اصطلاحاتی که به “Ops” ختم میشوند را انتخاب نکردم زیرا، در حالی که مؤلفههای عملیاتی (operational) در این فرآیند وجود دارند، تمرکز بیشتر بر روی مهندسی مدلهای پایه برای انجام آنچه شما میخواهید است.
در نهایت، من از ۲۰ نفر که در حال توسعه برنامههای کاربردی بر روی مدلهای پایه بودند نظرسنجی کردم که از چه اصطلاحی برای توصیف کاری که انجام میدهند استفاده میکنند. اکثر people مهندسی هوش مصنوعی را ترجیح دادند. من تصمیم گرفتم که نظر people را بپذیرم.
جامعه به سرعت در حال گسترش مهندسین هوش مصنوعی، خلاقیت قابل توجهی با طیف incredibleی از برنامههای کاربردی هیجانانگیز نشان داده است. بخش بعدی به بررسی برخی از رایجترین الگوهای کاربردی خواهد پرداخت.