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

در مقاله‌ای با عنوان «UICoder: Finetuning Large Language Models to Generate User Interface Code through Automated Feedback» این پژوهشگران توضیح می‌دهند که اگرچه مدل‌های زبانی بزرگ در سال‌های اخیر در انجام انواع وظایف نوشتاری، از جمله نگارش خلاقانه و تولید کد، پیشرفت قابل‌توجهی داشته‌اند، اما همچنان در تولید مداوم کدی که از نظر نحوی بی‌خطا، از نظر طراحی مناسب و برای رابط کاربری بهینه باشد، با دشواری روبه‌رو هستند. آن‌ها همچنین دلیل اصلی این مسئله را روشن می‌دانند:

اپل یک مدل زبانی بزرگ توسعه داده تا خودش کدنویسی رابط کاربری در SwiftUI را یاد بگیرد

حتی در مجموعه‌ داده‌های پالایش‌شده یا آن‌هایی که به‌صورت دستی تهیه شده‌اند، نمونه‌های کد مربوط به رابط کاربری بسیار نادر هستند و در برخی موارد سهم آن‌ها کمتر از ۱ درصد کل نمونه‌ها در مجموعه‌داده‌های کد است. برای حل این مشکل، آن‌ها از مدل StarChat-Beta که یک LLM متن‌باز تخصصی در زمینه تولید کد محسوب می‌شود، به‌عنوان نقطه آغاز استفاده کردند. فهرستی از توصیفات دقیق رابط کاربری در اختیار مدل قرار گرفت و به آن دستور داده شد که یک مجموعه‌داده عظیم و مصنوعی از برنامه‌های SwiftUI را بر اساس این توصیفات تولید کند.

سپس تمامی قطعات کد تولیدشده با استفاده از کامپایلر Swift اجرا شدند تا اطمینان حاصل شود که کدها عملاً قابل اجرا هستند. بعد از این مرحله، یک تحلیل ثانویه توسط GPT-4V که یک مدل ترکیبی زبان-بینایی است انجام گرفت؛ این مدل رابط کاربری کامپایل‌شده را با توصیف اولیه مقایسه و ارزیابی می‌کرد تا مطابقت آن‌ها مشخص شود. هر خروجی که در فرآیند کامپایل با شکست مواجه می‌شد، یا از نظر ظاهری بی‌ارتباط به توصیف اصلی بود یا به‌عنوان نمونه تکراری شناسایی می‌شد، حذف می‌گردید. آنچه باقی می‌ماند مجموعه‌ای باکیفیت از کدهای معتبر بود که در نهایت برای تنظیم دقیق مدل استفاده شد و مبنای آموزش پیشرفته‌تر آن قرار گرفت.

آن‌ها این روند را بارها تکرار کردند و مشاهده نمودند که در هر چرخه جدید، نسخه بهبود‌یافته مدل، کدهای SwiftUI را با کیفیت بالاتر نسبت به دفعات پیشین تولید می‌کرد. این امر به نوبه خود منجر به ایجاد یک مجموعه‌ داده بهتر و ساختارمندتر شد. پس از گذراندن ۵ مرحله کامل، تیم تحقیقاتی موفق شد نزدیک به یک میلیون برنامه SwiftUI (به‌طور دقیق ۹۹۶۰۰۰ نمونه) به همراه مدلی با نام UICoder تهیه کند که به‌طور پیوسته قادر بود کدها را کامپایل کرده و رابط‌های کاربری بسیار نزدیک‌تر به درخواست‌های متنی اولیه نسبت به مدل پایه تولید نماید.

اپل یک مدل زبانی بزرگ توسعه داده تا خودش کدنویسی رابط کاربری در SwiftUI را یاد بگیرد

بر اساس نتایج آزمون‌های انجام‌شده، UICoder به شکلی قابل توجه عملکردی برتر نسبت به مدل پایه StarChat-Beta در هر دو شاخص ارزیابی خودکار و سنجش‌های انسانی از خود نشان داد. همچنین، این مدل از نظر کیفیت کلی، فاصله اندکی با GPT-4 داشت و حتی در نرخ موفقیت کامپایل، از آن پیشی گرفت. اما نکته جالب اینجاست که مجموعه‌ داده اولیه به‌طور تصادفی فاقد کد SwiftUI بود. یکی از یافته‌های غیرمنتظره پژوهش ناشی از یک خطای کوچک در گردآوری داده‌ها بود. مدل StarChat-Beta عمدتاً با سه مجموعه داده اصلی آموزش دیده بود:

  • TheStack، یک پایگاه داده حجیم شامل 250B توکن از مخازن کد با مجوز باز
  • صفحات وب خزیده‌ شده
  • OpenAssistant-Guanaco، یک مجموعه کوچک ویژه آموزش دستورپذیری

مشکل از جایی آغاز شد که طبق توضیح محققان Apple، داده‌های آموزشی StarChat-Beta تقریباً هیچ محتوای SwiftUI نداشتند. در فرآیند تهیه TheStack، مخازن کد Swift به‌طور ناخواسته حذف شده بودند و در بررسی دستی مشخص گردید که مجموعه داده OpenAssistant-Guanaco تنها یک نمونه (از میان ده هزار مورد) حاوی کد Swift در بخش پاسخ داشت. آن‌ها بر این باور بودند که هر نمونه Swift که StarChat-Beta آموزش دیده، احتمالاً از صفحات وب جمع‌آوری شده بوده که معمولاً کیفیت پایین‌تر و ساختار کمتر منسجمی نسبت به کد موجود در مخازن رسمی دارند.

اپل یک مدل زبانی بزرگ توسعه داده تا خودش کدنویسی رابط کاربری در SwiftUI را یاد بگیرد

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

این پژوهش با عنوان UICoder: Finetuning Large Language Models to Generate User Interface Code through Automated Feedback در پایگاه arXiv منتشر شده و جزئیات کامل فرایند و نتایج را در اختیار پژوهشگران و توسعه‌دهندگان قرار می‌دهد.