P Philpax در anthropic.com

بازطراحی سیستم کنترل نسخه در آنتروپیک: چرا Git برای مقیاس هوش مصنوعی پاسخگو نیست؟

۳ دقیقه مطالعه ۸۱۲ امتیاز ۸۶۳ نظر ۲۲ مهر ۱۴۰۵

بازطراحی سیستم کنترل نسخه در آنتروپیک: چرا Git برای مقیاس هوش مصنوعی پاسخگو نیست؟ — Redesigning source control at Anthropic

خلاصه

شرکت Anthropic با افزایش چشمگیر تعداد کدهای تولیدشده توسط مدل Claude و رسیدن به بیش از ۳۰ هزار ادغام در روز، با گلوگاه زیرساخت‌های سنتی روبه‌رو شد. آن‌ها برای حل این مشکل، سیستم کنترل نسخه انحصاری خود به نام Scion را از صفر طراحی کردند و مونوپیروی خود را در مدت پنج ماه از Git به آن انتقال دادند.

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

چرا Git پاسخگوی مونوپروژه‌های بزرگ نیست؟

سیستم Git به صورت غیرمتمرکز طراحی شده است؛ یعنی هر کلون یک مخزن کامل و خودکفاست که می‌تواند تاریخچه، blame و تفاوت‌ها را به صورت کاملاً آفلاین محاسبه کند. برای اکثر پروژه‌ها این مدل عالی است، اما با رسیدن تاریخچه شاخه اصلی به حجم‌های بالا و انجام میلیون‌ها checkout روزانه برای CI، این معماری به شدت زیر فشار می‌رود.

پیش‌تر تیم‌ها از راهکارهایی مانند کلون‌های سطحی، sparse checkoutها و آینه‌های داخلی Git استفاده می‌کردند که با افزایش نرخ ادغام کدها، نگهداری و همگام‌سازی آن‌ها بسیار دشوار شد. از آنجا که کلاینت‌های اصلی سیستم (ایجنت‌ها و جاب‌های CI) همیشه آنلاین هستند، استفاده از ابزاری که فرض را بر کار آفلاین می‌گذارد، مقیاس‌پذیری را محدود می‌کند.

اصول طراحی Scion

برای غلبه بر این محدودیت‌ها، آنتروپیک سیستم جدیدی به نام Scion را ساخت و مونوپیروی خود را در پنج ماه به آن مهاجرت داد. اصول کلیدی این سیستم عبارتند از:

  • همیشه آنلاین بودن کلاینت‌ها: از آنجا که ایجنت‌ها و جاب‌های خودکار همیشه به شبکه متصل هستند، پروتکل‌ها بر مبنای دسترسی دائمی به سرور طراحی شده‌اند.
  • نامتقارن بودن کلاینت و سرور برخلاف Git: سرور کارهای سنگین مانند ادغام‌ها، ری‌بیس‌ها و پاسخ به تاریخچه فایل‌ها را انجام می‌دهد، در حالی که کلاینت تنها یک کش محلی محدود دارد و فایل‌ها را روی دیسک مدیریت می‌کند.
  • دسترسی برنامه‌نویستانه به APIها: تمام پرس‌وجوهای کنترل نسخه به صورت API در اختیار ابزارهای داخلی قرار می‌گیرد، بنابراین بسیاری از ابزارها و خطوط لوله CI نیازی به داشتن مخزن محلی ندارند.
  • مقیاس‌پذیری افقی کامل: هیچ کپی کاملی از مخزن روی سرورها وجود ندارد و نیازی به نگهداری پکیج‌های فشرده (packfiles) نیست.
  • تعهدات (Commits) ارزان و بدون قفل: تمام عملیات روی سرور و با سرعت بالا انجام می‌شوند بدون اینکه نیازی به دستکاری سراسری refها باشد.

ساختار داده و جزئیات فنی

واحد کار در Scion یک changeset است که در یک لاگ ثبت می‌شود. برخلاف کامیت‌های Git، یک changeset فهرستی از فایل‌های تغییریافته نسبت به والد اول و اشاره‌گرهای محتوامحور به محتوای فشرده‌شده را ذخیره می‌کند. ساختار داده‌های مشتق‌شده مانند blame و تاریخچه مسیرها به صورت بازگشتی و از روی والدین محاسبه می‌شوند.

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

نگاه جامعه هکر نیوز

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

این مطلب به‌صورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل

خبرهای فناوری در قالب پست و ویدیوی کوتاه، در اینستاگرام هکرنیوز بلاگ. به‌زودی
هر خبر به محض انتشار، به‌همراه پادکست روزانه در کانال تلگرام هکرنیوز بلاگ.