هوش داده افلاطون
جستجوی عمودی و هوش مصنوعی

توسعه مدل یادگیری ماشین تکراری را با افزودن ویژگی‌ها به گروه‌های ویژگی موجود در فروشگاه ویژگی Amazon SageMaker ساده کنید

تاریخ:

مهندسی ویژگی یکی از چالش برانگیزترین جنبه‌های چرخه زندگی یادگیری ماشین (ML) و مرحله‌ای است که در آن بیشترین زمان صرف می‌شود—دانشمندان داده و مهندسان ML 60 تا 70 درصد از زمان خود را صرف مهندسی ویژگی می‌کنند. AWS معرفی شد فروشگاه ویژگی آمازون SageMaker در طول AWS re:Invent 2020، که یک فروشگاه متمرکز، کاملاً مدیریت شده و هدفمند برای ویژگی ها و ابرداده های مرتبط است. ویژگی ها سیگنال هایی هستند که از داده ها برای آموزش مدل های ML استخراج می شوند. مزیت Feature Store این است که منطق مهندسی ویژگی یک بار نوشته می شود و ویژگی های تولید شده در یک پلت فرم مرکزی ذخیره می شوند. ذخیره مرکزی ویژگی ها را می توان برای آموزش و استنتاج استفاده کرد و در تیم های مختلف مهندسی داده مورد استفاده مجدد قرار داد.

ویژگی ها در یک فروشگاه ویژگی در مجموعه ای به نام ذخیره می شوند گروه ویژگی. یک گروه ویژگی شبیه به طرح جدول پایگاه داده است که در آن ستون ها ویژگی ها و ردیف ها نشان دهنده رکوردهای فردی هستند. گروه های ویژگی از زمانی که Feature Store معرفی شد تغییر ناپذیر بوده اند. اگر می‌بایست ویژگی‌هایی را به یک گروه ویژگی موجود اضافه می‌کردیم، این فرآیند دشوار بود - باید یک گروه ویژگی جدید ایجاد می‌کردیم، گروه ویژگی جدید را با داده‌های تاریخی پر می‌کردیم و سیستم‌های پایین‌دستی را برای استفاده از این گروه ویژگی جدید تغییر می‌دادیم. توسعه ML یک فرآیند تکراری آزمون و خطا است که در آن می‌توانیم به طور مداوم ویژگی‌های جدیدی را شناسایی کنیم که می‌تواند عملکرد مدل را بهبود بخشد. بدیهی است که عدم امکان افزودن ویژگی‌ها به گروه‌های ویژگی می‌تواند منجر به چرخه عمر توسعه مدل ML پیچیده شود.

فروشگاه ویژگی اخیرا معرفی شده است امکان افزودن ویژگی های جدید به گروه های ویژگی موجود. طرح واره گروه ویژگی در طول زمان در نتیجه الزامات تجاری جدید یا به دلیل شناسایی ویژگی های جدید که عملکرد مدل بهتری را به همراه دارد، تکامل می یابد. دانشمندان داده و مهندسان ML باید به راحتی ویژگی ها را به یک گروه ویژگی موجود اضافه کنند. این توانایی هزینه های سربار مربوط به ایجاد و نگهداری گروه های ویژگی های متعدد را کاهش می دهد و بنابراین خود را به توسعه مدل ML تکراری می دهد. آموزش مدل و استنتاج می تواند با استفاده از همان گروه ویژگی با ایجاد حداقل تغییرات از ویژگی های جدید استفاده کند.

در این پست، نحوه اضافه کردن ویژگی‌ها به گروه ویژگی‌ها را با استفاده از تازه منتشر شده نشان می‌دهیم UpdateFeatureGroup API.

بررسی اجمالی راه حل

Feature Store به عنوان یک منبع منفرد از حقیقت برای داده های مهندسی ویژگی که در آموزش و استنتاج ML استفاده می شود عمل می کند. وقتی ویژگی‌ها را در Feature Store ذخیره می‌کنیم، آنها را در گروه‌های ویژگی ذخیره می‌کنیم.

ما می توانیم گروه های ویژگی را برای فعال کنیم حالت فقط آفلاین، حالت فقط آنلاین یا حالت آنلاین و آفلاین.

فروشگاه آنلاین یک فروشگاه داده با تاخیر کم است و همیشه آخرین عکس فوری از داده ها را دارد. یک فروشگاه آفلاین دارای مجموعه ای تاریخی از سوابق است که در آن وجود دارد سرویس ذخیره سازی ساده آمازون (Amazon S3). فروشگاه ویژگی به طور خودکار یک چسب AWS کاتالوگ داده ها برای فروشگاه آفلاین، که ما را قادر می سازد پرس و جوهای SQL را با استفاده از داده های آفلاین اجرا کنیم آمازون آتنا.

نمودار زیر روند ایجاد ویژگی و ورود به Feature Store را نشان می دهد.

گردش کار شامل مراحل زیر است:

  1. یک گروه ویژگی تعریف کنید و گروه ویژگی را در فروشگاه ویژگی ایجاد کنید.
  2. داده ها را به گروه ویژگی وارد کنید، که بلافاصله به فروشگاه آنلاین و سپس به فروشگاه آفلاین می نویسد.
  3. از داده های فروشگاه آفلاین ذخیره شده در آمازون S3 برای آموزش یک یا چند مدل استفاده کنید.
  4. از فروشگاه آفلاین برای استنتاج دسته ای استفاده کنید.
  5. برای استنتاج بلادرنگ از فروشگاه آنلاین پشتیبانی از خواندن با تأخیر کم استفاده کنید.
  6. برای به روز رسانی گروه ویژگی برای افزودن یک ویژگی جدید، از جدید استفاده می کنیم آمازون SageMaker UpdateFeatureGroup API. این همچنین کاتالوگ داده های چسب زیرین AWS را به روز می کند. پس از به‌روزرسانی طرحواره، می‌توانیم داده‌ها را در این گروه ویژگی به‌روز شده وارد کنیم و از فروشگاه آنلاین و آفلاین به‌روزرسانی‌شده برای استنباط و آموزش مدل استفاده کنیم.

مجموعه داده

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

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

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

پیش نیازها

برای این راهنما، شما باید پیش نیازهای زیر را داشته باشید:

git clone https://github.com/aws-samples/amazon-sagemaker-feature-store-update-feature-group.git

ویژگی ها را به یک گروه ویژگی اضافه کنید

در این پست به مرور می پردازیم update_feature_group.ipynb دفترچه یادداشت، که در آن یک گروه ویژگی ایجاد می کنیم، یک مجموعه داده اولیه را مصرف می کنیم، گروه ویژگی را برای افزودن یک ویژگی جدید به روز می کنیم، و داده هایی را که شامل ویژگی جدید می شود، دوباره دریافت می کنیم. در پایان، فروشگاه آنلاین و آفلاین را برای به روز رسانی ها تأیید می کنیم. نوت بوک کاملا کاربردی و داده های نمونه را می توان در مخزن GitHub. بیایید برخی از بخش های کلیدی نوت بوک را در اینجا بررسی کنیم.

  1. ما یک گروه ویژگی ایجاد می کنیم تا داده های مشتری مهندسی شده با ویژگی را با استفاده از آن ذخیره کند FeatureGroup.create API SageMaker SDK.
    customers_feature_group = FeatureGroup(name=customers_feature_group_name, 
                                          sagemaker_session=sagemaker_session)
    
    customers_feature_group.create(s3_uri=f's3://{default_bucket}/{prefix}', 
                                   record_identifier_name='customer_id', 
                                   event_time_feature_name='event_time', 
                                   role_arn=role, 
                                   enable_online_store=True)
    

  1. ما یک Pandas DataFrame با داده های اولیه CSV ایجاد می کنیم. ما از زمان فعلی به عنوان مهر زمانی استفاده می کنیم event_time ویژگی. این مربوط به زمانی است که رویداد رخ داده است، که به معنای زمانی است که رکورد در گروه ویژگی اضافه یا به روز می شود.
  2. ما DataFrame را با استفاده از SageMaker SDK به گروه ویژگی وارد می کنیم FeatureGroup.ingest API. این یک مجموعه داده کوچک است و بنابراین می توان آن را در یک Pandas DataFrame بارگذاری کرد. وقتی با حجم زیادی از داده و میلیون‌ها ردیف کار می‌کنیم، مکانیسم‌های مقیاس‌پذیر دیگری برای وارد کردن داده‌ها به فروشگاه ویژگی‌ها وجود دارد، مانند بلع دسته ای با اسپارک آپاچی.
    customers_feature_group.ingest(data_frame=customers_df,
                                   max_workers=3,
                                   wait=True)

  1. می‌توانیم با اجرای کوئری‌های Athena در نوت‌بوک یا اجرای عبارت‌های جستجو در کنسول Athena تأیید کنیم که داده‌ها در گروه ویژگی وارد شده است.
  2. پس از اینکه تأیید کردیم که فروشگاه ویژگی آفلاین داده های اولیه را دارد، ویژگی جدید را اضافه می کنیم has_kids به گروه ویژگی با استفاده از Boto3 update_feature_group API
    sagemaker_runtime.update_feature_group(
                              FeatureGroupName=customers_feature_group_name,
                              FeatureAdditions=[
                                 {"FeatureName": "has_kids", "FeatureType": "Integral"}
                              ])

    کاتالوگ داده به عنوان بخشی از این تماس API به طور خودکار به روز می شود. API از افزودن چندین ویژگی در یک زمان با مشخص کردن آنها در قسمت پشتیبانی می کند FeatureAdditions فرهنگ لغت.

  1. ما تأیید می کنیم که این ویژگی با بررسی تعریف گروه ویژگی به روز شده اضافه شده است
    describe_feature_group_result = sagemaker_runtime.describe_feature_group(
                                               FeatureGroupName=customers_feature_group_name)
    pretty_printer.pprint(describe_feature_group_result)

    La LastUpdateStatus در describe_feature_group پاسخ API در ابتدا وضعیت را نشان می دهد InProgress. پس از موفقیت آمیز بودن عملیات، LastUpdateStatus وضعیت تغییر می کند Successful. اگر به هر دلیلی عملیات با خطا مواجه شد، lastUpdateStatus وضعیت به عنوان نشان می دهد Failed، با پیام خطای دقیق در FailureReason.
    پاسخ API گروه ویژگی را به روز کنید
    هنگامی که update_feature_group API فراخوانی می شود، صفحه کنترل بلافاصله تغییر طرحواره را منعکس می کند، اما صفحه داده تا 5 دقیقه طول می کشد تا طرح گروه ویژگی خود را به روز کند. ما باید اطمینان حاصل کنیم که زمان کافی برای عملیات به روز رسانی قبل از اقدام به جذب داده ها داده شده است.

  1. ما داده ها را برای has_kids با ایجاد 1ها و 0های تصادفی مشخص می شود که آیا مشتری بچه دارد یا نه.
    customers_df['has_kids'] =np.random.randint(0, 2, customers_df.shape[0])

  1. ما DataFrame را با ستون جدید اضافه شده در گروه ویژگی با استفاده از SageMaker SDK وارد می کنیم. FeatureGroup.ingest API
    customers_feature_group.ingest(data_frame=customers_df,
                                   max_workers=3,
                                   wait=True)

  1. در مرحله بعد، ما رکورد ویژگی را در فروشگاه آنلاین برای یک مشتری با استفاده از Boto3 تأیید می کنیم get_record API
    get_record_result = featurestore_runtime.get_record(
                                              FeatureGroupName=customers_feature_group_name,
                                              RecordIdentifierValueAsString=customer_id)
    pretty_printer.pprint(get_record_result)

    پاسخ Record API را دریافت کنید

  2. بیایید همان رکورد مشتری را در کنسول آتنا پرس و جو کنیم تا ذخیره آفلاین داده را تأیید کنیم. داده‌ها برای حفظ نوشته‌ها و به‌روزرسانی‌های تاریخی به فروشگاه آفلاین اضافه می‌شوند. بنابراین، ما دو رکورد را در اینجا می بینیم: یک رکورد جدیدتر که ویژگی آن به مقدار 1 به روز شده است، و یک رکورد قدیمی که این ویژگی را ندارد و بنابراین مقدار را خالی نشان می دهد. ماندگاری فروشگاه آفلاین به صورت دسته‌ای در عرض 15 دقیقه اتفاق می‌افتد، بنابراین این مرحله ممکن است زمان ببرد.

پرس و جوی آتنا

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

پاک کردن

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

  1. اشیاء S3 را در فروشگاه آفلاین حذف کنید:
    s3_config = describe_feature_group_result['OfflineStoreConfig']['S3StorageConfig']
    s3_uri = s3_config['ResolvedOutputS3Uri']
    full_prefix = '/'.join(s3_uri.split('/')[3:])
    bucket = s3.Bucket(default_bucket)
    offline_objects = bucket.objects.filter(Prefix=full_prefix)
    offline_objects.delete()

  1. گروه ویژگی را حذف کنید:
    customers_feature_group.delete()

  1. نمونه نوت بوک SageMaker Jupyter را متوقف کنید. برای دستورالعمل، مراجعه کنید پاکسازی.

نتیجه

Feature Store یک مخزن کاملاً مدیریت شده و هدفمند برای ذخیره، اشتراک‌گذاری و مدیریت ویژگی‌های مدل‌های ML است. امکان افزودن ویژگی‌ها به گروه‌های ویژگی موجود، توسعه مدل تکراری را ساده می‌کند و چالش‌هایی را که در ایجاد و حفظ گروه‌های ویژگی متعدد مشاهده می‌کنیم، کاهش می‌دهد.

در این پست، نحوه افزودن ویژگی‌ها به گروه‌های ویژگی موجود از طریق SageMaker جدید را به شما نشان دادیم UpdateFeatureGroup API. مراحل نشان داده شده در این پست به عنوان یک نوت بوک Jupyter در دسترس هستند مخزن GitHub. آن را امتحان کنید و نظرات خود را در نظرات با ما در میان بگذارید.

مطالعه بیشتر

اگر علاقه مند به بررسی سناریوی کاملی هستید که قبلا در این پست پیش بینی سفارش مشتری یک محصول خاص ذکر شد، موارد زیر را بررسی کنید. دفتر یادداشت، که گروه ویژگی را تغییر می دهد، داده ها را جذب می کند و یک مدل XGBoost را با داده های فروشگاه آفلاین به روز شده آموزش می دهد. این دفترچه بخشی از یک کارگاه جامع برای نشان دادن عملکرد Feature Store توسعه یافته است.

منابع

اطلاعات بیشتر در منابع زیر موجود است:


درباره نویسندگان

چایترا ماتور یک معمار اصلی راه حل در AWS است. او مشتریان و شرکا را در ساخت راه حل های بسیار مقیاس پذیر، قابل اعتماد، ایمن و مقرون به صرفه در AWS راهنمایی می کند. او علاقه زیادی به یادگیری ماشین دارد و به مشتریان کمک می کند تا نیازهای ML خود را با استفاده از خدمات AWS AI/ML به راه حل هایی تبدیل کنند. او دارای 5 گواهینامه از جمله گواهینامه تخصصی ML است. او در اوقات فراغت خود از مطالعه، یوگا و گذراندن وقت با دخترانش لذت می برد.

مارک روی یک معمار اصلی یادگیری ماشین برای AWS است که به مشتریان در طراحی و ساخت راه‌حل‌های AI/ML کمک می‌کند. کار مارک طیف گسترده‌ای از موارد استفاده از ML را پوشش می‌دهد، با علاقه اولیه به بینایی رایانه، یادگیری عمیق، و مقیاس‌بندی ML در سراسر سازمان. او به شرکت ها در بسیاری از صنایع از جمله بیمه، خدمات مالی، رسانه و سرگرمی، مراقبت های بهداشتی، آب و برق و تولید کمک کرده است. مارک دارای شش گواهینامه AWS از جمله گواهینامه تخصصی ML است. قبل از پیوستن به AWS، مارک به مدت بیش از 25 سال، از جمله 19 سال در خدمات مالی، معمار، توسعه دهنده و رهبر فناوری بود.

چارو سرین مدیر محصول Sr. برای فروشگاه ویژگی آمازون SageMaker است. قبل از AWS، او استراتژی رشد و کسب درآمد را برای خدمات SaaS در VMware رهبری می کرد. او یک علاقه‌مند به داده‌ها و یادگیری ماشین است و بیش از یک دهه تجربه در زمینه مدیریت محصول، مهندسی داده و تجزیه و تحلیل پیشرفته دارد. او دارای مدرک لیسانس در فناوری اطلاعات از موسسه ملی فناوری هند و مدرک MBA از دانشگاه میشیگان، دانشکده بازرگانی راس است.

فرانک مک کویلان مدیر محصول اصلی فروشگاه ویژگی آمازون SageMaker است.

نقطه_img

جدیدترین اطلاعات

نقطه_img

چت با ما

سلام! چگونه می توانم به شما کمک کنم؟