ورتکس: از S3 مستقیم به GPU با یک کپی
خلاصهٔ کاملتر
تو این ارائه که اولش تو QCon London 2026 اجرا شده، یکی از نگهدارندههای Vortex در SpiralDB میگه چرا لود کردن داده به GPU گلوگاه آموزش مدلهاست. GPU گرونه و هر لحظه بیکار موندنش هزینهست. مسیر رایج امروز اینه: از S3 به NVMe، از NVMe بایتهای فشرده به RAM، دیکامپرس روی CPU و بعد فرستادن به GPU از روی PCIe. به گفتهٔ نویسنده گلوگاه اصلی همون دیکامپرس روی CPU و throughput دیسکه، و دلیل ذخیره روی دیسک هم اینه که PyTorch با مالتیپروسسینگ کار میکنه و ورکرها میخوان دانلود تکراری نکنن.
Vortex یه فرمت فایل ستونیه (شبیه Parquet ولی با اسپک قابلتوسعه) که اپنسورسه و زیر Linux Foundation نگهداری میشه. بهجای فشردهسازی بلاکی، از انکودینگهای سبک و آبشاری استفاده میکنه که معنی داده رو نگه میدارن، پس میشه مستقیم روی دادهٔ فشرده محاسبه کرد. مثلاً جمع زدن روی آرایهٔ run-end فقط ضرب مقدار هر ران در طولشه، که از پیمایش تکتک عناصر دادهٔ باز شده سریعتره. ادعای ارائه اینه که اسکن S3 به GPU حدود ۳۰ برابر و دسترسی تصادفی حدود ۱۰۰ برابر از Parquet سریعتره.
داخل فایل، فوتر یه فهرست از آرایهها، لایوتها و سگمنتهاست. لایوتها نقش پلن منطقی و لایهٔ هرس I/O رو دارن: هر گره میدونه مسئول چه سگمنتهاییه و با گرفتن فیلتر میگه کدومهاشون واقعاً باید خونده بشن. ZonedLayout کنار داده یه zone-map هم نگه میداره، یعنی آمار خلاصه مثل min و max برای هر بازهٔ ردیف. با خوندن همون zone-map میشه بیشتر سگمنتها رو کنار گذاشت و بعد فقط همون چند هزار ردیفی که لازمه دیکامپرس کرد.
بخش جذاب ارائه شمردن کپیهاست. مسیر معمولی چند بار حافظه رو کپی میکنه: رمزگشایی TLS، جدا کردن بدنهٔ HTTP، تجمیع بافرهای استریم و آخرش یه کپی پنهان خود CUDA، چون بافر مبدأ باید pinned باشه یعنی از سیستم صفحهبندی حافظه بیرون کشیده شده باشه. با یه بافرپول pinned، فعال کردن kTLS (رمزگشایی TLS سمت کرنل) و در نهایت نوشتن کلاینت HTTP اختصاصی، همهٔ اینا به یک کپی میرسه. با RDMA حتی میشه CPU رو کامل دور زد.
نتیجهٔ عملی تو دموئه: ویدیوی 4K با حدود ۶۰ گیگابیت بر ثانیه از S3 تا GPU استریم میشه و اضافه کردن فیلتر یا projection دلخواه throughput رو خراب نمیکنه، چون فقط بایتهای لازم حرکت میکنن. نویسنده میگه همین باعث میشه برای عوض کردن ترکیب دیتاست یا فیلتر، لازم نباشه کل داده دوباره پردازش و توکنایز بشه؛ فقط کوئری اسکن عوض میشه و تکرار بعدی آموزش سریع شروع میشه.
نکات کلیدی:
- Vortex فرمت ستونی اپنسورس زیر Linux Foundationه و نوع منطقی رو از نوع فیزیکی جدا میکنه
- انکودینگهای سبک و آبشاری اجازهٔ محاسبه روی دادهٔ فشرده رو میدن، بدون دیکامپرس کامل
- ادعای ارائه: حدود ۳۰ برابر سریعتر از Parquet تو اسکن S3 به GPU و حدود ۱۰۰ برابر تو دسترسی تصادفی
- zone-map داخل ZonedLayout قبل از خوندن داده، سگمنتهای بیربط رو هرس میکنه
- با بافر pinned، kTLS و کلاینت HTTP اختصاصی مسیر به یک کپی میرسه و دمو ۶۰ گیگابیت بر ثانیه رو نگه میداره




