۱۱. لایهٔ اپلیکیشن، و مهندس هوش مصنوعی در برابر مهندس فولاستک
وقتی همه از همان چند مدل استفاده میکنند، فرق محصول شما در لایهٔ اپلیکیشن ساخته میشود: ارزیابی، مهندسی پرامپت و رابط کاربری. همین لایه مهندسی هوش مصنوعی را به توسعهٔ فولاستک نزدیک کرده و ترتیب کار را برعکس کرده است.
تمایز در لایهٔ اپلیکیشن
در یادگیری ماشین سنتی، هر تیم با مدل اختصاصی خودش اپلیکیشن میساخت و کیفیت مدل وجه تمایزش بود. با مدل پایه، تیمهای زیادی از همان مدل استفاده میکنند؛ پس تمایز باید از فرایند توسعهٔ اپلیکیشن بیاید. لایهٔ توسعهٔ اپلیکیشن سه مسئولیت دارد: ارزیابی، مهندسی پرامپت و رابط هوش مصنوعی.
ارزیابی
ارزیابی یعنی کم کردن ریسک و پیدا کردن فرصت، و در کل فرایند تطبیق مدل لازم است: برای انتخاب مدل، سنجیدن پیشرفت، تصمیم گرفتن دربارهٔ آمادهٔ انتشار بودن اپلیکیشن، و پیدا کردن مشکلها و فرصتهای بهبود در محصول واقعی.
ارزیابی همیشه در یادگیری ماشین مهم بوده، ولی با مدل پایه به دلایل زیادی مهمتر است (فصل ۳). خلاصهاش: خروجی باز و تواناییهای گسترده. در کار بستهای مثل کشف تقلب، معمولاً جواب درستی هست که خروجی مدل را با آن مقایسه کنید؛ اگر فرق داشت، مدل اشتباه کرده. ولی برای یک چتبات، به هر پرامپت آنقدر جواب ممکن هست که ساختن فهرست کامل جوابهای درست ناممکن است.
زیاد بودن روشهای تطبیق هم ارزیابی را سختتر میکند: سیستمی که با یک روش بد کار میکند شاید با روش دیگری خیلی بهتر شود. ماجرای Gemini مثال روشنی است. وقتی Google در دسامبر ۲۰۲۳ Gemini را عرضه کرد، ادعا کرد در آزمون MMLU از ChatGPT بهتر است. ولی Gemini را با روشی از مهندسی پرامپت به اسم CoT@32 سنجیده بود — ۳۲ نمونه به Gemini نشان داده شده بود، در حالی که ChatGPT فقط ۵ نمونه دیده بود. وقتی به هر دو پنج نمونه نشان داده شد، ChatGPT بهتر بود:
| امتیاز MMLU | Gemini Ultra | Gemini Pro | GPT-4 | GPT-3.5 |
|---|---|---|---|---|
| با روش برگزیده | ۹۰٫۰۴٪ (CoT@32) | ۷۹٫۱۳٪ (CoT@8) | ۸۷٫۲۹٪ (CoT@32، از راه API) | ۷۰٪ (۵ نمونه) |
| با ۵ نمونه | ۸۳٫۷٪ | ۷۱٫۸٪ | ۸۶٫۴٪ (گزارششده) | — |
مهندسی پرامپت و ساخت زمینه
مهندسی پرامپت یعنی گرفتن رفتار دلخواه از مدل فقط از راه ورودی، بی تغییر وزنها. ماجرای Gemini اثرش را نشان میدهد: با یک روش دیگر مهندسی پرامپت، امتیاز MMLU مدل Gemini Ultra از ۸۳٫۷٪ به ۹۰٫۰۴٪ رسید.
فقط با پرامپت میشود کارهای شگفتانگیزی از مدل گرفت: دستور درست مدل را وادار میکند کار دلخواه را در قالب دلخواه انجام دهد. ولی مهندسی پرامپت فقط گفتن اینکه مدل چه کند نیست؛ دادن زمینه و ابزار لازم برای انجام آن کار هم هست. برای کارهای پیچیده با زمینهٔ بلند، شاید لازم شود یک سیستم مدیریت حافظه هم بدهید تا مدل تاریخچهاش را دنبال کند. فصل ۵ مهندسی پرامپت را میبیند و فصل ۶ ساخت زمینه را.
رابط هوش مصنوعی
یعنی ساختن رابطی که کاربر نهایی با آن با اپلیکیشن هوش مصنوعی کار کند. پیش از مدلهای پایه، فقط سازمانهایی که منابع ساختن مدل داشتند اپلیکیشن هوش مصنوعی میساختند، و این اپلیکیشنها معمولاً درون محصولهای موجودشان جا میگرفتند: کشف تقلب درون Stripe و Venmo و PayPal، سیستم پیشنهاددهنده درون Netflix و TikTok و Spotify.
با مدل پایه هر کسی میتواند اپلیکیشن هوش مصنوعی بسازد، و آن را یا بهشکل محصول مستقل عرضه کند یا درون محصول دیگران بگذارد. ChatGPT و Perplexity محصول مستقلاند؛ GitHub Copilot معمولاً افزونهای در VSCode است و Grammarly افزونهٔ مرورگر برای Google Docs؛ Midjourney هم از راه وباپ مستقلش در دسترس است و هم از راه Discord. رابطهایی که برای اپلیکیشنهای هوش مصنوعی محبوبتر میشوند:
- اپلیکیشن مستقل وب، دسکتاپ و موبایل (Streamlit، Gradio و Plotly Dash ابزارهای رایج ساختن وباپ هوش مصنوعیاند)
- افزونهٔ مرورگر که اجازه میدهد حین گشتوگذار سریع از مدل بپرسید
- چتبات درون پیامرسانهایی مثل Slack، Discord، WeChat و WhatsApp
- افزونه از راه APIهای محصولهایی مثل VSCode، Shopify و Microsoft 365 — همان APIهایی که ایجنتها هم برای کار با دنیا به کار میبرند (فصل ۶)
رابط گفتوگو رایجترین است، ولی رابط هوش مصنوعی میتواند صوتی باشد (دستیارهای صوتی) یا بدنمند (در واقعیت افزوده و مجازی). این رابطهای تازه یعنی راههای تازهٔ گرفتن بازخورد: در رابط گفتوگو، کاربر خیلی راحتتر به زبان طبیعی بازخورد میدهد، ولی بیرون کشیدن آن بازخورد سختتر است (فصل ۱۰).
| مسئولیت | ساختن با ML سنتی | ساختن با مدل پایه |
|---|---|---|
| رابط هوش مصنوعی | کماهمیتتر | مهم |
| مهندسی پرامپت | موضوعیت نداشت | مهم |
| ارزیابی | مهم | مهمتر |
مهندس هوش مصنوعی و مهندس فولاستک
تأکید بیشتر بر توسعهٔ اپلیکیشن، بهخصوص رابط کاربری، مهندسی هوش مصنوعی را به توسعهٔ فولاستک (کسی که هم بخش رو به کاربر را میسازد و هم سرور را) نزدیک کرده. ابزارهای هوش مصنوعی هم طوری طراحی میشوند که مهندسان فرانتاند را جذب کنند. یادگیری ماشین سنتی پایتونمحور بود و محبوبترین چارچوبهایش بیشتر API پایتونی داشتند. پایتون هنوز محبوب است، ولی پشتیبانی از جاوااسکریپت هم بیشتر میشود: LangChain.js، Transformers.js، کتابخانهٔ Node شرکت OpenAI و SDKSoftware Development Kitبستهٔ توسعهٔ نرمافزار هوش مصنوعی Vercel.
خیلی از مهندسان هوش مصنوعی از پیشینهٔ یادگیری ماشین سنتی میآیند، ولی روزبهروز بیشترشان از توسعهٔ وب و فولاستک میآیند. مزیت مهندس فولاستک تواناییاش در این است که ایده را سریع به دمو تبدیل کند، بازخورد بگیرد و تکرار کند.
در یادگیری ماشین سنتی معمولاً با جمع کردن داده و آموزش مدل شروع میکنید و ساختن محصول آخر از همه است. ولی حالا که مدلها آماده در دسترساند، میشود اول محصول را ساخت و فقط وقتی محصول امیدبخش بود، روی داده و مدل سرمایه گذاشت. در یادگیری ماشین سنتی توسعهٔ مدل و توسعهٔ محصول اغلب دو فرایند جدا بودند و در خیلی از سازمانها مهندس یادگیری ماشین بهندرت در تصمیمهای محصول دخیل بود؛ با مدل پایه، مهندس هوش مصنوعی خیلی بیشتر در ساختن خود محصول درگیر است. (Anton Bacaj به نویسنده گفته: «مهندسی هوش مصنوعی همان مهندسی نرمافزار است که مدلهای هوش مصنوعی هم به پشتهاش اضافه شده».)
جمعبندی فصل
این فصل دو هدف داشت: توضیح اینکه مهندسی هوش مصنوعی به لطف مدلهای پایه چطور به یک رشته تبدیل شد، و نمایی کلی از فرایند ساختن اپلیکیشن روی این مدلها. دیدیم مدل زبانی به لطف خودنظارتی به مدل زبانی بزرگ رسید، با افزودن وجههای دیگر داده مدل پایه شد، و مدل پایه مهندسی هوش مصنوعی را پدید آورد. کاربردهای موفق را برای کاربر شخصی و سازمانها دیدیم، پرسیدیم آیا اصلاً باید ساخت و با چه معیارهایی، و آخر سر پشتهٔ مهندسی هوش مصنوعی و تفاوتش با مهندسی یادگیری ماشین را.
کتاب اعتراف میکند سختترین چیزی که نمیشود روی کاغذ آورد، انرژی، خلاقیت و استعداد جمعی این جامعه است؛ آنقدر زیاد که بهروز ماندن ناممکن به نظر میرسد. یک دلخوشی این است که هوش مصنوعی در تجمیع اطلاعات خوب است و میتواند خبرهای تازه را برایمان خلاصه کند. ولی ابزار فقط تا حدی کمک میکند: هرچه یک حوزه شلوغتر باشد، داشتن یک چارچوب فکری برای پیمودنش مهمتر است. این دوره، مثل کتاب، میخواهد همان چارچوب را قدمبهقدم بسازد — از بلوک بنیادی همهچیز در فصل ۲ شروع میکنیم: خود مدل پایه.
خودآزمایی
مرور فلشکارتهای این درس
سه مسئولیت لایهٔ توسعهٔ اپلیکیشن؟
برای دیدن پاسخ کلیک کنید یا Space بزنید
کارت ۱ از ۵