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

PythonCall و JuliaCall حافظهٔ مشترک را بدون کپی‌برداری میان دو زبان ایجاد کردند

·۲۴ شهریور ۱۴۰۵۲ دقیقه مطالعه
لوگوی پروژه PythonCall.jl: ادغام هماهنگ پایتون و جولیا در گیت‌هاب
لوگوی پروژه PythonCall.jl: ادغام هماهنگ پایتون و جولیا در گیت‌هاب
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

قابلیت Zero-Copy در PythonCall اجازه می‌دهد تغییرات در یک زبان فوراً در حافظه زبان دیگر اعمال شود، بدون اینکه داده‌ها دوباره کپی شوند.

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

به نقل از مستندات گیت‌هاب که در ۱۵ سپتامبر ۲۰۲۶ به‌روزرسانی شده است، رابط‌های متقارن PythonCall و JuliaCall به کاربران اجازه می‌دهند کدهای یک زبان را در زبان دیگر فراخوانی کنند، در حالی که ساختار نوشتاری (Syntax) هر کدام حفظ شود.

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

همان‌طور که در تحلیل‌های پیشین ما درباره‌ی بهینه‌سازی حافظه در زبان‌های محاسباتی اشاره کردیم، حذف کپی‌های تکراری کلید افزایش بهره‌وری است. PythonCall برای بهینه‌سازی این جریان کاری، سه تغییر فنی اساسی ایجاد کرده است:

  • تبدیل بدون کپی (Zero-Copy Conversion): این ابزار به‌جای کپی کردن اشیاء، آن‌ها را «بسته‌بندی» می‌کند. یعنی اگر یک آرایه از نوع numpy.ndarray را در جولیا تغییر دهید، شیء اصلی در پایتون فوراً به‌روز می‌شود.
  • محیط‌های ایزوله: این ابزار از CondaPkg استفاده می‌کند تا وابستگی‌ها را در محیط‌های مجزای Conda برای هر پروژه نصب کند و از «جهنم وابستگی‌ها» (Dependency Hell) جلوگیری کند.
  • پایداری نوع (Type Stability): سیستم با نگه داشتن نتایج به‌صورت اشیاء پایتونی (به‌جای تبدیل اجباری به مقادیر جولیا)، دسترسی به متدهای پایتون را ساده‌تر و سرعت را بیشتر می‌کند.

لوگوی PythonCall.jl: ترکیب هماهنگ پایتون و جولیا در یک بسته جولیا

در عمل، یک کاربر می‌تواند مجموعه داده Iris را در جولیا بارگذاری کند، آن را از طریق pytable(df) به یک DataFrame در پانداس تبدیل کند و بلافاصله با Seaborn رسم نماید. برعکس، می‌توان داده‌های آموزشی را با Numpy در پایتون تولید کرد و آن‌ها را مستقیماً به کتابخانه Flux در جولیا فرستاد تا یک شبکه عصبی (Neural Network) — که شبیه نقشه‌ای از سلول‌های کوچک برای انتقال سیگنال از ورودی به جواب است — آموزش ببیند.

لوگوی گیت‌هاب و PythonCall.jl: ترکیب هماهنگ پایتون و جولیا

طبق گزارش توسعه‌دهندگان، این تغییر «مالیات عملکرد» در پشته‌های چندزبانه را حذف می‌کند. با حذف تخصیص حافظه تکراری، پژوهشگران می‌توانند از سرعت جولیا برای محاسبات سنگین و از کتابخانه‌های پایتون برای بصری‌سازی داده‌ها بدون ایجاد گلوگاه استفاده کنند. این یعنی تبدیل دو زبان مجزا به یک جعبه‌ابزار ترکیبی و واحد.

گام بعدی شما

  • مستندات رسمی PythonCall را برای پیکربندی محیط‌های CondaPkg مطالعه کنید.
  • جریان‌های کاری خود را بررسی کنید تا ببینید کدام بخش‌های محاسباتی را می‌توان به جولیا منتقل کرد.
  • عملکرد مدل‌های خود را در حالت Zero-Copy با روش‌های قدیمی مقایسه کنید.

اما چالش بعدی، نحوه مدیریت این حافظه مشترک در محاسبات توزیع‌شده روی خوشه‌های GPU است که در گزارش‌های آینده بررسی خواهیم کرد.

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

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

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

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

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

حذف کپی‌برداری از داده‌ها (Zero-copy) در لایه ارتباطی زبان‌ها، مرز بین «زبان‌های چسب» مثل پایتون و «زبان‌های محاسباتی» مثل جولیا را از بین می‌برد. این رویکرد نشان می‌دهد که آینده توسعه نرم‌افزارهای علمی نه در جایگزینی یک زبان با زبان دیگر، بلکه در ایجاد لایه‌های انتقال داده‌ای است که هزینه جابه‌جایی را به صفر می‌رساند.

منابع

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

گفتگو

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

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

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

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

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

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

دات‌هوش

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

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