پرش به محتوای اصلی
پرش به محتوای مقاله

Nucleus: کاهش زمان Cold Start عامل‌های هوش مصنوعی از ۵۰۰ به ۱۲ میلی‌ثانیه

·۲۰ خرداد ۱۴۰۵۱۰ دقیقه مطالعه۲ بازدید
Nucleus: کاهش زمان Cold Start عامل‌های هوش مصنوعی از ۵۰۰ به ۱۲ میلی‌ثانیه
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

جایگزینی کامل لایه‌های Docker و Registry با بستارهای Nix برای رسیدن به استارت‌آپ ۱۲ میلی‌ثانیه‌ای؛ این اولین بار است که یک Runtime با حذف کامل دیمون داکر، چنین جهشی در سرعت Cold Start ایجاد می‌کند.

اگر برای استقرار عامل‌های هوش مصنوعی به ایزولاسیونی فوری و وضعیت امنیتی قابل‌تأیید نیاز دارید، اکنون می‌توانید زمان اجرای ۵۰۰ میلی‌ثانیه‌ای داکر را با یک پرتاب ۱۲ میلی‌ثانیه‌ای جایگزین کنید. این وعده اصلی Nucleus است؛ یک محیط اجرای کانتینری مینیمال برای لینوکس که پیکربندی اعلان‌گر (Declarative) را بر توزیع سنتی تصاویر ترجیح می‌دهد.

بیشتر توسعه‌دهندگان با کانتینرها به عنوان راهی برای بسته‌بندی نرم‌افزار از طریق Dockerfileها و مخازن (Registries) آشنا هستند. اما Nucleus در دنیایی وارد می‌شود که این مدل «تصویر و توزیع» برای بارهای کاری گذرا و سریعِ هوش مصنوعی بیش از حد سنگین است. این ابزار با بهره‌گیری از NixOS و توابع هسته لینوکس، تمرکز را از تصاویر تغییرپذیر به بسته‌های (Closures) تغییرناپذیر و بازتولیدپذیر منتقل می‌کند.

طبق مستندات پروژه، Nucleus جایگزینی مستقیم (Drop-in) برای داکر نیست. در عوض، این ابزار به عنوان یک محیط اجرای Sandbox سخت‌شده عمل می‌کند که به runc یا gVisor نزدیک‌تر است. Nucleus معماری مبتنی بر Daemon را حذف کرده و در مقابل، از یک فایل باینری واحد استفاده می‌کند که مستقیماً فراخوانی‌های fork/exec را اجرا می‌کند. در واقع، این سیستم بخش «تصویر و توزیع» داکر را حذف کرده تا در exchange، ایزولاسیون عمیق‌تر، پالیسی‌های دقیق‌تر و بازتولیدپذیری بالاتری ارائه دهد.

عملکرد و بنچمارک‌ها

تکان‌دهنده‌ترین داده مربوط به تأخیر اجرای سرد (Cold Start Latency) است. در بنچمارک‌های رودررو، Nucleus زمان استارت‌آپ ۱۲ میلی‌ثانیه‌ای را ثبت کرد، در حالی که میانگین داکر حدود ۵۰۰ میلی‌ثانیه بود. این سرعت ۴۰ برابری برای معماری‌های عامل هوش مصنوعی که برای هر تک‌وظیفه یک Sandbox می‌سازند و سپس آن را تخریب می‌کنند، حیاتی است.

عملکرد در حالت پایدار (Steady-state) نیز بسیار بالا باقی مانده است. هنگام تست PostgreSQL 18 (با ابزار pgbench، ۸ کلاینت، ۶۰ ثانیه، مقیاس ۵۰) روی لینوکس ۶.۱۸ x86_64، Nucleus سربار بسیار کمی نشان داد. در این بنچمارک از محیط اجرای بومی (Native) با یک دایرکتوری pgdata مونت‌شده از میزبان و پرچم --network host استفاده شد تا هزینه ایزولاسیون در حالت پایدار اندازه‌گیری شود، نه سربار شبیه‌سازی:

  • بارهای سنگین خواندن (فقط SELECT): ورکر Nucleus به میانگین ۱۰۵,۹۶۵ تراکنش در ثانیه (TPS) با تأخیر ۰.۰۷۵ میلی‌ثانیه رسید که کمی سریع‌تر از عملکرد Bare-metal (۱۰۰,۲۲۲ TPS) بود. نسخه io_uring در Nucleus به ۱۰۷,۰۳۹ TPS با تأخیر ۰.۰۷۴ میلی‌ثانیه دست یافت.
  • ترکیبی خواندن/نوشتن (TPC-B): ورکر Nucleus به میانگین ۱,۷۵۷ TPS با تأخیر ۴.۵۵ میلی‌ثانیه رسید که از عملکرد Bare-metal (۱,۴۹۰ TPS با تأخیر ۵.۳۸ میلی‌ثانیه) بهتر بود. نسخه io_uring در Nucleus مقدار ۱,۵۸۵ TPS را ثبت کرد.

سه حالت عملیاتی

Nucleus برای ایجاد تعادل بین سرعت و امنیت در سه حالت متمایز عمل می‌کند:

۱. حالت عامل (Agent Mode): حالت پیش‌فرض برای بارهای کاری گذرا. از Sandboxهایی با استارت سریع استفاده می‌کند که فایل‌های زمینه (Context) از طریق tmpfs پیش‌پر شده‌اند. این حالت اجازه کاهش سطح امنیت و بازگشت به chroot (از طریق پرچم‌ها) را می‌دهد و DNS پل (Bridge) را به صورت پیش‌فرض روی 8.8.8.8 و 8.8.4.4 تنظیم می‌کند.

۲. حالت عامل سخت‌گیر (Strict Agent Mode): نسخه‌ای با رویکرد «بستن در صورت خطا» (Fail-closed) که با نام مستعار mitos-agent نیز شناخته می‌شود. این حالت امنیت کاهش‌یافته و شبکه بومی میزبان را ممنوع می‌کند. ایجاد موفق cgroup در این حالت الزامی است، استفاده از pivot_root به جای chroot اجباری است و اجرای Landlock برای محیط اجرای بومی الزامی است. با این حال، در این حالت نیازی به rootfs تولیدی Nix، بررسی‌های سلامت (Health checks) یا sd_notify نیست.

۳. حالت تولید (Production Mode): سخت‌گیرانه‌ترین سطح برای سرویس‌های طولانی‌مدت. این حالت نیازمند یک سیستم فایل ریشه Nix پیش‌ساخته (Closure)، تأییدیه rootfs (Attestation) و محدودیت‌های صریح حافظه است. این حالت شامل یک ناظر mini-init (با PID 1) برای جمع‌آوری پردازش‌های زامبی و انتقال سیگنال‌ها است و از hidepid=2 برای پنهان کردن سایر پردازش‌ها از مسیر /proc استفاده می‌کند. در این حالت، هرگونه شکست در پالیسی خروجی (Egress) منجر به توقف کامل (Fatal) می‌شود.

یکپارچگی عمیق با NixOS

برخلاف داکر، Nucleus از اکوسیستم Nix برای تعریف محیط استفاده می‌کند. برای محیط‌های تولید، محیط اجرا یک Closure پین‌شده و بازتولیدپذیر را مونت می‌کند. توسعه‌دهندگان می‌توانند با استفاده از nucleus.lib.mkRootfs یک سیستم فایل مینیمال بسازند که فقط شامل بسته‌های ضروری مانند cacert یا curl باشد. این فرآیند یک مسیر store شامل /bin ،/lib و /etc از بسته‌های مشخص شده تولید می‌کند که شامل یک مانیفست .nucleus-rootfs-sha256 برای تأیید اعتبار است.

برای زنجیره ابزارهای تخصصی هوش مصنوعی، پروژه تابع nucleus.lib.mkAgentToolchainRootfs را ارائه می‌دهد. این قابلیت به لانچرهای ارائه‌دهنده اجازه می‌دهد تا بدون وابستگی به دایرکتوری‌های /bin یا /usr میزبان، از یک مسیر store پین‌شده برای ابزارهایی مانند CLIهای Claude، Codex یا Gemini استفاده کنند. این قابلیت مخصوص حالت‌های Agent و Strict-Agent است و در حالت Production برای حفظ تأییدیه سخت‌گیرانه rootfs رد می‌شود.

معماری امنیتی

امنیت در Nucleus با فلسفه «رد پیش‌فرض» (Deny-by-default) پیاده شده است. این ابزار از چندین مکانیزم هسته لینوکس برای ایزولاسیون استفاده می‌کند:

  • Namespaces و Cgroups v2: ایزولاسیون کامل PID، mount، شبکه، UTS، IPC، کاربر و cgroup. ایزولاسیون زمانی (Time isolation) نیز به صورت اختیاری از طریق --time-namespace در دسترس است. Cgroups v2 برای اعمال محدودیت‌های سخت‌گیرانه روی CPU، حافظه، PIDها و I/O به کار می‌رود.
  • Landlock LSM: کنترل دسترسی به سیستم فایل بر اساس مسیرها از طریق پالیسی‌های TOML (برای لینوکس ۵.۱۳ به بالا). پالیسی‌ها می‌توانند با SHA-256 پین شوند و پس از اعمال، غیرقابل بازگشت هستند.
  • Seccomp: فیلتر کردن syscallها با استفاده از پروفایل‌های JSON. Nucleus دارای یک «حالت ردیابی» (Trace mode) است که syscallهای واقعی را در یک لاگ NDJSON ثبت کرده و سپس با دستور nucleus seccomp generate یک پروفایل لیست سفید مینیمال تولید می‌کند.
  • یکپارچگی با gVisor: برای امنیت ارتقایافته، Nucleus می‌تواند از gVisor (runsc) به عنوان یک هسته اپلیکیشن اختیاری استفاده کند. در این حالت، یک بسته کامل OCI (config.json) شامل هویت پردازش، مونت‌ها و سیم‌کشی مسیر cgroup تولید می‌شود. کاربران می‌توانند پلتفرم را از طریق --gvisor-platform (شامل systrap، kvm یا ptrace) انتخاب کنند.
  • مدیریت امتیازات: Nucleus برای تنظیمات اولیه به عنوان root شروع به کار می‌کند، اما می‌تواند قبل از اجرای بار کاری، از طریق --user و --group به یک uid/gid و گروه‌های تکمیلی پیکربندی شده تغییر وضعیت دهد. این موضوع برای هر دو محیط اجرای بومی و gVisor صدق می‌کند.

کنترل شبکه و خروجی

مدیریت شبکه در حالت‌های bridge، host یا none انجام می‌شود. در حالت Production Bridge، یک پالیسی سخت‌گیرانه «رد همه» (Deny-all) برای خروجی‌ها (OUTPUT) نصب می‌شود. دسترسی فقط از طریق پرچم‌های صریح --egress-allow (برای CIDR) یا --egress-domain داده می‌شود.

برای مثال، کاربر می‌تواند کانتینر را به‌گونه‌ای محدود کند که فقط با api.example.com روی پورت ۴۴۳ ارتباط برقرار کند. محیط اجرا در هنگام استارت‌آپ، دامنه را به یک آدرس IPv4 تبدیل کرده و قوانین iptables مربوطه را اعمال می‌کند. ورودی‌های دامنه باید نام‌های دقیق باشند (بدون Wildcard). پالیسی خروجی در حالت gvisor-host در دسترس نیست زیرا Nucleus در آن پیکربندی، مالک namespace شبکه نیست.

برای محیط اجرای بومی، --network bridge از دو بک‌اند از طریق --nat-backend پشتیبانی می‌کند. تنظیم auto در صورت داشتن دسترسی privileged از bridge/veth/iptables هسته و در حالت rootless از slirp4netns (NAT فضای کاربر) استفاده می‌کند. گزینه userspace صراحتاً slirp4netns را اجبار می‌کند.

ارکستراسیون و چرخه عمر

اگرچه Nucleus مخزن (Registry) ندارد، اما معادل nucleus compose را ارائه می‌دهد. کاربران با استفاده از یک فایل TOML می‌توانند توپولوژی‌های چندکانتینری را با یک گراف جهت‌دار بدون دور (DAG) تعریف کنند. این امر اجازه می‌دهد سیستم سرویس‌ها را با ترتیب درست بالا بیاورد (مثلاً اطمینان از سلامت دیتابیس قبل از شروع وب‌سرور) و آن‌ها را به ترتیب معکوس تخریب کند.

برای کارهای پس‌زمینه، پرچم --detach کانتینرها را به عنوان سرویس‌های گذرا در systemd اجرا می‌کند. این کار باعث می‌شود لاگ‌های کانتینر مستقیماً وارد journald شوند و مدیریت آن‌ها با دستوراتی مثل nucleus stop ،nucleus logs یا nucleus attach ساده شود. این سرویس‌های گذرا از KillMode=mixed و TimeoutStopSec=30 برای خاموشی آرام (Graceful shutdown) استفاده می‌کنند. پرچم --collect تضمین می‌کند که واحد (Unit) پس از خروج، توسط Garbage-collector جمع‌آوری شود.

مکانیزم‌های فنی پیشرفته

سیستم فایل و اسرار:

  • FS مبتنی بر حافظه: دیسک‌های کانتینر به tmpfs مپ می‌شوند. در حالت Agent، این‌ها با فایل‌های زمینه پیش‌پر می‌شوند.
  • مدیریت فضای کاری: پرچم --workspace درخت پروژه‌های میزبان را در /workspace مونت می‌کند. حالت‌ها شامل bind-rw (پیش‌فرض)، bind-ro و copy-in-out (که تغییرات را پس از خروج همگام‌سازی می‌کند) هستند. Landlock بومی اجرای فایل‌ها از /workspace را ممنوع می‌کند مگر اینکه --workspace-exec مشخص شده باشد.
  • اسرار امن (Secrets): اسرار در حافظه در مسیر /run/secrets مونت می‌شوند. حالت Production از صفر کردن (Zeroing) متغیرهای منبع برای امنیت بیشتر استفاده می‌کند. متغیرهای محیطی حساس را می‌توان از طریق --env-fd ارسال کرد تا از نمایش آن‌ها در argv (که در /proc/<pid>/environ قابل مشاهده است) جلوگیری شود.
  • پیکربندی ارائه‌دهنده: پرچم‌های اختصاصی مانند --provider-config-ro و --provider-config-rw اجازه مونت کردن اعتبارنامه‌های ابری خاص (مانند .aws یا .config/gh) را در دایرکتوری home خصوصی می‌دهند. tmpfs مربوط به home با حالت nosuid,nodev,noexec و مود 0700 مونت می‌شود.

حسابرسی و تله‌متری:

  • بررسی یکپارچگی: پرچم --verify-context-integrity هش درخت زمینه منبع را قبل از اجرا بررسی می‌کند تا از تطابق درخت /context اطمینان حاصل شود. حالت Production همچنین از --verify-rootfs-attestation برای بررسی مانیفست .nucleus-rootfs-sha256 پشتیبانی می‌کند.
  • جریان رویدادها: با استفاده از --events-jsonl یا --events-fd ،Nucleus رویدادهای چرخه عمر ماشین‌خوان شامل PID، مسیر cgroup، وضعیت خروج و آمار منابع را منتشر می‌کند.
  • مشاهده‌پذیری (Observability): اگر NUCLEUS_OTLP_ENDPOINT یا OTEL_EXPORTER_OTLP_ENDPOINT تنظیم شده باشد، محیط اجرا Spanهای چرخه عمر را از طریق OpenTelemetry (OTLP) صادر می‌کند.
  • سخت‌سازی هسته: پرچم --require-kernel-lockdown می‌تواند از استارت‌آپ جلوگیری کند مگر اینکه هسته در حالت‌های integrity یا confidentiality باشد.

مشخصات OCI و Runtime:

  • تولید Bundle: برای gVisor، ابزار Nucleus یک config.json استاندارد OCI تولید می‌کند که شامل process.user ،قلاب‌های چرخه عمر، محدودیت‌های منابع و مپینگ‌های namespace است. این شامل noNewPrivileges و rlimits نیز می‌شود.
  • مدیریت ترمینال: --terminal و --console-socket از کنوانسیون‌های OCI پیروی کرده و توصیف‌گر فایل PTY master را با SCM_RIGHTS به محیط اجرا می‌فرستند. تغییر اندازه پنجره از ioctls مربوط به PTY استفاده می‌کند و SIGWINCH پیش‌زمینه به پردازش کانتینر منتقل می‌شود.

سخت‌سازی امنیتی تکمیلی

Nucleus مجموعه‌ای از پرچم‌های دانه‌ریز برای قفل کردن بیشتر محیط اجرا ارائه می‌دهد:

  • پین کردن پالیسی: --seccomp-profile-sha256 ،--caps-policy-sha256 و --landlock-policy-sha256 به اپراتورها اجازه می‌دهد هش فایل‌های پالیسی را قبل از بارگذاری تأیید کنند تا از تغییرات غیرمجاز جلوگیری شود.
  • کنترل Seccomp: کاربران می‌توانند بین حالت trace (ثبت syscallها در NDJSON) و حالت enforce سوئیچ کنند. پرچم --seccomp-log-denied درخواست ثبت تصمیمات رد شده در لاگ‌های هسته را از طریق SECCOMP_FILTER_FLAG_LOG ارسال می‌کند.
  • کنترل Cgroup: پرچم --disable-cgroup-namespace در صورتی که یک بار کاری به‌طور خاص نیاز به مشاهده سلسله‌مراتب cgroup میزبان داشته باشد، قابل استفاده است.

ماژول NixOS و استقرار

ماژول NixOS ارائه شده، ایجاد واحدهای nucleus-<name>.service را خودکار می‌کند. این واحدها پس از network-online.target ترتیب می‌گیرند و در صورت تنظیم sdNotify = true از Type=notify استفاده می‌کنند.

ویژگی‌های کلیدی این ماژول شامل:

  • ایجاد خودکار Volume: وقتی createHostPath = true در تعریف یک volume استفاده شود، ماژول از systemd-tmpfiles برای ایجاد دایرکتوری میزبان قبل از استارت‌آپ استفاده می‌کند تا مالکیت آن با کاربر/گروه پیکربندی شده همسو باشد.
  • خط لوله اعتبارنامه: گزینه credentials با خط لوله LoadCredential یا LoadCredentialEncrypted در systemd یکپارچه شده و اسرار را در مسیر اسرار کانتینر مونت می‌کند.
  • سرویس‌های توپولوژی: کل توپولوژی‌های چندکانتینری را می‌توان به عنوان یک واحد واحد nucleus-topology-myapp.service (از نوع oneshot و RemainAfterExit) مدیریت کرد که در هنگام شروع nucleus compose up و در هنگام توقف nucleus compose down را اجرا می‌کند.

تحلیل: تغییر به سمت استقرارهای «بدون تصویر» (Zero-Image)

این معماری نشان‌دهنده یک تغییر قابل‌توجه در نحوه تفکر ما درباره ایزولاسیون است. با حذف لایه تصویر OCI و جایگزینی آن با Nix Closures، ابزار Nucleus «پراکندگی تصاویر» (Image Sprawl) و وابستگی به مخازنی که خطوط لوله CI/CD مدرن را فلج می‌کند، حذف می‌کند.

برای صنعت عامل‌های هوش مصنوعی، این یک تغییر بنیادین (Game-changer) است. توانایی اجرای یک محیط کاملاً ایزوله و سخت‌شده امنیتی در ۱۲ میلی‌ثانیه به این معنی است که می‌توان با عامل‌ها به جای سرورهای طولانی‌مدت، به عنوان توابع یک‌بارمصرف برخورد کرد. این کار سطح حمله (Attack Surface) را کاهش داده و تأخیر گردش‌کارهای عامل‌محور را به‌طور چشمگیری پایین می‌آورد.

با این حال، بهای این تحول، منحنی یادگیری تندتر است. کاربران باید با Nix و پیکربندی اعلان‌گر سیستم راحت باشند. این ابزاری برای توسعه‌دهندگان تفننی نیست، بلکه برای کسانی است که زیرساخت‌های امن و مقیاس‌پذیر عامل‌ها را می‌سازند، جایی که قابلیت حسابرسی (Auditability) و بازتولیدپذیری غیرقابل مذاکره است. تمام ماشین‌های وضعیت (State Machines) در Nucleus با استفاده از TLA+ و مدل‌چکر Apalache به‌طور رسمی تأیید شده‌اند تا صحت عملکرد در تمامی زیرسیستم‌ها تضمین شود.

اگر شما یک ناوگان از عامل‌های هوش مصنوعی را مدیریت می‌کنید، باید ارزیابی کنید که آیا سربار استارت‌آپ ۵۰۰ میلی‌ثانیه‌ای فعلی شما، پاسخ‌دهی عامل‌ها را محدود کرده یا هزینه‌های زیرساختی شما را افزایش داده است. می‌توانید با تست پکیج nucleus-container از طریق Cargo یا Nix شروع کنید تا ببینید آیا ایزولاسیون مبتنی بر gVisor نیازهای امنیتی شما را برآورده می‌کند یا خیر.

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

چرا این موضوع مهم است؟

این ابزار با حذف تأخیرهای زیرساختی، سرعت چرخه «فکر-عمل» را در عامل‌های هوش مصنوعی به شدت افزایش می‌دهد. تخصص در مدیریت وضعیت سیستم به‌جای مدیریت تصاویر کانتینر، استاندارد جدیدی برای محیط‌های اجرای امن (Sandboxes) تعریف می‌کند.

تأثیر برای ایران

به دلیل متن‌باز بودن پروژه در گیت‌هاب، توسعه‌دهندگان ایرانی بدون محدودیت‌های API به این ابزار دسترسی دارند. این راهکار برای استقرار عامل‌های سریع در سرورهای داخلی بسیار کاربردی است.

·نگاه ما
تحریریه دات‌هوش

تحلیل ما نشان می‌دهد که Nucleus در واقع در حال تبدیل «زیرساخت» به «کد» است. با حذف Layan-based images، ما از مدل توزیع نرم‌افزار به مدل توزیع وضعیت (State) حرکت می‌کنیم. این تغییر برای عامل‌های هوش مصنوعی که نیاز به اجرای ابزارهای متنوع و گذرا دارند، حیاتی است زیرا تأخیر در شروع (Cold Start) را از یک مشکل فنی به یک جزئیات نامحسوس تبدیل می‌کند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

موضوع‌ها

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.