این پست وبلاگ توسط جاناتان لی، نلسون لیونگ، پل مین و تروی اسکیلاچی از اینتل نوشته شده است.
In قسمت 1 در این پست، نحوه همکاری Intel®3DAT با آن را مورد بحث قرار دادیم خدمات حرفه ای یادگیری ماشین AWS (MLPS) برای ساخت یک برنامه کاربردی AI SaaS مقیاس پذیر. 3DAT از بینایی کامپیوتر و هوش مصنوعی برای شناسایی، ردیابی و تجزیه و تحلیل بیش از 1,000 نقطه داده بیومکانیک از ویدئوهای استاندارد استفاده می کند. این به مشتریان اجازه می دهد تا محصولات غنی و قدرتمند مبتنی بر بیومکانیک، مانند برنامه های کاربردی وب و تلفن همراه با داده های عملکرد دقیق و تجسم های سه بعدی ایجاد کنند.
در قسمت 2 این پست، به هر مرحله از معماری عمیق تر می پردازیم. ما خدمات AWS مورد استفاده برای برآورده کردن الزامات طراحی 3DAT را بررسی می کنیم آمازون کینزیس جریان داده و سرویس الاستیک کوبرنتز آمازون (Amazon EKS)، به منظور استقرار مقیاسپذیر مدلهای برآورد پوز لازم برای این نرمافزار بهعنوان یک اپلیکیشن سرویس (SaaS).
نمای کلی معماری
هدف اولیه تیم MLPS تولید خطوط لوله مدل تخمین حالت دو بعدی و سه بعدی و ایجاد یک برنامه کاربردی و مقیاس پذیر بود. نمودار زیر معماری راه حل را نشان می دهد.
معماری کامل به پنج جزء اصلی تقسیم می شود:
- لایه های رابط کاربری اپلیکیشن
- پایگاه داده
- ارکستراسیون گردش کار
- تولید استنتاج تخمین پوز مقیاس پذیر
- نظارت عملیاتی
بیایید به جزئیات هر جزء، تعاملات آنها و منطق پشت انتخاب های طراحی بپردازیم.
لایه های رابط کاربری اپلیکیشن
نمودار زیر لایه های رابط برنامه را نشان می دهد که دسترسی کاربر و کنترل برنامه و منابع آن را فراهم می کند.
این اکسس پوینت ها از موارد استفاده متفاوت بر اساس شخصیت های مختلف مشتری پشتیبانی می کنند. به عنوان مثال، یک کاربر برنامه میتواند یک کار را از طریق CLI ارسال کند، در حالی که یک توسعهدهنده میتواند با استفاده از Python SDK یک برنامه بسازد و هوش تخمین پوز را در برنامههای خود تعبیه کند. CLI و SDK به عنوان اجزای ماژولار ساخته شده اند - هر دو لایه بسته بندی لایه API هستند که با استفاده از دروازه API آمازون برای حل تماس های API و مرتبط با AWS Lambda توابع، که از منطق باطن مرتبط با هر فراخوانی API مراقبت می کنند. این لایهها برای تیم Intel OTG مؤلفهای حیاتی بودند، زیرا پایگاه گستردهای از مشتریان را باز میکنند که میتوانند به طور مؤثر از این برنامه SaaS استفاده کنند.
لایه API
این راه حل دارای مجموعه هسته ای از نه API است که با انواع اشیایی که روی این پلتفرم کار می کنند مطابقت دارد. هر API یک فایل پایتون دارد که اقدامات API قابل اجرا را تعریف می کند. به ایجاد اشیاء جدید به طور خودکار یک شناسه شی به صورت متوالی اختصاص داده می شود. ویژگی های این اشیا در ذخیره و ردیابی می شوند Amazon Aurora بدون سرور پایگاه داده با استفاده از این شناسه بنابراین، اقدامات API به توابعی که در یک فایل مرکزی که حاوی منطق باطن برای جستجو در پایگاه داده شفق قطبی است، تعریف شده است. این منطق باطن از Boto3 استفاده می کند سرویس گیرنده Amazon RDS DataService برای دسترسی به کلاستر پایگاه داده
یک استثنا است /job
API که دارای یک create_job
روشی که ارسال ویدیو را برای ایجاد یک کار پردازشی جدید مدیریت می کند. این روش شروع می کند توابع مرحله AWS منطق گردش کار برای اجرای کار با عبور در یک job_id
، این روش از Boto3 استفاده می کند کلاینت توابع مرحله برای تماس با start_execution
روش برای یک مشخص شده stateMachineARN
(نام منبع آمازون).
هشت API شی دارای روش ها و الگوی دسترسی مشابهی هستند که در جدول زیر خلاصه شده است.
نوع روش | نام عملکرد | توضیحات: |
شو | list_[object_name]s |
تمام اشیاء از این نوع را از پایگاه داده انتخاب کرده و نمایش می دهد. |
پست | create_[object] |
یک رکورد شی جدید با ورودی های مورد نیاز را در پایگاه داده درج می کند. |
شو | get_[object] |
ویژگی های شی را بر اساس شناسه شی از پایگاه داده انتخاب می کند و نمایش می دهد. |
قرار دادن | update_[object] |
یک رکورد شی موجود را با ورودی های مورد نیاز به روز می کند. |
حذف | delete_[object] |
یک رکورد شی موجود را از پایگاه داده بر اساس شناسه شی حذف می کند. |
جزئیات نه API به شرح زیر است:
- /کاربر - کاربر هویت شخصی است که مجاز به ارسال مشاغل به این برنامه است. ایجاد یک کاربر نیازمند نام کاربری، ایمیل کاربر و شناسه گروهی است که کاربر به آن تعلق دارد.
- /گروه کاربران - گروه کاربری مجموعه ای از کاربران است. هر گروه کاربری به یک پروژه و یک مجموعه پارامتر خط لوله نگاشت می شود. برای داشتن سطوح مختلف (از نظر منابع زیرساختی و پارامترهای خط لوله)، کاربران به گروه های کاربری تقسیم می شوند. هر کاربر می تواند تنها به یک گروه کاربری تعلق داشته باشد. ایجاد یک گروه کاربری به شناسه پروژه، شناسه مجموعه پارامتر خط لوله، نام گروه کاربر و توضیحات گروه کاربر نیاز دارد. توجه داشته باشید که گروه های کاربری با نقش های کاربری تعریف شده در حساب AWS متفاوت هستند. مورد دوم برای ارائه سطوح مختلف دسترسی بر اساس نقش های دسترسی آنها (به عنوان مثال مدیر) استفاده می شود.
- /پروژه - یک پروژه برای گروه بندی مجموعه های مختلف منابع زیرساختی با هم استفاده می شود. یک پروژه با یک واحد مرتبط است
project_cluster_url
(خوشه شفق) برای ضبط کاربران، مشاغل و سایر ابرداده ها، الفproject_queue_arn
(Kinesis Data Streams ARN)، و یک محیط زمان اجرا محاسباتی (در حال حاضر از طریق Cortex کنترل می شود) که برای اجرای استنتاج بر روی دسته های فریم یا پس پردازش روی فیلم ها استفاده می شود. هر گروه کاربری به یک پروژه مرتبط است، و این مکانیسم نحوه فعال کردن سطوح مختلف از نظر تأخیر و قدرت محاسباتی برای گروههای مختلف کاربران است. ایجاد یک پروژه به نام پروژه، URL خوشه پروژه و ARN صف پروژه نیاز دارد. - /خط لوله - یک خط لوله با یک پیکربندی واحد برای دنباله ای از ظروف پردازشی مرتبط است که پردازش ویدیویی را در خوشه تولید استنتاج Amazon EKS که توسط Cortex هماهنگ شده است انجام می دهد (برای جزئیات بیشتر به بخش تولید استنتاج پردازش ویدیو مراجعه کنید). به طور معمول، این شامل سه کانتینر است: پیش پردازش و رمزگشایی، تشخیص شی و تخمین موقعیت. به عنوان مثال، مرحله رمزگشایی و تشخیص شی برای خطوط لوله دو بعدی و سه بعدی یکسان است، اما تعویض آخرین کانتینر با استفاده از HRNet یا 2DMPPE منجر به تنظیم پارامتر برای خطوط لوله پردازش 3 بعدی در مقابل 3 بعدی می شود. میتوانید پیکربندیهای جدیدی را برای تعریف خطوط لوله احتمالی که میتوانند برای پردازش استفاده شوند، ایجاد کنید، و به عنوان ورودی، یک فایل پایتون جدید در مخزن Cortex نیاز دارد که دنبالهای از فراخوانیهای نقطه پایانی مدل را که خط لوله را تعریف میکنند، توضیح دهد (به بخش تولید استنتاج پردازش ویدیو مراجعه کنید. ). نقطه پایانی خط لوله، نقطه پایانی Cortex است که برای پردازش یک فریم فراخوانی می شود. ایجاد خط لوله به نام خط لوله، شرح خط لوله و نقطه پایانی خط لوله نیاز دارد.
- /pipeline_parameter_set - مجموعه پارامترهای خط لوله یک مجموعه JSON منعطف از پارامترهای متعدد (یک زمان اجرای پیکربندی خط لوله) برای یک خط لوله خاص است، و برای ارائه انعطاف پذیری برای سفارشی سازی در آینده زمانی که زمان های اجرا پیکربندی خط لوله متعدد مورد نیاز است، اضافه می شود. گروه های کاربر را می توان با یک مجموعه پارامتر خط لوله خاص مرتبط کرد و هدف آن داشتن گروه های مختلف پارامترها در هر گروه کاربر و در هر خط لوله است. این یک افزوده مهم آیندهنگر برای Intel OTG بود تا سفارشیسازیهایی را ایجاد کند که از قابلیت حمل پشتیبانی میکند، زیرا مشتریان مختلف، بهویژه ISVها، شروع به استفاده از برنامه کردند.
- /pipeline_parameters - مجموعه ای از پارامترهای خط لوله نمونه ای از مجموعه پارامترهای خط لوله است. این باعث می شود که یک نگاشت 1: بسیاری از پارامترهای خط لوله بر روی پارامترهای خط لوله تنظیم شود. این API به شناسه خط لوله نیاز دارد تا با مجموعه پارامترهای خط لوله مرتبط شود که ایجاد خط لوله را برای نگاشت 1:1 از پارامترهای خط لوله به خط لوله امکان پذیر می کند. ورودی های دیگر مورد نیاز این API عبارتند از شناسه مجموعه پارامتر خط لوله، مقدار پارامترهای خط لوله و نام پارامترهای خط لوله.
- /ویدئو - یک شیء ویدیویی برای تعریف ویدیوهای فردی استفاده می شود که یک بسته .zip را تشکیل می دهند که در طول یک کار ارسال شده است. این فایل پس از ارسال به چندین ویدیو تقسیم می شود. یک ویدیو مربوط به
job_id
برای شغلی که بسته .zip ارسال شده است، و سرویس ذخیره سازی ساده آمازون مسیرهای (Amazon S3) برای مکان ویدیوهای جدا شده خام و نتایج پس از پردازش هر ویدیو. شی ویدیو همچنین حاوی درصد پیشرفت ویدیو است که به طور مداوم در طول پردازش دستههای فریم جداگانه آن ویدیو بهروزرسانی میشود، و همچنین یک پرچم وضعیت ویدیو برای کامل یا کامل نبودن. ایجاد یک ویدیو به شناسه شغل، مسیر ویدیو، مسیر نتایج ویدیو، درصد پیشرفت ویدیو و وضعیت ویدیو نیاز دارد. - /frame_batch - A
frame_batch
شی یک دسته کوچک از فریم است که با نمونه برداری از یک ویدیو ایجاد می شود. جداسازی یک ویدیو به دستههای فریم با اندازه معمولی، اهرمی برای تنظیم تأخیر فراهم میکند و موازیسازی و توان عملیاتی را افزایش میدهد. این واحد دانه ای است که از طریق جریان داده های Kinesis برای استنتاج اجرا می شود. ایجاد یک دسته فریم به شناسه ویدیو، شماره شروع دسته فریم، شماره پایان دسته فریم، مسیر ورودی دسته فریم، مسیر نتایج دسته فریم و وضعیت دسته فریم نیاز دارد. - /کار – این API تعاملی برای ارسال فایل برای شروع یک کار پردازشی استفاده می شود. این API عملکرد متفاوتی با سایر APIهای شی دارد زیرا مسیر مستقیم برای تعامل با هماهنگی گردش کار توابع مرحله پشتی پردازش ویدیو و خوشه آمازون EKS است. این API به شناسه کاربر، شناسه پروژه، شناسه خط لوله، شناسه مجموعه پارامتر خط لوله، پارامترهای شغلی و وضعیت شغلی نیاز دارد. در پارامترهای job، یک مسیر فایل ورودی مشخص شده است، که مکانی در Amazon S3 است که بسته .zip ویدیوهایی که قرار است پردازش شوند، قرار دارد. آپلود فایل با
upload_handler
روشی که یک URL تعیین شده S3 را برای کاربر ایجاد می کند تا یک فایل را قرار دهد. WORKFLOW_STATEMACHINE_ARN یک متغیر محیطی است که به آن ارسال می شودcreate_job
API برای تعیین محل ارسال بسته .zip ویدیویی با مسیر فایل ورودی برای شروع یک کار.
جدول زیر خلاصه ای از توابع API است.
نوع روش | عملکرد | توضیحات: |
شو | list_jobs |
همه کارها را از پایگاه داده انتخاب می کند و نمایش می دهد. |
پست | create_ job |
یک رکورد شغلی جدید با شناسه کاربر، شناسه پروژه، شناسه خط لوله، شناسه مجموعه پارامتر خط لوله، مسیر نتایج کار، پارامترهای کار، و وضعیت کار درج می کند. |
شو | get_ job |
ویژگی های شغل را بر اساس شناسه شغلی از پایگاه داده انتخاب می کند و نمایش می دهد. |
شو | upload_handler |
یک URL تعیین شده S3 را به عنوان مکان آپلود فایل .zip ایجاد می کند. به نام سطل S3 نیاز دارد و انتظار دارد یک نوع فایل برنامه/زیپ داشته باشد. |
لایه SDK پایتون
این تیم با تکیه بر APIها، یک کتابخانه کلاینت Python SDK به عنوان یک بسته بندی ایجاد کرد تا دسترسی توسعه دهندگان به روش های API را آسان تر کند. آنها از منبع باز استفاده کردند شعر، که بسته بندی پایتون و مدیریت وابستگی را مدیریت می کند. یک را ایجاد کردند client.py
فایلی که حاوی توابعی است که هر یک از APIها را با استفاده از پایتون بسته بندی می کند requests
کتابخانه ای برای رسیدگی به درخواست ها و استثناهای API.
توسعه دهندگان برای راه اندازی Intel 3DAT SDK، باید بسته Poetry را نصب و بسازند. سپس، آنها می توانند یک واردات ساده پایتون را اضافه کنند intel_3dat_sdk
به هر کد پایتون
برای استفاده از کلاینت، می توانید یک نمونه از کلاینت ایجاد کنید و نقطه پایانی API را مشخص کنید:
سپس می توانید از کلاینت برای فراخوانی روش های فردی مانند the استفاده کنید create_pipeline
روش (به کد زیر مراجعه کنید)، با در نظر گرفتن آرگومان های مناسب مانند نام خط لوله و توضیحات خط لوله.
لایه CLI
به طور مشابه، تیم بر روی APIها ساخته شد تا یک رابط خط فرمان برای کاربرانی که میخواهند بدون نیاز به نوشتن کد پایتون به روشهای API با یک رابط ساده دسترسی داشته باشند، ایجاد کردند. آنها از بسته منبع باز پایتون استفاده کردند کلیک کنید (کیت ایجاد رابط خط فرمان). مزایای این چارچوب عبارتند از تودرتوی دلخواه دستورات، تولید خودکار صفحه راهنما و پشتیبانی از بارگذاری تنبلی از دستورات فرعی در زمان اجرا. در همان client.py
مانند فایل SDK، هر روش کلاینت SDK با استفاده از کلیک پیچیده شد و آرگومان های روش مورد نیاز به پرچم های خط فرمان تبدیل شدند. سپس هنگام فراخوانی فرمان SDK از ورودی های پرچم استفاده می شود.
برای راه اندازی CLI، می توانید از CLI configure
فرمان از شما خواسته می شود URL نقطه پایانی را دریافت کنید:
اکنون می توانید از CLI برای فراخوانی دستورات مختلف مربوط به متدهای API استفاده کنید، به عنوان مثال:
پایگاه داده
به عنوان یک پایگاه داده، این برنامه از Aurora Serverless برای ذخیره ابرداده های مرتبط با هر یک از API ها با MYSQL به عنوان موتور پایگاه داده استفاده می کند. انتخاب سرویس پایگاه داده بدون سرور Aurora از اصل طراحی پیروی می کند تا در صورت امکان با استفاده از سرویس های AWS بدون سرور، سربار زیرساخت را به حداقل برساند. نمودار زیر این معماری را نشان می دهد.
La حالت موتور بدون سرور الگوی استفاده متناوب را برآورده می کند زیرا این برنامه به مشتریان جدید می رسد و حجم کاری هنوز نامشخص است. هنگام راهاندازی یک نقطه پایانی پایگاه داده، اندازه نمونه DB خاص مورد نیاز نیست، فقط حداقل و حداکثر محدوده برای ظرفیت خوشهها. Aurora Serverless تدارک مناسب ناوگان روتر را مدیریت می کند و حجم کار را بین منابع توزیع می کند. Aurora Serverless به طور خودکار ذخیره پشتیبان را برای حداقل 1 روز تا 35 روز انجام می دهد. تیم برای ایمنی با تنظیم پیش فرض روی حداکثر مقدار 35 بهینه شد.
علاوه بر این، تیم استفاده از API داده برای مدیریت دسترسی به خوشه بدون سرور Aurora، که به اتصال دائمی نیاز ندارد، و در عوض یک نقطه پایانی امن HTTP و یکپارچه سازی با AWS SDK ها را فراهم می کند. این ویژگی استفاده می کند مدیر اسرار AWS برای ذخیره اعتبار پایگاه داده، بنابراین نیازی به ارسال صریح اعتبار وجود ندارد. اسکریپت های CREATE TABLE در فایل های .sql برای هر یک از XNUMX جدولی که با XNUMX API مطابقت دارند، نوشته شد. از آنجا که این پایگاه داده حاوی تمام ابرداده ها و وضعیت اشیاء در سیستم بود، روش های API با استفاده از دستورات SQL مناسب اجرا شدند (به عنوان مثال select * from Job
برای list_jobs
API) و به execute_statement
روش از مشتری RDS آمازون در Data API.
ارکستراسیون گردش کار
ستون فقرات کاربردی برنامه با استفاده از توابع Step برای هماهنگ کردن گردش کار، همانطور که در نمودار زیر نشان داده شده است، مدیریت شد.
ماشین حالت متشکل از دنباله ای از چهار تابع لامبدا بود که با ارسال کار با استفاده از create_job
روش از job
API. شناسه کاربر، شناسه پروژه، شناسه خط لوله، شناسه مجموعه پارامتر خط لوله، مسیر نتایج کار، پارامترهای شغل و وضعیت شغلی برای ایجاد شغل مورد نیاز است. ابتدا می توانید یک بسته .zip از فایل های ویدیویی را با استفاده از آپلود کنید upload_handler
روشی از job API برای ایجاد URL تعیین شده S3. در حین ارسال کار، مسیر فایل ورودی از طریق پارامترهای job عبور داده می شود تا محل فایل مشخص شود. این کار، اجرای ماشین حالت گردش کار را شروع می کند و چهار مرحله اصلی را آغاز می کند:
- عملکرد لامبدا آغازگر
- تابع لامبدا ارسال کننده
- تکمیل عملکرد لامبدا را بررسی کنید
- عملکرد لامبدا کلکتور
عملکرد لامبدا آغازگر
عملکرد اصلی Initializer این است که بسته .zip را به فایل های ویدئویی جداگانه جدا کرده و آنها را برای Submitter آماده کند. ابتدا فایل .zip دانلود می شود و سپس هر فایل جداگانه از جمله فایل های ویدئویی از حالت فشرده خارج و استخراج می شود. ویدیوها، ترجیحاً با فرمت mp4، دوباره در یک سطل S3 آپلود می شوند. با استفاده از create_video
روش در video
API، یک شیء ویدیویی با مسیر ویدیو به عنوان ورودی ایجاد می شود. با این کار دادههای مربوط به هر ویدیو در پایگاه داده Aurora وارد میشود. هر نوع فایل دیگری، مانند فایلهای JSON، ابرداده در نظر گرفته میشود و به طور مشابه آپلود میشود، اما هیچ شی ویدیویی ایجاد نمیشود. لیستی از نام فایل ها و فایل های ویدئویی استخراج شده به مرحله بعد منتقل می شود.
تابع لامبدا ارسال کننده
تابع Submitter فایل های ویدیویی را که توسط Initializer استخراج شده اند می گیرد و مینی دسته هایی از فریم های ویدئویی را به عنوان تصویر ایجاد می کند. اکثر مدلهای بینایی رایانهای کنونی در حال تولید بر روی تصاویر آموزش داده شدهاند، بنابراین حتی زمانی که ویدیو پردازش میشود، ابتدا قبل از استنتاج مدل، آنها را در فریمهای تصویر جدا میکنند. این راه حل فعلی با استفاده از یک مدل تخمین پوز پیشرفته تفاوتی ندارد - دسته های فریم از ارسال کننده به Kinesis Data Streams منتقل می شوند تا مرحله تولید استنتاج را آغاز کنند.
ابتدا فایل ویدئویی توسط تابع Lambda دانلود می شود. نرخ فریم و تعداد فریم ها با استفاده از FileVideoStream
ماژول از imutils.video
کتابخانه پردازش فریم ها بر اساس یک اندازه کوچک دسته ای مشخص استخراج و گروه بندی می شوند که یکی از پارامترهای کلیدی قابل تنظیم این خط لوله است. با استفاده از کتابخانه Python pickle، داده ها سریالی شده و در Amazon S3 آپلود می شوند. پس از آن، یک شی دسته ای فریم ایجاد می شود و ورودی ابرداده در پایگاه داده Aurora ایجاد می شود. این تابع Lambda با استفاده از یک Dockerfile با وابستگی به ساخته شده است opencv-python
, numpy
و imutils
کتابخانه ها
تکمیل عملکرد لامبدا را بررسی کنید
تابع بررسی تکمیل به جستجو در پایگاه داده شفق قطبی ادامه می دهد تا ببیند برای هر ویدیو در بسته زیپ. برای این کار فعلی، چند دسته فریم در وضعیت تکمیل شده است. وقتی همه دستههای فریم برای همه ویدیوها کامل شد، این فرآیند بررسی کامل میشود.
عملکرد لامبدا کلکتور
تابع Collector خروجیهای استنباطهایی را میگیرد که بر روی هر فریم در مرحله مصرفکننده انجام شد و آنها را در یک دسته فریم و در یک ویدیو ترکیب میکند. سپس داده های ادغام شده در یک سطل S3 آپلود می شوند. سپس این تابع برای انجام هر گونه محاسبات پس پردازشی، API پس پردازش Cortex را برای یک خط لوله خاص ML فراخوانی می کند و نتایج انباشته شده توسط ویدئو را به سطل خروجی اضافه می کند. بسیاری از این معیارها در فریمها مانند سرعت، شتاب و زاویه مشترک محاسبه میشوند، بنابراین این محاسبه باید روی دادههای جمعآوری شده انجام شود. خروجی های اصلی شامل داده های نقاط کلیدی بدنه (تجمیع شده در قالب CSV)، محاسبات BMA (مانند شتاب)، و پوشش بصری نقاط کلیدی اضافه شده به هر فریم در یک فایل تصویری است.
تولید استنتاج تخمین پوز مقیاس پذیر
موتور پردازشی که مقیاس استنتاج ML را قدرت می دهد در این مرحله اتفاق می افتد. این شامل سه قطعه اصلی است که هر کدام دارای اهرمهای همزمانی خاص خود هستند که میتوانند برای معاوضه تاخیر تنظیم شوند (نمودار زیر را ببینید).
این معماری امکان آزمایش در آزمایش دستاوردهای تأخیر و همچنین انعطافپذیری برای آینده را فراهم میکند، زمانی که بار کاری ممکن است با ترکیبهای مختلف بخشهای کاربر نهایی که به برنامه دسترسی دارند تغییر کند.
جریان داده های Kinesis
تیم Kinesis Data Streams را انتخاب کرد زیرا معمولاً برای مدیریت داده های جریانی استفاده می شود و در این مورد مناسب است زیرا می تواند دسته های فریم را به روشی مشابه برای ارائه مقیاس پذیری و موازی سازی مدیریت کند. در تابع Submitter Lambda، کلاینت Kinesis Boto3 با استفاده از put_record
روش ارسال در فراداده مرتبط با یک دسته فریم، مانند شناسه دسته ای فریم، فریم شروع دسته فریم، فریم پایان دسته فریم، شکل تصویر، نرخ فریم و شناسه ویدئو.
ما پیکربندیهای مختلف صف کار و جریان داده Kinesis را برای تنظیم سطوح توانی تعریف کردیم که به سطح اولویت گروههای کاربری مختلف مرتبط است. دسترسی به سطوح مختلف قدرت پردازش با عبور از صف پروژه ARN هنگام ایجاد یک پروژه جدید با استفاده از project
API. سپس هر گروه کاربری در طول ایجاد گروه کاربری به پروژه خاصی مرتبط می شود. سه پیکربندی جریان پیش فرض در تعریف شده است مدل برنامه بدون سرور AWS الگوی زیرساخت (AWS SAM):
- استاندارد -
JobStreamShardCount
- اولویت -
PriorityJobStreamShardCount
- اولویت بالا -
HighPriorityJobStreamShardCount
تیم از چند اهرم مختلف برای متمایز کردن قدرت پردازش هر جریان یا تنظیم تأخیر سیستم استفاده کرد، همانطور که در جدول زیر خلاصه شده است.
اهرم | توضیحات: | مقدار پیش فرض |
سفال | یک خرده بومی Kinesis Data Streams است. این واحد پایه توان مصرفی است. پیشفرض 1 مگابایت بر ثانیه است که معادل 1,000 رکورد داده در ثانیه است. | 2 |
KinesisBatchSize |
حداکثر تعداد رکوردهایی که Kinesis Data Streams در یک دسته قبل از فراخوانی تابع Lambda مصرف کننده بازیابی می کند. | 1 |
KinesisParallelizationFactor |
تعداد دسته هایی که از هر خرده به طور همزمان پردازش می شود. | 1 |
فن خروجی پیشرفته | مصرفکنندگان دادهای که فن خروجی را فعال کردهاند، بهجای اشتراکگذاری توان عملیاتی بین مصرفکنندگان، یک توان انتقال اختصاصی برای هر مصرفکننده (مانند 1 مگابایت در ثانیه پیشفرض) دارند. | خاموش |
عملکرد لامبدا مصرف کننده
از دیدگاه Kinesis Data Streams، مصرفکننده داده، یک سرویس AWS است که دادهها را از یک قطعه جریان داده، زمانی که دادهها در یک جریان تولید میشوند، بازیابی میکند. این برنامه از یک تابع Consumer Lambda استفاده می کند که هنگام ارسال پیام از صف های جریان داده فراخوانی می شود. هر تابع Consumer یک دسته فریم را با انجام مراحل زیر پردازش می کند. ابتدا، به طور همزمان با API پردازنده Cortex تماس گرفته می شود، که نقطه پایانی است که خط لوله استنتاج مدل را میزبانی می کند (برای جزئیات بیشتر به بخش بعدی در مورد Amazon EKS با Cortex مراجعه کنید). نتایج در آمازون S3 ذخیره می شود و با تغییر وضعیت دسته فریم پردازش شده به پایگاه داده به روز رسانی می شود. Complete
. مدیریت خطا برای مدیریت فراخوانی Cortex API با یک حلقه تلاش مجدد برای رسیدگی به هر خطای 504 از خوشه Cortex تعبیه شده است، با تعداد دفعات تکرار روی 5 تنظیم شده است.
آمازون EKS با Cortex برای استنتاج ML
این تیم از Amazon EKS، یک سرویس مدیریت شده Kubernetes در AWS، به عنوان موتور محاسباتی برای استنتاج ML استفاده کرد. یک انتخاب طراحی برای استفاده از Amazon EKS برای میزبانی نقاط پایانی ML انجام شد، که انعطافپذیری اجرای Kubernetes بالادستی با گزینه خوشههایی را میدهد که هر دو به طور کامل در AWS از طریق مدیریت میشوند. AWS Fargate، یا سخت افزار داخلی از طریق Amazon EKS Anywhere. این یک بخش مهم از عملکرد مورد نظر Intel OTG بود، که برای مثال، گزینه اتصال این برنامه را به سخت افزار تخصصی داخلی فراهم می کرد.
سه مدل ML که بلوکهای سازنده برای ساخت خطوط لوله استنتاج بودند، یک مدل Yolo سفارشی (برای تشخیص اشیا)، یک مدل HRNet سفارشی (برای تخمین وضعیت دوبعدی) و یک مدل 2DMPPE (برای تخمین پوز سهبعدی) بودند (به قبلی مراجعه کنید. بخش ML برای جزئیات بیشتر). آنها از منبع باز استفاده کردند قشر کتابخانه ای برای مدیریت استقرار و مدیریت نقاط پایانی خط لوله استنتاج ML، و راه اندازی و استقرار خوشه های آمازون EKS. هر یک از این مدل ها در ظروف Docker بسته بندی شدند - فایل های مدل در Amazon S3 و تصاویر مدل در رجیستری ظروف الاستیک آمازون (Amazon ECR)—و به عنوان Cortex Realtime API مستقر شد. نسخههایی از کانتینرهای مدل که روی CPU و GPU اجرا میشوند برای ارائه انعطافپذیری برای نوع سختافزار محاسباتی ایجاد شدهاند. در آینده، اگر مدلها یا خطوط لوله مدل اضافی اضافه شوند، میتوانند به سادگی APIهای Cortex Realtime دیگری ایجاد کنند.
سپس آنها خطوط لوله استنتاج را با ترکیب APIهای مدل Realtime Cortex در APIهای خط لوله Realtime Cortex ساختند. یک API خط لوله Realtime منفرد شامل فراخوانی دنباله ای از APIهای مدل Realtime بود. توابع مصرف کننده لامبدا درمان شده است pipeline
API به عنوان یک جعبه سیاه، با استفاده از یک فراخوانی API برای بازیابی خروجی استنتاج نهایی برای یک تصویر. دو خط لوله ایجاد شد: یک خط لوله دو بعدی و یک خط لوله سه بعدی.
خط لوله دوبعدی یک مرحله پیش پردازش رمزگشایی، تشخیص شی با استفاده از یک مدل سفارشی Yolo برای مکان یابی ورزشکار و تولید جعبه های مرزی و در نهایت یک مدل HRNet سفارشی برای ایجاد نقاط کلیدی دوبعدی برای تخمین پوز را ترکیب می کند.
خط لوله سه بعدی یک مرحله پیش پردازش رمزگشایی، تشخیص شی با استفاده از یک مدل سفارشی Yolo برای مکان یابی ورزشکار و تولید جعبه های مرزی و در نهایت یک مدل 3DMPPE برای ایجاد نقاط کلیدی سه بعدی برای تخمین پوز را ترکیب می کند.
پس از ایجاد استنتاج در دسته ای از فریم ها، هر خط لوله همچنین شامل یک نقطه پایانی Realtime Cortex پس پردازش جداگانه است که سه خروجی اصلی را تولید می کند:
- دادههای نقاط کلیدی بدنه را در یک فایل CSV جمعآوری کرد
- محاسبات BMA (مانند شتاب)
- پوشش بصری نقاط کلیدی اضافه شده به هر فریم در یک فایل تصویری
تابع Collector Lambda ابردادههای مناسب مرتبط با یک ویدیوی خاص، مانند شناسههای فریم و مکانهای S3 خروجیهای استنتاج تخمین پوز را به نقطه پایانی ارسال میکند تا این خروجیهای پس پردازش را تولید کند.
Cortex برای ادغام با Amazon EKS طراحی شده است و فقط به یک فایل پیکربندی کلاستر و یک دستور ساده برای راه اندازی یک خوشه Kubernetes نیاز دارد:
یکی دیگر از اهرمهای تنظیم عملکرد، پیکربندی نمونه برای خوشههای محاسباتی بود. سه لایه با ترکیبهای مختلفی از نمونههای M5 و G4dn ایجاد شد که بهعنوان فایلهای .yaml با مشخصاتی مانند نام خوشه، منطقه، و پیکربندی و ترکیب نمونه کدگذاری شدهاند. نمونههای M5 مبتنی بر CPU کمهزینهتر هستند و G4dn مبتنی بر GPU با هزینهتر هستند تا برخی معاوضههای هزینه/عملکرد را ارائه دهند.
نظارت عملیاتی
برای حفظ استانداردهای گزارش عملیاتی، همه توابع لامبدا شامل کدهایی برای ثبت و دریافت گزارشها از طریق Amazon Kinesis Data Firehose. به عنوان مثال، هر دسته فریمی که از تابع Submitter Lambda پردازش میشود، با مهر زمان، نام اقدام، و پاسخ تابع Lambda JSON ثبت میشود و در Amazon S3 ذخیره میشود. نمودار زیر این مرحله را در معماری نشان می دهد.
گسترش
استقرار با استفاده از AWS SAM، یک چارچوب منبع باز برای ساخت برنامه های بدون سرور در AWS انجام می شود. AWS SAM طراحی زیرساخت شامل توابع، APIها، پایگاههای داده و نگاشت منبع رویداد را قادر میسازد تا به راحتی در محیطهای AWS جدید مستقر شوند. در طول استقرار، نحو AWS SAM به ترجمه می شود AWS CloudFormation برای رسیدگی به تامین زیرساخت ها
A template.yaml
فایل حاوی مشخصات زیرساخت به همراه پارامترهای قابل تنظیم است، مانند اهرمهای تأخیر جریان دادههای Kinesis که در بخشهای قبل توضیح داده شده است. آ samconfig.toml
فایل حاوی پارامترهای استقرار مانند نام پشته، نام سطل S3 که فایل های برنامه مانند کد تابع Lambda در آن ذخیره می شود و برچسب های منبع برای ردیابی هزینه است. یک اسکریپت پوسته deploy.sh با دستورات ساده تمام چیزی است که برای ساخت و استقرار کل الگو لازم است:
جریان کار کاربر
به طور خلاصه، پس از استقرار زیرساخت، میتوانید این گردش کار را برای شروع دنبال کنید:
- یک کلاینت Intel 3DAT با استفاده از کتابخانه مشتری ایجاد کنید.
- از API برای ایجاد یک نمونه جدید از خط لوله مطابق با نوع پردازش مورد نیاز، مانند نمونه ای برای تخمین پوز سه بعدی استفاده کنید.
- یک نمونه جدید از یک پروژه ایجاد کنید، با عبور از خوشه ARN و صف Kinesis ARN.
- یک نمونه جدید از مجموعه پارامترهای خط لوله ایجاد کنید.
- یک نمونه جدید از پارامترهای خط لوله ایجاد کنید که به مجموعه پارامترهای خط لوله نگاشت می شود.
- یک گروه کاربری جدید ایجاد کنید که با شناسه پروژه و شناسه مجموعه پارامتر خط لوله مرتبط باشد.
- یک کاربر جدید ایجاد کنید که با گروه کاربری مرتبط است.
- یک فایل zip. از ویدیوها را با استفاده از نشانی وب تعیین شده S3 که توسط تابع آپلود در job API ایجاد شده است، در Amazon S3 آپلود کنید.
- ارسال یک
create_job
تماس API، با پارامترهای شغلی که مکان فایلهای ویدیویی را مشخص میکند. این کار پردازش را شروع می کند.
نتیجه
این برنامه اکنون زنده و آماده آزمایش با ورزشکاران و مربیان است. اینتل OTG مشتاق است که فناوری نوآورانه تخمین ژست را با استفاده از بینایی رایانه برای کاربران مختلف، از توسعه دهندگان گرفته تا ورزشکاران و شرکای فروشنده نرم افزار، در دسترس قرار دهد.
تیم AWS مشتاق کمک به مشتریانی مانند Intel OTG برای تسریع سفر ML خود است، از مرحله ایدهپردازی و کشف با ML Solutions Lab تا مرحله سختسازی و استقرار با AWS ML ProServe. همه ما در تابستان امسال المپیک 2021 توکیو را از نزدیک تماشا خواهیم کرد تا تمام پیشرفت هایی را که ML می تواند در ورزش باز کند، تصور کنیم.
امروز شروع کنید! مورد استفاده خود را با خدمات ذکر شده در این پست و بسیاری دیگر در این پست بررسی کنید کنسول مدیریت AWS.
درباره نویسنده
هان من مدیر ارشد یادگیری ماشین و هوش مصنوعی در AWS مستقر در سن دیگو، کالیفرنیا است. او دارای مدرک دکترا در رشته مهندسی از دانشگاه نورث وسترن است و چندین سال تجربه به عنوان مشاور مدیریت مشاوره به مشتریان در زمینه تولید، خدمات مالی و انرژی دارد. امروز او مشتاقانه با مشتریانی از صنایع مختلف برای توسعه و پیادهسازی راهحلهای یادگیری ماشین و هوش مصنوعی در AWS کار میکند. او از دنبال کردن NBA و بازی بسکتبال در اوقات فراغت خود لذت می برد.
ایمان کامیابی یک مهندس ML با خدمات حرفه ای AWS است. او با طیف گسترده ای از مشتریان AWS کار کرده است تا از بهترین شیوه ها در راه اندازی خطوط لوله ML قابل تکرار و قابل اعتماد حمایت کند.
جاناتان لی مدیر فناوری عملکرد ورزشی، گروه فناوری المپیک در اینتل است. او کاربرد یادگیری ماشینی در سلامت را در مقطع کارشناسی در UCLA و در دوران تحصیلات تکمیلی خود در دانشگاه آکسفورد مطالعه کرد. حرفه او بر روی توسعه الگوریتم و حسگر برای سلامت و عملکرد انسان متمرکز شده است. او اکنون پروژه ردیابی ورزشکاران سه بعدی را در اینتل رهبری می کند.
نلسون لیونگ معمار پلتفرم در CoE عملکرد ورزشی در اینتل است، جایی که او معماری سرتاسری را برای محصولات پیشرفتهای تعریف میکند که عملکرد ورزشکاران را افزایش میدهند. او همچنین پیادهسازی، استقرار و تولید این راهحلهای یادگیری ماشینی را در مقیاس به شرکای مختلف اینتل هدایت میکند.
تروی اسکیلاچی یک مهندس DecSecOps در اینتل است که راه حل های نرم افزاری حرفه ای را از طریق بهترین شیوه های DevOps به مشتریان ارائه می دهد. او از ادغام راه حل های هوش مصنوعی در پلتفرم های مقیاس پذیر در حوزه های مختلف لذت می برد.
پل مین یک کارآموز معمار راه حل در خدمات وب آمازون (AWS) است، جایی که به مشتریان در بخش های مختلف صنعت کمک می کند تا ماموریت خود را پیش ببرند و پذیرش ابر خود را تسریع بخشند. پیش از این در اینتل، او به عنوان کارآموز مهندسی نرم افزار برای کمک به توسعه 3D Athlete Tracking Cloud SDK کار می کرد. خارج از محل کار، پل از بازی گلف لذت می برد و آواز می خواند.
- Coinsmart. بهترین صرافی بیت کوین و کریپتو اروپا.
- پلاتوبلاک چین. Web3 Metaverse Intelligence. دانش تقویت شده دسترسی رایگان.
- CryptoHawk. رادار آلت کوین امتحان رایگان.
- منبع: https://aws.amazon.com/blogs/machine-learning/the-intel3d-athlete-tracking-3dat-scalable-architecture-deploys-pose-estimation-models-using-amazon-kinesis-data-streams- and-amazon-eks/
- "
- &
- 000
- 100
- 2021
- 3d
- درباره ما
- شتاب دادن
- دسترسی
- در دسترس
- مطابق
- حساب
- در میان
- عمل
- اقدامات
- اضافه
- اضافی
- مدیر سایت
- اتخاذ
- AI
- الگوریتم
- معرفی
- آمازون
- آمازون خدمات وب
- در میان
- API
- رابط های برنامه کاربردی
- کاربرد
- برنامه های کاربردی
- مناسب
- معماری
- استدلال
- اختصاص داده
- وابسته
- ورزشکاران
- خواص
- اتوماتیک
- AWS
- پشتیبان گیری
- بسکتبال
- قبل از
- مزایای
- بهترین
- بهترین شیوه
- سیاه پوست
- بلاگ
- بدن
- جعبه
- ساختن
- بنا
- صدا
- ظرفیت
- اهميت دادن
- کاریابی
- موارد
- مرکزی
- قهرمان
- تغییر دادن
- انتخاب
- مشتریان
- ابر
- رمز
- مجموعه
- جمع کننده
- ترکیب شده
- جزء
- محاسبه
- کامپیوتر
- پیکر بندی
- ارتباط
- مشاور
- مصرف کننده
- مصرف کنندگان
- ظرف
- ظروف
- شامل
- ادامه
- کنترل
- مختصات
- هسته
- متناظر
- ایجاد
- ایجاد شده
- ایجاد
- ایجاد
- ایجاد
- مجوزها و اعتبارات
- بحرانی
- بسیار سخت
- جاری
- در حال حاضر
- سفارشی
- مشتری
- مشتریان
- لبه برش
- داده ها
- پایگاه داده
- پایگاه های داده
- روز
- اختصاصی
- عمیق تر
- ارائه
- گسترش
- مستقر
- گسترش
- مستقر می کند
- طرح
- طراحی
- جزئیات
- دقیق
- جزئیات
- کشف
- توسعه
- توسعه دهنده
- توسعه دهندگان
- پروژه
- مختلف
- تمایز
- مستقیم
- مدیر
- کشف
- صفحه نمایش
- کارگر بارانداز
- نمی کند
- حوزه
- پایین
- در طی
- به آسانی
- پست الکترونیک
- نقطه پایانی
- انرژی
- موتور
- مهندس
- مهندسی
- محیط
- واقعه
- مثال
- برانگیخته
- موجود
- انتظار می رود
- تجربه
- اکتشاف
- ویژگی
- سرانجام
- مالی
- خدمات مالی
- نام خانوادگی
- مناسب
- ناوگان
- انعطاف پذیری
- قابل انعطاف
- متمرکز شده است
- به دنبال
- پیروی
- به دنبال آن است
- قالب
- آینده نگر
- FRAME
- چارچوب
- تابع
- تابعی
- قابلیت
- توابع
- آینده
- تولید می کنند
- مولد
- نسل
- دادن
- هدف
- خوب
- GPU
- فارغ التحصیل
- گروه
- گروه ها
- دسته
- اداره
- سخت افزار
- سلامتی
- شنیده
- کمک
- کمک
- کمک می کند
- اینجا کلیک نمایید
- بالاتر
- چگونه
- HTTPS
- انسان
- هویت
- تصویر
- انجام
- پیاده سازی
- مهم
- شامل
- شامل
- از جمله
- فرد
- لوازم
- صنعت
- شالوده
- ابتکاری
- ورودی
- درج می کند
- نصب
- یکپارچه
- ادغام
- اینتل
- اطلاعات
- اثر متقابل
- رابط
- IT
- کار
- شغل ها
- سفر
- کلید
- آزمایشگاه
- راه اندازی
- راه اندازی
- منجر می شود
- یادگیری
- سطح
- کتابخانه
- لاین
- فهرست
- بارگیری
- محل
- مکان
- دستگاه
- فراگیری ماشین
- ساخته
- حفظ
- عمده
- باعث می شود
- مرد
- مدیریت
- اداره می شود
- مدیریت
- تولید
- نقشه
- نقشه برداری
- ذکر شده
- روش
- متریک
- حد اقل
- ماموریت
- ML
- موبایل
- برنامه های موبایل
- مدل
- مدل
- پیمانهای
- بیش
- اکثر
- چندگانه
- نام
- NBA
- لازم
- نیازهای
- عدد
- بازی های المپیک
- باز می شود
- کار
- بهینه
- گزینه
- سفارش
- دیگر
- خود
- اکسفورد
- بسته
- بخش
- ویژه
- ویژه
- شرکای
- عبور
- احساساتی
- الگو
- درصد
- کارایی
- انجام
- چشم انداز
- قطعه
- سکو
- سیستم عامل
- بازی
- شعر
- نقطه
- ممکن
- قدرت
- قوی
- آماده
- قبلی
- اصلی
- اصل
- اولویت
- روند
- فرآیندهای
- در حال پردازش
- پردازنده
- تولید کردن
- تولید
- محصولات
- حرفه ای
- پروژه
- ارائه
- فراهم می کند
- هدف
- محدوده
- خام
- زمان واقعی
- شناختن
- رکورد
- سوابق
- با توجه
- قابل اعتماد
- درخواست
- نیاز
- ضروری
- مورد نیاز
- نیاز
- منابع
- منابع
- پاسخ
- نتایج
- دویدن
- در حال اجرا
- ایمنی
- سان
- مقیاس پذیری
- مقیاس پذیر
- مقیاس
- مقیاس گذاری
- sdk
- امن
- بخش ها
- بدون سرور
- سرویس
- خدمات
- تنظیم
- محیط
- شکل
- اشتراک
- صدف
- نشان داده شده
- مشابه
- به طور مشابه
- ساده
- اندازه
- So
- نرم افزار
- نرم افزار به عنوان یک سرویس
- مهندسی نرم افزار
- راه حل
- مزایا
- برخی از
- کسی
- تخصصی
- مشخصات
- سرعت
- ورزش ها
- پشته
- صحنه
- استاندارد
- استانداردهای
- شروع
- آغاز شده
- شروع می شود
- دولت
- وضعیت هنر
- وضعیت
- ذخیره سازی
- opbevare
- جریان
- جریان
- ارسال
- متعاقبا
- تابستان
- پشتیبانی
- پشتیبانی از
- سیستم
- مصرف
- تیم
- پیشرفته
- تست
- از این رو
- از طریق
- TIE
- زمان
- امروز
- با هم
- توکیو
- مسیر
- پیگردی
- انواع
- به طور معمول
- UCLA
- دانشگاه
- دانشگاه آکسفورد
- باز
- بروزرسانی
- استفاده کنید
- کاربران
- با استفاده از
- ارزش
- تنوع
- مختلف
- عمودی
- تصویری
- فیلم های
- دید
- وب
- خدمات وب
- WHO
- بدون
- مهاجرت کاری
- مشغول به کار
- کارگر
- سال