سفارشی سازی همراهان کدنویسی برای سازمان ها | خدمات وب آمازون

سفارشی سازی همراهان کدنویسی برای سازمان ها | خدمات وب آمازون

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

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

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

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

  1. اسناد یا اطلاعات پراکنده برای کتابخانه‌های داخلی و APIها که توسعه‌دهندگان را مجبور می‌کند تا زمانی را صرف بررسی کدهای نوشته‌شده قبلی برای تکرار استفاده کنند.
  2. عدم آگاهی و سازگاری در اجرای شیوه‌ها، سبک‌ها و الگوهای کدنویسی خاص سازمانی.
  3. استفاده ناخواسته از کدها و API های منسوخ شده توسط توسعه دهندگان.

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

چالش های طراحی

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

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

نحوه شخصی سازی

در سطح بالا، دو نوع تکنیک سفارشی‌سازی ممکن وجود دارد: تولید تقویت‌شده بازیابی (RAG) و تنظیم دقیق (FT).

  • نسل افزوده بازیابی: RAG تکه‌های کد منطبقی را در یک مخزن پیدا می‌کند که شبیه به یک قطعه کد داده شده است (به عنوان مثال، کدی که بلافاصله قبل از مکان‌نما در IDE قرار می‌گیرد) و اعلان مورد استفاده برای پرس‌وجو از LLM را با این تکه‌های کد منطبق تقویت می‌کند. این اعلان را غنی می کند تا به مدل کمک کند تا کد مرتبط تری تولید کند. چند تکنیک در این زمینه در ادبیات بررسی شده است. دیدن بازیابی-افزایش نسل برای وظایف NLP دانش فشرده, واقعی, kNN-LM و یکپارچهسازی با سیستمعامل.

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

  • تنظیم دقیق: FT یک LLM از قبل آموزش دیده را می گیرد و آن را بیشتر بر روی یک پایگاه کد خاص و کوچکتر (در مقایسه با مجموعه داده های پیش آموزشی) آموزش می دهد تا آن را برای مخزن مناسب تطبیق دهد. تنظیم دقیق وزن های LLM را بر اساس این آموزش تنظیم می کند و آن را بیشتر با نیازهای منحصر به فرد سازمان تنظیم می کند.

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

بازیابی نسل افزوده

چند مرحله در RAG وجود دارد:

نمایه سازی

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

گردش کار مدیر

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.
جستجوی متنی

مجموعه ای از کدهای ایندکس شده را بر اساس چند خط کد بالای مکان نما جستجو کنید و قطعه کد مربوطه را بازیابی کنید. این بازیابی می تواند با استفاده از الگوریتم های مختلف اتفاق بیفتد. این انتخاب ها ممکن است شامل موارد زیر باشد:

  • کیسه کلمات (BM25) - یک تابع بازیابی کیسه‌ای از کلمات که مجموعه‌ای از تکه‌های کد را بر اساس فرکانس‌های عبارت جستجو و طول قطعه کد رتبه‌بندی می‌کند.

بازیابی مبتنی بر BM25

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

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

بازیابی معنایی

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

BM25 بر تطابق واژگانی تمرکز دارد. بنابراین، جایگزین کردن "افزودن" با "حذف" ممکن است امتیاز BM25 را بر اساس شرایط موجود در پرس و جو تغییر ندهد، اما عملکرد بازیابی شده ممکن است برعکس آنچه مورد نیاز است باشد. در مقابل، بازیابی معنایی بر عملکرد قطعه کد متمرکز است، حتی اگر نام متغیرها و API ممکن است متفاوت باشد. به طور معمول، ترکیبی از BM25 و بازیابی معنایی می تواند به خوبی با هم کار کند تا نتایج بهتری ارائه دهد.

استنتاج افزوده شده

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

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

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

تنظیم دقیق:

تنظیم دقیق یک مدل زبان برای انجام شده است انتقال یادگیری که در آن وزن های یک مدل از پیش آموزش دیده بر روی داده های جدید آموزش داده می شود. هدف این است که دانش مناسب را از مدلی که قبلاً در یک مجموعه بزرگ آموزش دیده است، حفظ کنیم و دانش جدید را از مجموعه جدید اصلاح کنیم، جایگزین کنیم یا اضافه کنیم - در مورد ما، یک پایگاه کد جدید. به سادگی آموزش بر روی یک پایگاه کد جدید منجر به فراموش کردن فاجعه بار. برای مثال، مدل زبان ممکن است دانش خود را در مورد ایمنی "فراموش کنید". یا API هایی که تا به امروز به ندرت در پایگاه کد سازمانی استفاده شده اند. تکنیک های مختلفی مانند تکرار را تجربه کنید, GEMو PP-TF که برای رفع این چالش به کار گرفته شده اند.

تنظیم دقیق

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

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

با وجود مزایای استفاده از LLM های اختصاصی برای تولید کد در مخازن خصوصی، هزینه ها می تواند برای سازمان های کوچک و متوسط ​​گران باشد. این به این دلیل است که منابع محاسباتی اختصاصی ضروری هستند حتی اگر با توجه به اندازه تیم ها از آنها استفاده ناکافی شود. یکی از راه‌های دستیابی به کارایی هزینه، ارائه چندین مدل در یک محاسبات است (به عنوان مثال، SageMaker چند اجاره). با این حال، مدل‌های زبان به یک یا چند GPU اختصاصی در چندین ناحیه برای رسیدگی به محدودیت‌های تاخیر و توان عملیاتی نیاز دارند. از این رو، چند اجاره میزبانی مدل کامل در هر GPU غیر ممکن است.

ما می توانیم با ارائه خدمات به چندین مشتری در یک محاسبات با استفاده از کوچک بر این مشکل غلبه کنیم آداپتورها به LLM. تکنیک های تنظیم دقیق پارامتر کارآمد (PEFT) مانند تنظیم سریع, تنظیم پیشوندو سازگاری با رتبه پایین (LoRA) برای کاهش هزینه های آموزشی بدون از دست دادن دقت استفاده می شود. به ویژه، LoRA در دستیابی به دقت مشابه (یا بهتر) نسبت به تنظیم دقیق مدل کامل، موفقیت بزرگی را تجربه کرده است. ایده اصلی طراحی یک ماتریس با رتبه پایین است که سپس با وزن ماتریس اصلی لایه های هدف مدل به ماتریس ها اضافه می شود. به طور معمول، این آداپتورها سپس با وزنه های مدل اصلی برای خدمت ادغام می شوند. این منجر به همان اندازه و معماری شبکه عصبی اصلی می شود. با جدا نگه داشتن آداپتورها، می توانیم همان مدل پایه را با بسیاری از آداپتورهای مدل ارائه دهیم. این کاهش مقیاس را به مشتریان کوچک و متوسط ​​ما بازمی گرداند.

سازگاری با رتبه پایین (LoRA)

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

اندازه گیری اثربخشی سفارشی سازی

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

همچنین می‌توان سودمندی را با کمی کردن تعداد دفعات فراخوانی APIهای داخلی توسط سفارشی‌سازی و مقایسه آن با فراخوان‌های موجود در منبع از پیش موجود اندازه‌گیری کرد. البته، درست کردن هر دو جنبه برای تکمیل موفقیت آمیز مهم است. برای رویکرد سفارشی‌سازی خود، ما یک معیار سفارشی طراحی کرده‌ایم که به عنوان شاخص کیفیت سفارشی‌سازی (CQI) شناخته می‌شود، یک معیار کاربرپسند واحد بین 1 تا 10. معیار CQI سودمندی پیشنهادات مدل سفارشی‌شده را در مقایسه با کد نشان می‌دهد. پیشنهادات با مدل عمومی عمومی

خلاصه

ما قابلیت سفارشی‌سازی Amazon CodeWhisperer را بر اساس ترکیبی از تکنیک‌های فنی پیشرو مورد بحث در این پست وبلاگ ایجاد کردیم و آن را با مطالعات کاربر در مورد بهره‌وری توسعه‌دهنده، انجام‌شده توسط Persistent Systems ارزیابی کردیم. در این دو مطالعه که توسط AWS انجام شد، از توسعه دهندگان خواسته شد تا یک نرم افزار پزشکی در جاوا ایجاد کنند که نیاز به استفاده از کتابخانه های داخلی آنها دارد. در مطالعه اول، توسعه دهندگان بدون دسترسی به CodeWhisperer (به طور متوسط) 8.2 ساعت برای تکمیل کار وقت صرف کردند، در حالی که کسانی که از CodeWhisperer (بدون سفارشی سازی) استفاده کردند، این کار را 62 درصد سریعتر (به طور متوسط) 3.1 ساعت انجام دادند.

در مطالعه دوم با مجموعه‌ای متفاوت از گروه‌های توسعه‌دهنده، توسعه‌دهندگانی که از CodeWhisperer استفاده می‌کردند و با استفاده از پایگاه کد خصوصی‌شان سفارشی‌سازی شده بود، کار را به طور متوسط ​​در 2.5 ساعت انجام دادند، یعنی 28 درصد سریع‌تر از کسانی که از CodeWhisperer بدون سفارشی‌سازی استفاده می‌کردند و کار را در 3.5 ~ انجام دادند. ساعت به طور متوسط ما قویاً معتقدیم که ابزارهایی مانند CodeWhisperer که برای پایگاه کد شما سفارشی شده‌اند، نقش کلیدی در افزایش بیشتر بهره‌وری توسعه‌دهنده دارند و توصیه می‌کنیم آن را اجرا کنید. برای اطلاعات بیشتر و شروع به کار به سایت مراجعه کنید صفحه Amazon CodeWhisperer.


درباره نویسندگان

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.کینگ سان یک دانشمند کاربردی ارشد در آزمایشگاه‌های هوش مصنوعی AWS است و روی AWS CodeWhisperer، یک دستیار برنامه‌نویسی مولد مبتنی بر هوش مصنوعی کار می‌کند. علایق تحقیقاتی او در پردازش زبان طبیعی، AI4Code و هوش مصنوعی مولد است. در گذشته، او روی چندین سرویس مبتنی بر NLP مانند Comprehend Medical، یک سیستم تشخیص پزشکی در Amazon Health AI و سیستم ترجمه ماشینی در Meta AI کار کرده بود. او دکترای خود را از ویرجینیا تک در سال 2017 دریافت کرد.

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.آرش فراهانی یک دانشمند کاربردی با Amazon CodeWhisperer است. علایق فعلی او در هوش مصنوعی، جستجو و شخصی سازی است. آرش مشتاق ساخت راه حل هایی است که نقاط درد توسعه دهنده را برطرف می کند. او روی چندین ویژگی در CodeWhisperer کار کرده است و راه‌حل‌های NLP را در جریان‌های کاری داخلی مختلف معرفی کرده است که همه توسعه‌دهندگان آمازون را تحت تأثیر قرار می‌دهد. او دکترای خود را در سال 2017 از دانشگاه ایلینویز در اوربانا-شامپین دریافت کرد.

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.شیائوفی ما مدیر علوم کاربردی در آزمایشگاه های هوش مصنوعی AWS است. او در سال 2016 به عنوان یک دانشمند کاربردی در سازمان SCOT به آمازون پیوست و سپس در سال 2018 در آزمایشگاه هوش مصنوعی AWS در آمازون کندرا کار کرد. Xiaofei به عنوان مدیر علمی چندین سرویس از جمله Kendra، Contact Lens و اخیرا CodeWhisperer و CodeGuru Security خدمت کرده است. علایق تحقیقاتی او در زمینه AI4Code و پردازش زبان طبیعی است. او دکترای خود را از دانشگاه مریلند، کالج پارک در سال 2010 دریافت کرد.

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.مورالی کریشنا راماناتان یک دانشمند کاربردی اصلی در آزمایشگاه‌های هوش مصنوعی AWS است و AWS CodeWhisperer، یک همراه برنامه‌نویسی مولد مبتنی بر هوش مصنوعی را رهبری می‌کند. او مشتاق ساخت ابزارهای نرم افزاری و گردش کار است که به بهبود بهره وری توسعه دهندگان کمک می کند. در گذشته، او Piranha را ساخت، یک ابزار بازسازی خودکار برای حذف کد به دلیل قدیمی بودن پرچم‌ها و ابتکارات کیفیت کد در مهندسی Uber. او برنده جایزه هیئت علمی گوگل (2015)، جایزه مقاله ممتاز ACM SIGSOFT (ISSTA 2016) و جایزه موریس هالستد (پردو 2006) است. او در سال 2008 دکترای خود را در رشته علوم کامپیوتر از دانشگاه پردو دریافت کرد.

Customizing coding companions for organizations | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.رامش نالاپاتی یک دانشمند ارشد اصلی در آزمایشگاه‌های هوش مصنوعی AWS است و CodeWhisperer، یک همراه کدنویسی مولد مبتنی بر هوش مصنوعی و مدل‌های زبان بزرگ Titan در AWS را رهبری می‌کند. علایق او عمدتاً در زمینه پردازش زبان طبیعی و هوش مصنوعی تولیدی است. در گذشته، Ramesh رهبری علمی را در ارائه بسیاری از محصولات AWS مبتنی بر NLP مانند Kendra، Quicksight Q و Contact Lens ارائه کرده است. او سمت های تحقیقاتی را در استنفورد، CMU و IBM Research داشت و دکترای خود را دریافت کرد. در علوم کامپیوتر از دانشگاه ماساچوست آمهرست در سال 2006.

تمبر زمان:

بیشتر از آموزش ماشین AWS