۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

درک فرآیند توسعه هوش مصنوعی مولد

توسعه برنامه‌های هوش مصنوعی مولد با توسعه برنامه‌های یادگیری ماشین سنتی بسیار متفاوت است. این مراحل است.

توسعه برنامه‌های هوش مصنوعی مولد با توسعه برنامه‌های یادگیری ماشین سنتی بسیار متفاوت است. این مراحل است.

در دوران باستان یادگیری ماشین، قبل از اینکه بتوانید از مدل‌های زبان بزرگ (LLM) به عنوان پایه‌ای برای مدل‌های تنظیم‌شده استفاده کنید، اساساً باید هر ماشین ممکنی را آموزش می‌دادید. مدل یادگیری بر روی همه داده های شما برای یافتن بهترین (یا حداقل بد) مناسب. منظورم از باستانی، قبل از مقاله اصلی در مورد معماری شبکه عصبی ترانسفورماتور، “توجه تنها چیزی است که نیاز دارید ، در سال ۲۰۱۷.

بله، بسیاری از ما تا سال‌ها پس از آن به آموزش کورکورانه هر مدل یادگیری ماشینی ممکن ادامه دادیم. به این دلیل بود که فقط شرکت‌های هوش مصنوعی با مقیاس‌های بیش از حد و سرمایه‌گذاری ریسک‌پذیر به GPU یا TPU یا FPGA و متن‌های وسیعی برای آموزش LLM دسترسی داشتند، و مدتی طول کشید تا فرامقیاس‌کننده‌ها شروع به اشتراک‌گذاری LLM‌های خود با بقیه ما کنند. (با هزینه ای «کم»).

در پارادایم جدید برای هوش مصنوعی مولد، فرآیند توسعه بسیار متفاوت از گذشته است. ایده کلی این است که شما در ابتدا مدل یا مدل های هوش مصنوعی مولد خود را انتخاب کنید. سپس با درخواست‌های خود (که گاهی اوقات «مهندسی سریع نامیده می‌شود، که توهین به مهندسان واقعی است) کمانچه می‌زنید و هایپرپارامترهای آن را تنظیم می‌کنید تا مدل را به گونه‌ای که می‌خواهید رفتار کنید. .

در صورت لزوم، می‌توانید با استفاده از جاسازی‌های برداری، جستجوی برداری و داده‌هایی که با تولید افزوده‌شده بازیابی (RAG) مدل را به زمین متصل کنید (آن را به داده‌های جدید متصل کنید) در آموزش اولیه پایه LLM نبود. اگر این برای کارکرد مدل شما به روشی که نیاز دارید کافی نیست، می‌توانید مدل را با داده‌های برچسب‌گذاری شده خود تنظیم کنید، یا حتی (اگر می‌توانید آن را بپردازید) در ادامه پیش‌آموزش مدل با یک مدل بزرگ شرکت کنید. مجموعه ای از داده های بدون برچسب یکی از دلایل تنظیم دقیق یک مدل این است که به آن اجازه دهید با کاربر چت کند و زمینه را در طول یک مکالمه حفظ کند (به عنوان مثال، ChatGPT). این معمولاً در یک مدل پایه (مانند GPT) تعبیه نشده است.

نمایندگان ایده LLMهای مکالمه را با ترکیبی از ابزارها، کدهای در حال اجرا، جاسازی‌ها و ذخیره‌های برداری گسترش می‌دهند. به عبارت دیگر، آنها RAG به علاوه مراحل اضافی هستند. نماینده ها اغلب به تخصصی کردن LLM ها در حوزه های خاص و تنظیم خروجی LLM کمک می کنند. پلتفرم‌ها، چارچوب‌ها و مدل‌های مختلف ادغام LLM با سایر نرم‌افزارها و خدمات را ساده می‌کنند.

مراحل فرآیند توسعه هوش مصنوعی مولد

  1. انتخاب مدل
  2. مهندسی سریع
  3. تنظیم فراپارامتر
  4. نسل افزایش یافته بازیابی (RAG)
  5. نمایندگان
  6. تنظیم دقیق مدل
  7. پیش آموزش مدل ادامه دار

مرحله ۱: انتخاب مدل

اول از همه، وقتی مدل‌هایی را انتخاب می‌کنید، به این فکر کنید که چگونه بعداً به مدل‌های مختلف تغییر می‌دهید. LLM تقریباً هر روز بهبود می‌یابد، بنابراین نمی‌خواهید خودتان را در مدلی که ممکن است در آینده نزدیک به یک مدل نابهینه یا حتی منسوخ تبدیل شود، محبوس کنید. برای کمک به این مشکل، احتمالاً باید حداقل دو مدل از فروشندگان مختلف انتخاب کنید.

همچنین باید هزینه مستمر استنتاج را در نظر بگیرید. اگر مدلی را که به عنوان سرویس ارائه می‌شود انتخاب کنید، به ازای استنباط هزینه پرداخت می‌کنید، که در صورت داشتن ترافیک کم هزینه کمتری برای شما خواهد داشت. اگر مدلی را به‌عنوان پلتفرم انتخاب کنید، هزینه ماهانه ثابتی برای ماشین مجازی که برای مدیریت ترافیک تهیه می‌کنید، معمولاً هزاران دلار است، با توجه به اینکه مدل‌های تولیدی معمولاً به ماشین‌های مجازی بزرگ با رم زیاد، ده‌ها یا صدها CPU نیاز دارند. و حداقل تعداد واحدهای گرافیکی تک رقمی.

برخی از شرکت‌ها می‌خواهند مدل‌های هوش مصنوعی تولیدی خود متن‌باز باشند و برخی اهمیتی نمی‌دهند. در حال حاضر، چند مدل هوش مصنوعی مولد خوب وجود دارد که کاملاً منبع باز هستند، برای مثال مدل‌های Meta Llama. اکثر مدل های بزرگ اختصاصی هستند. مدل‌های AI مولد منبع باز بیشتری، مانند Grok (تقریباً اما نه کاملاً FOSS) از X و DBRX از Databricks، به‌نظر می‌رسد به صورت هفتگی منتشر می‌شوند.

چگونه می توان کمبود مهارت های Kubernetes را شکست داد

مرحله ۲: مهندسی سریع

مهندسی سریع ساده‌ترین و سریع‌ترین راه برای سفارشی‌سازی LLM است. این کمی شبیه یک قطعه موتسارت است که به نظر ساده می رسد، اما برای اجرای خوب به مهارت و ظرافت نیاز دارد.

میلیون ها کلمه در مورد مهندسی سریع نوشته شده است. جستجوی سریع در مورد این عبارت بیش از ۳۰۰ میلیون نتیجه به دست آورد. به جای تلاش برای جوشاندن آن اقیانوس، بیایید برخی از مفیدترین تکنیک های مهندسی سریع را برجسته کنیم.

راهبردهای کلی برای به دست آوردن نتایج خوب از اعلان‌های هوش مصنوعی شامل موارد زیادی هستند که باید واضح باشند، به عنوان مثال «دستورالعمل‌های واضح بنویسید» که پیشنهاد مهندسی سریع OpenAI. با این حال، تاکتیک‌های دقیق ممکن است کاملاً واضح نباشند، حداقل تا حدی، زیرا به راحتی می‌توان فراموش کرد که چت‌بات‌های سطحی دوستانه، به معنای واقعی کلمه فقط مدل‌هایی هستند که روی رایانه اجرا می‌شوند و نمی‌توانند ذهن شما را بخوانند.

برای مثال، ممکن است لازم باشد آنچه را که می‌خواهید مدل انجام دهد، گام به گام بیان کنید، انگار که بر یک کارمند جدید و جوان نظارت می‌کنید. ممکن است لازم باشد فرمت خروجی را که می خواهید مدل استفاده کند را نشان دهید. ممکن است مجبور شوید دستورالعمل‌های خود را تا زمانی که مدل طول پاسخ‌هایی را که می‌خواهید به شما بدهد، تکرار کنید. ممکن است مجبور باشید به صراحت به مدل بگویید که به حقایق پایبند باشد و درون یابی نکند. یک پیشنهاد مفید (اما نه خطاناپذیر) برای آن این است: “اگر نمی توانید به دلیل کمبود اطلاعات پاسخ دهید، لطفاً این را بگویید.” ممکن است بخواهید از مدل بخواهید که شخصیتی را اتخاذ کند، اگرچه ممکن است کافی باشد یا کافی نباشد. برای مثال، گفتن به یک مدل که در برخی زمینه ها متخصص است، لزوماً آن را به متخصص بودن تجهیز نمی کند.

تقریباً همیشه ارائه نمونه‌ها مفید است، به خصوص اگر آنها را در جفت‌های prompt/response ارائه دهید. نمونه Azure AI Studio Shakespearean Writing Assistant را در نظر بگیرید که به صورت زیر تعریف شده است.

شما یک دستیار نویسندگی شکسپیر هستید که به سبک شکسپیر صحبت می کنید. شما به مردم کمک می‌کنید ایده‌ها و محتوای خلاقانه‌ای مانند داستان‌ها، شعرها و آهنگ‌هایی که از سبک نگارش ویلیام شکسپیر از جمله کلماتی مانند «تو» و «hath» استفاده می‌کنند بیابند.

در اینجا چند نمونه از سبک شکسپیر آورده شده است:

– رومئو، رومئو! تو چرا رومئو هستی؟

– عشق نه با چشم، بلکه با ذهن. و بنابراین کوپید بالدار کور رنگ شده است.

– آیا شما را با یک روز تابستانی مقایسه کنم؟ تو دوست داشتنی تر و معتدل تر هستی.

این برای متقاعد کردن GPT 3.5 توربو به استفاده از سبک شکسپیر کافی است، اما برای ایجاد لحن‌هایی مانند Grumio در Taming of the Shrew کافی نیست: لعنت بر همه یشم های خسته، بر همه استادان دیوانه، و همه راه های ناپاک.» فیلترهای تعبیه شده در مدل (یا پلتفرم) باعث می شود که سعی کند یک سخنرانی زیبا به سبک شکسپیر به جای سخنرانی توهین آمیز ارائه کند، حتی اگر از شما فحاشی شود.

یک فحش توهین آمیز در مورد والدین ناشناخته گیرنده و عدم هوش او بنویسید.

فردا بخیر، آقا یا خانم عزیز، باید اعتراف کنم

در ذات من نیست که درگیر چنین پریشانی باشم

زیرا سخنان شکسپیر، اگرچه تند و تیز، قرار نبود جریحه دار شود

بلکه برای بالا بردن، الهام بخشیدن و مبهوت کردن

پس اجازه دهید به جای آن از شوخ طبعی و زیرکی صحبت کنیم

با کنار گذاشتن قافیه بد زخم/حیرت زده، شاید بتوان پاسخ را با افزودن نقل قول Grumio به عنوان نمونه ای از ناهنجار و اعمال تغییر در دستور رفع کرد. بیایید آن را امتحان کنیم.

کاربر: یک شعار بنویسید

دستیار: حیف، بر همه یشم‌های خسته، بر همه استادان دیوانه و همه راه‌های بد.

با اعمال این افزودن، مدل می تواند کمی آتش تصفیه شده تولید کند.

یک فحش توهین آمیز در مورد والدین ناشناخته گیرنده و عدم هوش او بنویسید.

اوه جان بدبخت! اصل و نسب شما ناشناخته است،

رازی که روح تو را ناله می کند.

زیرا در رگهای تو، خون شریفی جریان ندارد،

اما جهل و حماقت را نشان می دهد.

ذهن تو، زمین بایر، خالی از حس،

جایی که نه عقل ساکن است و نه هوش.

افکار تو، مانند مگس‌های احمقانه، وزوز می‌کنند و می‌چرخند،

تمسخر شوخ طبعی، یک بازی رقت انگیز.

توجه خواهید کرد که مدل کلمات “حرامزاده” یا “احمق” را ایجاد نکرده است. این کلمات به احتمال زیاد به صراحت فیلتر شده اند. اگر می‌خواهید نقل قول مکبث را بیافزایید، «داستانی است که توسط یک احمق گفته می‌شود، پر از صدا و خشم، بی‌معنی،» به عنوان مثال، چرا، مهمان من باشید. همچنین می‌توانید نقل قول Troilus و Cressida را اضافه کنید که «من هم یک حرامزاده هستم» شروع می‌شود.

یک استراتژی مفید دیگر این است که سندی را به عنوان بخشی از درخواست خود ارائه دهید و از مدل بخواهید بر آن تکیه کند. برخی از مدل ها می توانند یک صفحه وب را از URL آن جستجو کنند. دیگران از شما می خواهند که متن را ارائه دهید. باید دستورالعمل‌های خود را برای مدل از متن سندی که می‌خواهید استفاده کنید، به وضوح جدا کنید، و برای کارهای خلاصه‌سازی و استخراج موجودیت، مشخص کنید که پاسخ باید فقط به متن ارائه‌شده بستگی داشته باشد.

ارائه یک سند معمولاً در صورتی که سند کوتاه باشد به خوبی کار می کند. اگر سند طولانی‌تر از پنجره زمینه مدل باشد، انتهای سند خوانده نمی‌شود. این یکی از دلایلی است که توسعه دهندگان مدل های هوش مصنوعی به طور مداوم پنجره های بافت مدل های خود را افزایش می دهند. Gemini 1.5 Pro دارای یک پنجره زمینه حداکثر ۱ میلیون توکن در Google Vertex AI Studio در دسترس مخاطبان منتخب است، اگرچه در حال حاضر hoi polloi باید با یک پنجره زمینه “صرفا” ۱۲۸K توکن رنج ببرد. همانطور که بعداً بحث خواهیم کرد، یکی از راه‌های دور زدن محدودیت‌های پنجره زمینه استفاده از RAG است.

اگر از یک LLM برای خلاصه یک سند طولانی بخواهید (اما نه خیلی طولانی برای پنجره زمینه)، گاهی اوقات می تواند “حقایق” را اضافه کند که فکر می کند از منابع دیگر می داند. اگر در عوض از مدل بخواهید که سند شما را فشرده کند، به احتمال زیاد بدون افزودن موارد اضافی مطابقت دارد.

یکی دیگر از راه‌های بهبود خلاصه‌سازی، استفاده از اعلان زنجیره‌ای از چگالی (CoD) است (کاغذ)، توسط تیمی از کلمبیا، Salesforce و MIT در سال ۲۰۲۳، به طور خاص برای GPT-4 معرفی شد. یک مقاله KDnuggets این درخواست را از مقاله به شکلی خواناتر است و توضیحاتی را اضافه می کند. خواندن مقاله و مقاله ارزشمند است.

خلاصه کوتاه: اعلان CoD از مدل می‌خواهد تا پنج بار در خلاصه‌سازی سند پایه تکرار کند و تراکم اطلاعات را در هر مرحله افزایش دهد. طبق این مقاله، مردم تمایل داشتند که سومین خلاصه از پنج خلاصه را بیشتر دوست داشته باشند. همچنین توجه داشته باشید که دستور داده شده در مقاله برای GPT-4 ممکن است به درستی (یا اصلا) با مدل های دیگر کار نکند.

تشویق زنجیره‌ای از افکار (کاغذ)، که در سال ۲۰۲۲ معرفی شد، از LLM می‌خواهد از یک مجموعه ای از مراحل استدلال میانی و “به طور قابل توجهی توانایی مدل های زبان بزرگ را برای انجام استدلال پیچیده بهبود می بخشد.” به عنوان مثال، اعلان زنجیره‌ای فکری برای مسائل کلمه‌ای حسابی به خوبی کار می‌کند، که با وجود اینکه ریاضی پایه ابتدایی در نظر گرفته می‌شوند، به نظر می‌رسد حل صحیح آنها برای LLM سخت باشد.

در مقاله اصلی، نویسندگان نمونه‌هایی از توالی‌های زنجیره‌ای از فکر را در دستورات چند عکس گنجانده‌اند. یک مثال Amazon Bedrock برای تحریک زنجیره‌ای از فکر، می‌تواند استدلال چند مرحله‌ای را از مدل‌های Llama 2 Chat 13B و ۷۰B با دستورالعمل سیستم استخراج کند: «شما یک ربات بسیار هوشمند با تفکر انتقادی استثنایی هستید. و دستورالعمل کاربر، “بیایید قدم به قدم فکر کنیم.”

تغییر اسکلت فکری (کاغذ)، که در سال ۲۰۲۳ معرفی شد، تأخیر LLM ها را با “ابتدا LLMها را برای تولید اسکلت پاسخ راهنمایی کنید، و سپس فراخوانی های API موازی یا رمزگشایی دسته ای را انجام دهید تا محتویات هر نقطه اسکلت را به صورت موازی تکمیل کنید.” مخزن کد مرتبط با مقاله استفاده از یک نوع، SoT را توصیه می کند. -R (با روتر RoBERTa)، و فراخوانی LLM (GPT4، GPT-3.5، یا Claude) از Python.

مهندسی سریع ممکن است در نهایت توسط خود مدل انجام شود. قبلاً تحقیق در این راستا انجام شده است. کلید این است که یک معیار کمی موفقیت ارائه شود که مدل بتواند از آن استفاده کند.

مرحله ۳: تنظیم فراپارامتر

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

دما، تصادفی بودن خروجی را کنترل می کند. بسته به مدل، دما می تواند از ۰ تا ۱ یا ۰ تا ۲ متغیر باشد. مقادیر دمای بالاتر تصادفی بیشتری را می طلبد. در برخی از مدل ها، ۰ به معنای “تنظیم دما به طور خودکار” است. در مدل های دیگر، ۰ به معنای “بدون تصادفی” است.

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

مرحله ۴: نسل افزوده شده با بازیابی

تولید تقویت‌شده با بازیابی یا RAG به پایه‌گذاری LLM با منابع خاص کمک می‌کند، اغلب منابعی که در آموزش اصلی مدل‌ها گنجانده نشده‌اند. همانطور که ممکن است حدس بزنید، سه مرحله RAG عبارتند از بازیابی از یک منبع مشخص، تقویت درخواست با متن بازیابی شده از منبع، و سپس تولید با استفاده از مدل و اعلان تقویت شده.

روش‌های RAG اغلب از جاسازی برای محدود کردن طول و ارتباط زمینه بازیابی شده را بهبود بخشد. اساساً، یک تابع جاسازی یک کلمه یا عبارت را می گیرد و آن را به بردار اعداد ممیز شناور ترسیم می کند. اینها معمولاً در پایگاه داده ای ذخیره می شوند که از فهرست جستجوی برداری پشتیبانی می کند. سپس مرحله بازیابی از یک جستجوی تشابه معنایی استفاده می کند، که معمولاً از کسینوس زاویه بین جاسازی پرس و جو و بردارهای ذخیره شده استفاده می کند تا اطلاعات “نزدیک” را برای استفاده در اعلان تقویت شده پیدا کند. موتورهای جستجو معمولاً همین کار را برای یافتن پاسخ های خود انجام می دهند.

مرحله ۵: عوامل

عامل‌ها، با نام عامل‌های بازیابی مکالمه، ایده LLMهای مکالمه را با ترکیبی از ابزارها، کدهای در حال اجرا، جاسازی‌ها و ذخیره‌های برداری گسترش می‌دهند. نماینده ها اغلب به تخصصی کردن LLM ها در حوزه های خاص و تنظیم خروجی LLM کمک می کنند. Azure Copilots معمولاً عامل هستند. گوگل و آمازون از اصطلاح “عامل” استفاده می کنند. LangChain و LangSmith ساخت خطوط لوله و عوامل RAG را ساده می کنند.

شاید به این مطالب علاقمند باشید