استفاده از ژنراتور های کد مبتنی بر هوش مصنوعی توسط توسعه دهندگان به سرعت در حال افزایش است، از جمله سرویس های مورد استفاده عبارتند از: GitHub Copilot و Amazon CodeWhisperer، همچنین مدل های دسترسی آزاد مانند Code Llama از Meta. اما این ابزارها از نظر کارایی هنوز کامل نیستند. برخی از آن ها رایگان نیستند و برخی دیگر تحت مجوزهایی هستند که از استفاده آن ها در محیط های تجاری عمومی جلوگیری می کند.
اخیرا یک مطالعه از دانشگاه استنفورد نشان داد که مهندسانی که از سیستم های تولید کد استفاده می کنند، احتمالاً در برنامه هایی که توسعه می دهند، آسیب پذیری های امنیتی را افزایش می دهند. یک نظرسنجی از Sonatype شرکت امنیت سایبری، نشان می دهد که اکثر توسعه دهندگان نگران نداشتن بینش در مورد نحوه تولید کد از ژنراتورهای کد و مدیریت “گسترش کد” هستند.
با در نظر گرفتن همه این موارد ، آیا StarCoder 2 واقعاً از دیگر ژنراتورهای کد موجود – رایگان یا پرداختی -برتر است؟ با توجه به معیارها، به نظر می رسد که StarCoder 2 نسبت به یکی از نسخه های Code Llama، به نام Code Llama 33B، کارآیی بیشتری دارد و در یک زیر مجموعه از وظایف تکمیل کد، دو برابر Code Llama 33B سرعت دارد
با توجه به تقاضای بازار ، استارتاپ هوش مصنوعی Hugging Face، با همکاری ServiceNow پلتفرم اتوماسیون جریان کار، StarCoder را ایجاد کرد. StarCoder یک ژنراتور کد متن باز است که مجوزهای محدود کننده کمتری نسبت به برخی از ژنراتورهای دیگر دارد. نسخه اول StarCoder در سال گذشته به صورت آنلاین راه اندازی شد و از آن زمان بر روی نسخه دوم، StarCoder 2، کار شده است.
نسخه های StarCoder 2
StarCoder 2 یک مجموعه از مدل های تولید کد است و تا به امروز با سه نسخه منتشر شده است. این سه نسخه عبارتند از:
- مدل ۳ میلیارد پارامتر (۳B) که توسط ServiceNow آموزش دیده است.
- مدل ۷ میلیارد پارامتر (۷B) که توسط Hugging Face آموزش دیده است.
- مدل ۱۵ میلیارد پارامتر (۱۵B) که توسط Nvidia، جدیدترین حامی پروژه StarCoder، آموزش دیده است.
دو نسخه اول می توانند بر روی اکثر پردازنده های گرافیکی مدرن اجرا شوند.
(توجه کنید که “پارامترها” بخش هایی از مدل هستند که از داده های آموزشی، یاد گرفته شده اند و در واقع مهارت مدل در حل یک مشکل را تعریف می کنند، در این مورد تولید کد.)
قابلیت های StarCoder 2
مانند اکثر ژنراتورهای کد دیگر ، StarCoder 2 می تواند راه هایی برای تکمیل خطوط ناتمام کد پیشنهاد دهد و همچنین خلاصه سازی کنند و قطعات کد را با استفاده از زبان طبیعی بازیابی کنند.
StarCoder 2 با دادههای آموزشی ۴ برابر بیشتر از StarCoder اصلی (۶۷.۵ ترابایت در مقابل ۶.۴ ترابایت) آموزش دیده است و نتیجهای با عملکرد بهبود یافته و هزینههای عملیاتی کمتر ارائه می دهد.
StarCoder 2 می تواند با استفاده از یک GPU مانند Nvidia A100 در چند ساعت تنظیم شود تا برنامه هایی مانند چت بات ها و دستیارهای کد نویسی شخصی ایجاد کند و به دلیل آموزش بر روی مجموعه داده های بزرگتر و متنوع تر از StarCoder اصلی (حدود ۶۱۹ زبان برنامهنویسی)، StarCoder 2 می تواند پیشبینی های دقیق تر و آگاهانه تری از متن را انجام دهد.
Harm de Vries ، رئیس تیم توسعه StarCoder 2 ، در یک مصاحبه به TechCrunch گفت: “StarCoder 2 به ویژه برای توسعه دهندگانی که نیاز به ساخت سریع برنامه ها را دارند، ایجاد شده است و توسعه دهندگان می توانند از قابلیت های آن برای افزایش کارایی کد نویسی بدون از دست دادن سرعت یا کیفیت استفاده کنند.”
با در نظر گرفتن همه این موارد ، آیا StarCoder 2 واقعاً از دیگر ژنراتورهای کد موجود – رایگان یا پرداختی -برتر است؟ با توجه به معیارها، به نظر می رسد که StarCoder 2 نسبت به یکی از نسخه های Code Llama، به نام Code Llama 33B، کارآیی بیشتری دارد و در یک زیر مجموعه از وظایف تکمیل کد، دو برابر Code Llama 33B سرعت دارد.
امنیت StarCoder 2
StarCoder 2 به عنوان مجموعه ای از مدل های متن باز، دارای مزیتی است که قابلیت استقرار محلی و یادگیری کد منبع یا پایگاه کد توسعه دهنده را دارد – یک چشم انداز جذاب برای توسعه دهندگان و شرکت ها که از افشای کد به یک هوش مصنوعی میزبان در ابر می ترسند.
در یک نظرسنجی انجام شده توسط Portal26 و CensusWide در سال ۲۰۲۳، ۸۵٪ از کسب و کارها اعلام کردند که به دلیل مخاطرات حریم خصوصی و امنیتی – مانند به اشتراک گذاری اطلاعات حساس توسط کارمندان یا آموزش تامین کنندگان بر روی داده های انحصاری _ از پذیرش ژنراتورهای کد مانند GenAI می ترسند.
تمام مدل های GenAI نسخه هایی از داده هایی که بر روی آن ها آموزش دیدهاند، تولید می کنند و این ممکن است توسعه دهندگان را دچار مشکل کند.
در استفاده از ژنراتورهای کدی که بر روی کدهای کپی رایت آموزش دیده اند، کاملاً احتمال دارد که حتی با فیلترها و تدابیر اضافی، ژنراتورها به طور ناخواسته کدهای کپی رایت را توصیه کنند و آن ها را به عنوان کدهای دارای کپی رایت لیبل گذاری نکنند.
برخلاف ژنراتورهای کد که با استفاده از کدهای کپی رایت آموزش داده شدهاند (به عنوان مثال GitHub Copilot (، StarCoder 2 تنها با استفاده از داده های تحت لیسانس از Software Heritage، سازمان غیرانتفاعی ارائه دهنده خدمات آرشیوی برای کد، آموزش دیده است. قبل از آموزش StarCoder 2، BigCode تیم برنامه ریزی StarCoder 2، به صاحبان کد فرصت داد که اگر مایلند از مجموعه آموزشی خارج شوند.
Leandro von Werra ، مهندس یادگیری ماشین Hugging Face و مدیر مشترک BigCode ، اشاره کرد در حالی که اخیراً تعداد زیادی ژنراتور کد باز در دسترس است، تعداد کمی از آن ها همراه با اطلاعاتی در مورد دادههایی که در آموزش آن ها استفاده شده است و چگونگی آموزش آنها ، عرضه شدهاند.
von Werra در یک مصاحبه گفت: “یک مشکل علمی این است که به عنوان یک تولید کننده داده (یعنی کسی که کد خود را به GitHub آپلود می کند)، نمیدانید که دادههای شما چگونه و به چه شکلی استفاده شدهاند.”
StarCoder 2 این مشکل را با شفافیت کامل در کلیه مراحل آموزش از جمع آوری داده های پیش آموزش تا خود آموزش حل می کند.
محدودیت های StarCoder 2
با این حال، مانند سایر مدل های هوش مصنوعی، StarCoder 2 با محدودیت هایی همراه است . در ادامه به برخی محدودیت های کلیدی اشاره میکنیم:
تعصب
همانند مدل های مشابه، StarCoder 2 ممکن است تعصب های موجود در داده های آموزشی را نمایش دهد. به عنوان مثال، ممکن است کدی تولید کند که شامل تبعیض های مرتبط با جنسیت یا نژاد باشد.
وابستگی به زبان
از آنجایی که این مدل اصولاً بر روی توضیحات به زبان انگلیسی و کد Python و Java آموزش دیده است، در مواقعی که با زبان های غیر انگلیسی و کدهای با منابع کمتر مانند Fortran و Haskell سروکار دارد، عملکرد ضعیف تری دارد .
با این محدودیتها، StarCoder 2 یک گام مهم در جهت ایجاد اعتماد و پاسخگویی در مدل های هوش مصنوعی است. این مدل نمونه ای از مدل های کاملاً باز و شفاف را به نمایش می گذارد، که اهمیت شفافیت و قابلیت حسابرسی در سراسر فرآیند مدل، از جمله داده های آموزشی و دستورالعمل آموزش، را تأکید می کند .
توسعه دهندگانی که علاقه مند به تجربه آفلاین و رایگان StarCoder ۲ هستند، می توانند مدل ها، کد منبع و موارد دیگر را از صفحه پروژه GitHub دانلود کنند.
اگر مایلید در زمینه ی هوش مصنوعی مولد بیشتر بدانید پیشنهاد میکنیم مقاله زیر را مطالعه بفرمایید:
هوش مصنوعی مولد (Generative AI) چیست؟