بارهای کاری یادگیری ماشینی به مجموعه داده های بزرگی نیاز دارند، در حالی که جریان های کاری یادگیری ماشینی به توان عملیاتی داده بالایی نیاز دارند. ما می توانیم خط لوله داده را برای دستیابی به هر دو بهینه کنیم.
بارهای کاری یادگیری ماشینی (ML) به زیرساخت کارآمد برای به دست آوردن نتایج سریع نیاز دارد. آموزش مدل به شدت بر مجموعه داده های بزرگ متکی است. قیف کردن این داده ها از ذخیره سازی به کلاستر آموزشی اولین گام از هر گردش کار ML است که به طور قابل توجهی بر کارایی آموزش مدل تأثیر می گذارد.
مهندسین پلتفرم داده و هوش مصنوعی مدتهاست که با در نظر گرفتن این سؤالات به مدیریت دادهها میپردازند:
- دسترسی به دادهها: چگونه میتوان دادههای آموزشی را زمانی که دادهها چندین منبع را در بر میگیرند و دادهها از راه دور ذخیره میشوند در دسترس قرار دهیم؟
- خطسازی دادهها: چگونه دادهها را بهعنوان خط لولهای مدیریت کنیم که به طور مداوم دادهها را بدون انتظار به جریان کار آموزشی وارد میکند؟
- عملکرد و استفاده از GPU: چگونه میتوان به تأخیر کم متادیتا و توان عملیاتی داده بالا دست یافت تا GPUها را مشغول نگه دارد؟
این مقاله راه حل جدیدی را برای هماهنگ کردن داده ها برای خطوط لوله یادگیری ماشینی سرتاسر مورد بحث قرار می دهد که به سؤالات بالا می پردازد. من چالشها و مشکلات رایج را بیان میکنم و سپس یک تکنیک جدید، هماهنگسازی دادهها را برای بهینهسازی خط لوله داده برای یادگیری ماشین پیشنهاد میکنم.
چالش های رایج داده آموزش مدل
یک خط لوله یادگیری ماشینی سرتاسر، دنباله ای از مراحل از پیش پردازش و پاکسازی داده ها تا آموزش مدل تا استنتاج است. آموزش حیاتی ترین و پرمخاطب ترین بخش کل گردش کار است.
نمودار زیر یک خط لوله معمولی ML را نشان می دهد. با جمع آوری داده ها شروع می شود، سپس آماده سازی داده ها و در نهایت آموزش مدل می آید. در طول مرحله جمعآوری دادهها، مهندسان پلتفرم داده معمولاً زمان قابلتوجهی را صرف میکنند تا دادهها را برای مهندسان داده در دسترس قرار دهند، آنها دادهها را برای دانشمندان داده برای ساخت و تکرار مدلها آماده میکنند.
در طول مرحله آموزش، حجم بیسابقهای از دادهها برای اطمینان از تغذیه مداوم دادهها به GPUهایی که مدلها را تولید میکنند، پردازش میشوند. مدیریت داده ها برای پشتیبانی از پیچیدگی ML و معماری اجرایی آن ضروری است. در خط لوله داده، هر مرحله چالش های فنی خود را ارائه می دهد.
چالش جمع آوری داده ها – داده ها همه جا هستند
آموزش از مجموعه دادههای بزرگ سود میبرد، بنابراین جمعآوری دادهها از همه منابع مرتبط بسیار مهم است. وقتی دادهها در دریاچههای داده، انبارهای داده، و ذخیرههای اشیاء، چه در محل، چه در فضای ابری یا در چندین مکان جغرافیایی توزیع شده باشند، دیگر امکان ترکیب همه دادهها در یک منبع یکپارچه وجود ندارد. در سیلوهای داده، دسترسی از راه دور از طریق شبکه به طور اجتناب ناپذیری باعث تأخیر می شود. نحوه دسترسی به داده ها با حفظ عملکرد مطلوب یک چالش مهم است.
چالش آمادهسازی داده – آمادهسازی دادههای سریالی
آمادهسازی دادهها با مصرف دادهها از مرحله جمعآوری آغاز میشود و شامل پاکسازی، ETL و تبدیل قبل از تحویل دادهها برای آموزش مدل است. اگر این مرحله به صورت مجزا در نظر گرفته شود، خط لوله داده سریالی می شود و زمان اضافی در انتظار داده های آماده شده برای خوشه آموزشی تلف می شود. بنابراین، مهندسان پلتفرم باید نحوه ایجاد خط لوله داده موازی شده را بیابند و هم اشتراک گذاری داده کارآمد و هم ذخیره کارآمد نتایج میانی را فعال کنند.
چالش آموزشی مدل – I/O محدود شده با GPU کم استفاده
آموزش مدل نیاز به پردازش صدها ترابایت داده، اغلب تعداد زیادی فایل کوچک مانند تصاویر و فایلهای صوتی دارد. آموزش شامل تکرارهایی است که به دورهها نیاز دارند تا چندین بار اجرا شوند و دسترسی مکرر به دادهها را فراهم کنند. لازم است GPU را با تغذیه مداوم با داده ها مشغول نگه دارید. بهینه سازی I/O و حفظ توان عملیاتی مورد نیاز GPU آسان نیست.
رویکردهای سنتی و مشکلات رایج
قبل از اینکه در مورد راه حل های مختلف صحبت کنم، بیایید یک سناریوی ساده را تنظیم کنیم، همانطور که در نمودار زیر نشان داده شده است. در اینجا، ما در حال آموزش در فضای ابری با استفاده از یک کلاستر GPU با چندین گره در حال اجرا TensorFlow به عنوان چارچوب ML هستیم. داده های از پیش پردازش شده در آمازون S3 ذخیره می شود. به طور کلی، دو رویکرد برای رساندن این داده ها به خوشه آموزشی وجود دارد. در ادامه در مورد آنها بحث خواهیم کرد.
رویکرد ۱: دادههای تکراری در حافظه محلی
در رویکرد اول، کل مجموعه داده از ذخیرهسازی راه دور به ذخیرهسازی محلی هر سرور برای آموزش، همانند شکل زیر تکرار میشود. بنابراین، محلی بودن داده تضمین شده است، و مشاغل آموزشی به جای بازیابی آن از حافظه راه دور، ورودی را از محلی می خوانند.
از دیدگاه خط لوله داده و ورودی/خروجی، این رویکرد بالاترین خروجی ورودی/خروجی را فراهم میکند زیرا همه دادهها محلی هستند. پردازندههای گرافیکی به جز در ابتدا مشغول خواهند ماند، زیرا آموزش باید منتظر بماند تا دادهها به طور کامل از ذخیرهسازی شی در کلاستر آموزشی کپی شوند.
با این وجود، این رویکرد برای همه شرایط مناسب نیست.
ابتدا، مجموعه داده باید در فضای ذخیره محلی مجموع قرار گیرد. با افزایش اندازه مجموعه داده ورودی، فرآیند کپی داده طولانی تر و مستعد خطا می شود و زمان بیشتری را با هدر رفتن منابع GPU می گیرد.
دوم، کپی کردن حجم زیادی از داده ها در هر ماشین آموزشی، فشار قابل توجهی بر روی سیستم ذخیره سازی و شبکه ایجاد می کند. در شرایطی که داده های ورودی اغلب تغییر می کنند، همگام سازی داده ها می تواند بسیار پیچیده باشد.
در نهایت، کپی کردن دستی دادهها زمانبر و مستعد خطا است، زیرا نگهداشتن دادهها در فضای ذخیرهسازی ابری با دادههای آموزشی همگامسازی شده است.
رویکرد ۲: دسترسی مستقیم به فضای ذخیرهسازی ابری
رویکرد متداول دیگر این است که آموزش را با مجموعه داده هدف در ذخیره سازی راه دور به طور مستقیم وصل کنید، همانطور که در زیر نشان داده شده است. با این رویکرد، اندازه مجموعه داده مانند راه حل قبلی مشکلی نیست. اما با چندین چالش جدید مواجه است.
ابتدا، از دیدگاه I/O و خط لوله، داده ها به صورت سریال پردازش می شوند. تمام عملیات دسترسی به داده ها باید از طریق شبکه بین ذخیره سازی شی و کلاستر آموزشی انجام شود و I/O را به یک گلوگاه تبدیل کند. در نتیجه، پردازندههای گرافیکی چرخههایی را در انتظار میگذرانند زیرا توان ورودی/خروجی توسط شبکه محدود میشود.
دوم، وقتی مقیاس آموزش بزرگ است، همه گرههای آموزشی به طور همزمان به مجموعه دادههای مشابهی از یک ذخیرهسازی راه دور دسترسی پیدا میکنند و فشار زیادی به سیستم ذخیرهسازی اضافه میکنند. فضای ذخیرهسازی احتمالاً به دلیل دسترسی بسیار همزمان شلوغ میشود و در نتیجه استفاده از GPU کم میشود.
سوم، اگر مجموعه داده از تعداد زیادی فایل کوچک تشکیل شده باشد، درخواستهای دسترسی به ابرداده بخش بزرگی از درخواستهای داده را تشکیل میدهند. در نتیجه، بازیابی مستقیم ابرداده تعداد زیادی فایل یا دایرکتوری از شیفروشی به گلوگاه عملکرد تبدیل میشود و همچنین هزینه عملیات ابرداده را افزایش میدهد.
رویکرد توصیه شده – داده های خود را هماهنگ کنید
برای پرداختن به این چالشها و دامها، باید معماریهای پلتفرم داده را در هنگام برخورد با I/O در خط لوله یادگیری ماشین تجدید نظر کنیم. در اینجا من یک رویکرد جدید، هماهنگ سازی داده ها را برای تسریع خط لوله ML سرتاسر توصیه می کنم. فنآوریهای هماهنگسازی داده، دسترسی به دادهها را در سراسر سیستمهای ذخیرهسازی انتزاعی میکنند، همه دادهها را مجازی میکنند، و دادهها را از طریق APIهای استاندارد و یک فضای نام جهانی به برنامههای مبتنی بر داده ارائه میکنند.
سیلوهای داده را با استفاده از انتزاع متحد کنید
بهجای کپی کردن و جابجایی دادهها، آنها را در جایی که هستند رها کنید، چه در محل یا در فضای ابری. هماهنگ سازی داده ها می تواند به انتزاع داده ها برای ایجاد یک نمای یکپارچه کمک کند. این امر پیچیدگی مرحله جمع آوری داده ها را به میزان قابل توجهی کاهش می دهد.
از آنجایی که هماهنگسازی دادهها از قبل میتواند با سیستمهای ذخیرهسازی ادغام شود، چارچوبهای یادگیری ماشین فقط باید با یک پلتفرم هماهنگسازی داده تعامل داشته باشند تا به دادهها از هر ذخیرهسازی متصل دسترسی داشته باشند. در نتیجه، آموزش را می توان بر روی تمام داده ها از هر منبعی انجام داد که منجر به بهبود کیفیت مدل می شود. نیازی به انتقال دستی داده ها به منبع مرکزی نیست. همه چارچوبهای محاسباتی، از جمله Spark، Presto، PyTorch، و TensorFlow، میتوانند بدون نگرانی در مورد محل اقامت به دادهها دسترسی داشته باشند.
از کش توزیع شده برای محل داده استفاده کنید
بهجای کپی کردن کل مجموعه دادهها در هر ماشین، توصیه میکنم حافظه پنهان توزیعشده را پیادهسازی کنید، جایی که دادهها میتوانند به طور مساوی در سراسر خوشه توزیع شوند. حافظه پنهان توزیع شده به ویژه زمانی مفید است که مجموعه داده آموزشی بسیار بزرگتر از ظرفیت ذخیره سازی یک گره باشد. همچنین زمانی که داده ها از راه دور هستند کمک می کند زیرا داده ها به صورت محلی ذخیره می شوند. آموزش ML سریعتر و مقرون به صرفه تر می شود زیرا هنگام دسترسی به داده ها، ورودی/خروجی شبکه وجود ندارد.
شکل بالا یک شی ذخیرهسازی را نشان میدهد که در آن تمام دادههای آموزشی ذخیره میشوند، و دو فایل برای نمایش مجموعه داده (/path1/file1 و /path2/file2) در آن ذخیره میشوند. به جای ذخیره همه بلوک های فایل در هر ماشین آموزشی، بلوک ها در چندین ماشین توزیع می شوند. برای جلوگیری از از دست رفتن داده ها و بهبود همزمانی خواندن، هر بلوک را می توان به طور همزمان در چندین سرور ذخیره کرد.
بهینه سازی اشتراک گذاری داده در سراسر خط لوله
درجات بالایی از همپوشانی بین خواندن و نوشتن داده های انجام شده توسط یک کار آموزشی ML وجود دارد، هم در داخل و هم در بین مشاغل. به اشتراک گذاری داده ها می تواند اطمینان حاصل کند که تمام چارچوب های محاسباتی به داده های ذخیره شده قبلی برای خواندن و نوشتن برای مرحله بعدی، دسترسی دارند. به عنوان مثال، اگر از Spark برای ETL در مرحله آمادهسازی داده استفاده میکنید، اشتراکگذاری دادهها میتواند اطمینان حاصل کند که دادههای خروجی ذخیره شده و برای مراحل بعدی در دسترس هستند. از طریق اشتراک گذاری داده، کل خط لوله داده عملکرد سرتاسر بهتری را به دست می آورد.
با موازیسازی پیشبارگذاری، ذخیرهسازی و آموزش دادهها، خط لوله داده را هماهنگ کنید
ما خط لوله داده را با اجرای پیش بارگیری و ذخیره سازی بر اساس تقاضا هماهنگ می کنیم. تصویر زیر نشان میدهد که بارگذاری دادهها از منبع با ذخیرهسازی داده میتواند به موازات کار آموزشی واقعی انجام شود. در نتیجه، آموزش هنگام دسترسی به دادهها بدون نیاز به منتظر ماندن برای ذخیره اطلاعات در حافظه پنهان قبل از آموزش، از توان عملیاتی بالای داده بهره میبرد.
اگرچه در ابتدا مقداری تأخیر I/O وجود خواهد داشت، زمان انتظار کاهش می یابد زیرا داده ها از قبل در حافظه پنهان بارگذاری شده اند. از طریق این رویکرد، می توانید مراحل را با هم همپوشانی کنید. بارگیری داده ها از ذخیره سازی اشیاء به کلاستر آموزشی، ذخیره سازی حافظه پنهان، بارگیری داده ها بر حسب تقاضا در آموزش و آموزش همگی می توانند به صورت موازی انجام شوند و کل فرآیند را تا حد زیادی تسریع کنند.
بیایید رویکرد پیشنهادی جدید را با دو رویکرد سنتی مقایسه کنیم. با هماهنگ کردن داده ها در طول مراحل یک خط لوله یادگیری ماشین، اجرای سریال و ناکارآمدی های مرتبط با جریان داده ها از یک مرحله به مرحله دیگر را حذف می کنیم. این به نوبه خود نرخ استفاده بالایی از GPU را به همراه خواهد داشت.
داده های تکراری در حافظه محلی |
دسترسی مستقیم به فضای ذخیره سازی ابری |
ارکستراسیون داده |
|
محل داده |
✓ |
✓ |
|
بدون محدودیت در اندازه مجموعه داده |
✓ |
✓ |
|
قبل از آموزش نیازی به کپی کردن اطلاعات کامل به صورت دستی نیست |
✓ |
✓ |
✓ |
ثبات داده ها تضمین شده است |
✓ |
✓ |
|
استفاده از GPU زیاد است |
✓ |
✓ |
داده های تکراری در حافظه محلی
دسترسی مستقیم به فضای ذخیره سازی ابری
ارکستراسیون داده
محل داده
✓
✓
بدون محدودیت در اندازه مجموعه داده
✓
✓
قبل از آموزش نیازی به کپی کردن اطلاعات کامل به صورت دستی نیست
✓
✓
✓
ثبات داده ها تضمین شده است
✓
✓
استفاده از GPU زیاد است
✓
✓
چگونه داده ها را برای بارهای کاری ML خود هماهنگ کنیم
بیایید از Alluxio به عنوان مثال در اینجا استفاده کنیم تا نحوه استفاده از هماهنگ سازی داده ها را به شما نشان دهیم. باز هم از همان سناریوی ساده شده استفاده خواهیم کرد. برای برنامهریزی کارهای TensorFlow، میتوانید از Kubernetes یا از خدمات ابر عمومی استفاده کنید.
استفاده از Alluxio برای هماهنگی یادگیری ماشین و آموزش عمیق معمولاً شامل سه مرحله است:
- Alluxio را در کلاستر آموزشی مستقر کنید.
- Alluxio را به عنوان یک پوشه محلی برای کارهای آموزشی نصب کنید.
- داده ها را از پوشه های محلی (با پشتیبانی Alluxio) با استفاده از یک اسکریپت آموزشی بارگیری کنید.
دادهها در سیستمهای ذخیرهسازی مختلف را میتوان از طریق Alluxio بلافاصله پس از نصب و دسترسی شفاف از طریق اسکریپتهای بنچمارک بدون تغییر TensorFlow انجام داد. این امر به طور قابل توجهی توسعه برنامه را ساده می کند، که در غیر این صورت به ادغام هر سیستم ذخیره سازی خاص و همچنین پیکربندی اعتبارنامه ها نیاز دارد.
برای اجرا میتوانید راهنمای اینجا را دنبال کنید تشخیص تصویر با استفاده از Alluxio با TensorFlow.
بهترین شیوه های هماهنگ سازی داده ها
از آنجایی که هیچ رویکرد یکسانی برای همه وجود ندارد، بهتر است از هماهنگ سازی داده ها در سناریوهای زیر استفاده کنید:
- شما به آموزش توزیع شده نیاز دارید.
- مقدار زیادی از داده های آموزشی (۱۰ ترابایت یا بیشتر) وجود دارد، به خصوص اگر فایل ها و تصاویر کوچک زیادی در داده های آموزشی وجود داشته باشد.
- منابع GPU شما به اندازه کافی توسط I/O شبکه اشغال نشده است.
- خط لوله شما از بسیاری از منابع داده و چندین چارچوب آموزشی/محاسباتی استفاده می کند.
- در حین رسیدگی به درخواست های آموزشی اضافی، فضای ذخیره سازی اساسی باید پایدار باشد.
- از همان مجموعه داده توسط چندین گره آموزشی یا کار استفاده می شود.
از آنجایی که تکنیکهای یادگیری ماشین به تکامل خود ادامه میدهند و چارچوبها وظایف پیچیدهتری را انجام میدهند، روشهای ما برای مدیریت خط لوله داده نیز بهبود مییابد. با گسترش هماهنگ سازی داده ها به خط لوله داده، می توانید کارایی و استفاده بهتری از منابع برای خط لوله آموزشی انتها به انتها خود داشته باشید.
Bin Fan معاون منبع باز در Alluxio و نگهدارنده PMC منبع باز Alluxio است. قبل از پیوستن به Alluxio به عنوان یک مهندس موسس، او برای گوگل برای ساخت زیرساخت ذخیره سازی نسل بعدی کار می کرد. بن دکترای خود را در علوم کامپیوتر از دانشگاه کارنگی ملون در زمینه طراحی و اجرای سیستم های توزیع شده دریافت کرد.
—
New Tech Forum مکانی برای کاوش و بحث در مورد فناوری سازمانی نوظهور در عمق و وسعت بی سابقه ای فراهم می کند. انتخاب ذهنی است، بر اساس انتخاب ما از فناوری هایی که معتقدیم مهم هستند و برای خوانندگان InfoWorld بیشترین علاقه را دارند. InfoWorld وثیقه بازاریابی را برای انتشار نمی پذیرد و حق ویرایش تمام محتوای ارائه شده را برای خود محفوظ می دارد. همه سوالات را به newtechforum@infoworld.com ارسال کنید.
پست های مرتبط
هماهنگ سازی داده ها برای خطوط لوله یادگیری ماشین
هماهنگ سازی داده ها برای خطوط لوله یادگیری ماشین
هماهنگ سازی داده ها برای خطوط لوله یادگیری ماشین