تتبع تجارب ML الخاصة بك من خلال التحكم في إصدار البيانات و Amazon SageMaker Experiments PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

تتبع تجارب تعلم الآلة الخاصة بك من البداية إلى النهاية باستخدام التحكم في إصدار البيانات وتجارب Amazon SageMaker

غالبًا ما يعمل علماء البيانات على فهم تأثيرات المعالجة المسبقة للبيانات واستراتيجيات هندسة الميزات جنبًا إلى جنب مع بنى النماذج المختلفة والمعلمات الفائقة. يتطلب القيام بذلك تغطية مساحات كبيرة للمعلمات بشكل متكرر ، وقد يكون من الصعب تتبع التكوينات والنتائج التي تم تشغيلها مسبقًا مع الحفاظ على إمكانية تكرار التجارب.

ترشدك هذه المشاركة إلى مثال على كيفية تتبع تجاربك عبر التعليمات البرمجية والبيانات والتحف والمقاييس باستخدام تجارب Amazon SageMaker بالتزامن مع التحكم في إصدار البيانات (DVC). نوضح كيف يمكنك استخدام DVC جنبًا إلى جنب مع الأمازون SageMaker وظائف المعالجة والتدريب. نقوم بتدريب طرز CatBoost المختلفة على مجموعة بيانات الإسكان بكاليفورنيا من مستودع StatLib، وتغيير استراتيجيات التوقف مع متابعة إصدار البيانات باستخدام DVC. في كل تجربة فردية ، نتتبع عناصر المدخلات والمخرجات والرموز والمقاييس باستخدام تجارب SageMaker.

تجارب SageMaker

SageMaker Experiments هي خدمة AWS لتتبع تجارب التعلم الآلي (ML). ال تجارب SageMaker Python SDK هي واجهة عالية المستوى لهذه الخدمة تساعدك على تتبع معلومات التجربة باستخدام Python.

الهدف من SageMaker Experiments هو جعل الأمر بسيطًا قدر الإمكان لإنشاء التجارب ، وملؤها بالتجارب ، وإضافة معلومات التتبع والنسب ، وتشغيل التحليلات عبر التجارب والتجارب.

عند مناقشة تجارب SageMaker ، نشير إلى المفاهيم التالية:

  • تجربة - مجموعة من المحاكمات ذات الصلة. أنت تضيف تجارب إلى تجربة تريد مقارنتها معًا.
  • التجربة - وصف لسير عمل ML متعدد الخطوات. يتم وصف كل خطوة في سير العمل بواسطة مكون تجريبي.
  • مكون التجربة - وصف لخطوة واحدة في سير عمل ML ، مثل تنظيف البيانات أو استخراج الميزات أو تدريب النموذج أو تقييم النموذج.
  • مطارد - مدير سياق Python لتسجيل المعلومات حول مكون تجريبي واحد (على سبيل المثال ، المعلمات أو المقاييس أو الأدوات).

التحكم في إصدار البيانات

يعد التحكم في إصدار البيانات (DVC) نوعًا جديدًا من إصدارات البيانات ، وسير العمل ، وبرامج إدارة التجربة التي تعتمد على بوابة (على الرغم من أنه يمكن أن يعمل بشكل مستقل). يقلل DVC الفجوة بين مجموعات الأدوات الهندسية القائمة واحتياجات علوم البيانات ، مما يتيح لك الاستفادة من الميزات الجديدة ملامح أثناء إعادة استخدام المهارات الحالية والحدس.

يمكن إجراء مشاركة تجارب علوم البيانات والتعاون فيها من خلال تدفق Git المنتظم (الالتزامات ، والتفرع ، ووضع العلامات ، وطلبات السحب) بنفس الطريقة التي تعمل بها مع مهندسي البرمجيات. باستخدام Git و DVC ، يمكن لفرق علوم البيانات و ML إصدار التجارب وإدارة مجموعات البيانات الكبيرة وجعل المشاريع قابلة للتكرار.

يحتوي DVC على الميزات التالية:

  • DVC هو ملف مجاني، مفتوح المصدر سطر الأوامر الأداة.
  • يعمل DVC أعلى مستودعات Git ولديه واجهة سطر أوامر مماثلة وتدفق مثل Git. يمكن أن تعمل DVC أيضًا بشكل مستقل ، ولكن بدون الإصدارات القدرات.
  • يتم تمكين تعيين إصدارات البيانات عن طريق استبدال الملفات الكبيرة وأدلة مجموعة البيانات ونماذج ML وما إلى ذلك بأخرى صغيرة ملفات التعريف (سهل التعامل مع Git). تشير هذه العناصر النائبة إلى البيانات الأصلية المنفصلة عن إدارة التعليمات البرمجية المصدر.
  • يمكنك استخدام التخزين الداخلي أو التخزين السحابي لتخزين بيانات المشروع بشكل منفصل عن قاعدة التعليمات البرمجية الخاصة به. هذه هي الطريقة التي يمكن لعلماء البيانات من خلالها نقل مجموعات كبيرة من البيانات أو مشاركة نموذج مُدرب على وحدة معالجة الرسومات مع الآخرين.
  • تجعل DVC مشاريع علوم البيانات قابلة للتكرار من خلال إنشاء وزن خفيف خطوط الأنابيب باستخدام الرسوم البيانية التبعية الضمنية ، وعن طريق تدوين البيانات والتحف المعنية.
  • DVC هي منصة حيادية. يعمل على جميع أنظمة التشغيل الرئيسية (Linux و macOS و Windows) ، ويعمل بشكل مستقل عن لغات البرمجة (Python و R و Julia و shell scripts وما إلى ذلك) أو مكتبات ML (Keras و TensorFlow و PyTorch و Scipy و المزيد) المستخدمة في المشروع.
  • DVC سريع ل تثبيت ولا تتطلب بنية تحتية خاصة ، ولا تعتمد على واجهات برمجة التطبيقات أو الخدمات الخارجية. إنها أداة CLI مستقلة.

تجارب SageMaker وعينة DVC

ما يلي عينة جيثب يوضح كيفية استخدام DVC داخل بيئة SageMaker. على وجه الخصوص ، ننظر في كيفية إنشاء صورة مخصصة مع مكتبات DVC المثبتة افتراضيًا لتوفير بيئة تطوير متسقة لعلماء البيانات لديك في أمازون ساجميكر ستوديو، وكيفية تشغيل DVC جنبًا إلى جنب مع البنية التحتية المدارة من SageMaker للمعالجة والتدريب. علاوة على ذلك ، نعرض كيفية إثراء معلومات تتبع SageMaker بمعلومات إصدار البيانات من DVC ، وعرضها في وحدة تحكم الاستوديو.

يوضح الرسم البياني التالي بنية الحل وسير العمل.

أنشئ صورة استوديو مخصصة مع تثبيت DVC بالفعل

في هذا مستودع جيثب، نشرح كيفية إنشاء صورة مخصصة لبرنامج Studio مثبت عليه DVC بالفعل. تتمثل ميزة إنشاء صورة وإتاحتها لجميع مستخدمي Studio في أنها تخلق بيئة متسقة لمستخدمي Studio ، والتي يمكنهم أيضًا تشغيلها محليًا. على الرغم من أن العينة تعتمد على سحابة AWS 9، يمكنك أيضًا إنشاء الحاوية على جهازك المحلي طالما أن Docker مثبتًا وقيد التشغيل. هذه العينة مبنية على ما يلي Dockerfile و البيئة. iml. يتم تخزين صورة Docker الناتجة بتنسيق سجل الأمازون المرنة للحاويات (Amazon EMR) في حساب AWS الخاص بك. انظر الكود التالي:

# Login to ECR
aws --region ${REGION} ecr get-login-password | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom

# Create the ECR repository
aws --region ${REGION} ecr create-repository --repository-name smstudio-custom

# Build the image - it might take a few minutes to complete this step
docker build . -t ${IMAGE_NAME} -t ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

# Push the image to ECR
docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

يمكنك الآن إنشاء مجال Studio جديد or تحديث مجال Studio موجود يمكنه الوصول إلى صورة Docker التي تم إنشاؤها حديثًا.

نستخدم مجموعة تطوير سحابة AWS (AWS CDK) لإنشاء الموارد التالية عبر تكوين سحابة AWS:

  • دور تنفيذي لـ SageMaker مع الأذونات الصحيحة لمجال Studio الجديد أو الحالي
  • صورة SageMaker ونسخة صورة SageMaker من صورة Docker conda-env-dvc-kernel التي أنشأناها سابقًا
  • An AppImageConfig التي تحدد كيفية تكوين بوابة kernel
  • مستخدم استوديو (data-scientist-dvc) مع دور تنفيذ SageMaker الصحيح وصورة الاستوديو المخصصة المتاحة له

للحصول على تعليمات مفصلة ، راجع إقران صورة مخصصة بـ SageMaker Studio.

قم بتشغيل المعمل

لتشغيل المعمل ، أكمل الخطوات التالية:

  1. في مجال Studio ، قم بتشغيل Studio لـ data-scientist-dvc المستخدم.
  2. اختر أيقونة Git ، ثم اختر استنساخ مستودع.
    استنساخ مستودع
  3. أدخل عنوان URL للمستودع (https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo) و اختار استنساخ.استنساخ زر الريبو
  4. في متصفح الملفات ، اختر ملف amazon-sagemaker-experiments-dvc-demo مستودع.
  5. فتح dvc_sagemaker_script_mode.ipynb دفتر.
  6. في حالة صورة مخصصة، اختر الصورة conda-env-dvc-kernel.
  7. اختار أختار.
    conda-env-dvc-kernel

قم بتكوين DVC لإصدار البيانات

نقوم بإنشاء دليل فرعي حيث نقوم بإعداد البيانات: sagemaker-dvc-sample. ضمن هذا الدليل الفرعي ، نقوم بتهيئة مستودع Git جديد وتعيين جهاز التحكم عن بُعد إلى مستودع نقوم بإنشائه فيه كود AWS. الهدف هو الحصول على تكوينات وملفات DVC الخاصة بتتبع البيانات التي تم إصدارها في هذا المستودع. ومع ذلك ، يوفر Git إمكانات أصلية لإدارة المشاريع الفرعية عبر ، على سبيل المثال ، الوحدات الفرعية git والأشجار الفرعية git ، ويمكنك توسيع هذا النموذج لاستخدام أي من الأدوات المذكورة أعلاه التي تناسب سير عملك بشكل أفضل.

الميزة الرئيسية لاستخدام CodeCommit مع SageMaker في حالتنا هي تكاملها مع إدارة الهوية والوصول AWS (IAM) للمصادقة والتفويض ، مما يعني أنه يمكننا استخدام أدوار IAM لدفع البيانات وسحبها دون الحاجة إلى جلب بيانات الاعتماد (أو مفاتيح SSH). يسمح تعيين الأذونات المناسبة لدور تنفيذ SageMaker أيضًا لدفتر ملاحظات Studio ووظيفة التدريب والمعالجة في SageMaker بالتفاعل بشكل آمن مع CodeCommit.

على الرغم من أنه يمكنك استبدال CodeCommit بأي خدمة أخرى للتحكم في المصادر ، مثل GitHub أو Gitlab أو Bitbucket ، فإنك تحتاج إلى التفكير في كيفية التعامل مع بيانات الاعتماد لنظامك. أحد الاحتمالات هو تخزين بيانات الاعتماد هذه مدير أسرار AWS وجلبها في وقت التشغيل من دفتر الاستوديو وكذلك من وظائف المعالجة والتدريب من SageMaker.

التهيئة DVC

معالجة وتدريب مع DVC و SageMaker

في هذا القسم ، نستكشف طريقتين مختلفتين لمعالجة مشكلتنا وكيف يمكننا تتبع الاختبارين باستخدام تجارب SageMaker وفقًا للبنية المفاهيمية عالية المستوى التي أظهرناها لك سابقًا.

قم بإعداد تجربة SageMaker

لتتبع هذا الاختبار في SageMaker ، نحتاج إلى إنشاء تجربة. نحتاج أيضًا إلى تحديد التجربة داخل التجربة. من أجل البساطة ، نحن فقط ننظر في تجربة واحدة للتجربة ، ولكن يمكنك الحصول على أي عدد من التجارب داخل التجربة ، على سبيل المثال ، إذا كنت تريد اختبار خوارزميات مختلفة.

نقوم بإنشاء تجربة باسم DEMO-sagemaker-experiments-dvc مع تجربتين ، dvc-trial-single-file و dvc-trial-multi-files، يمثل كل منها إصدارًا مختلفًا من مجموعة البيانات.

لنقم بإنشاء ملف DEMO-sagemaker-experiments-dvc تجربة - قام بتجارب:

from smexperiments.experiment import Experiment
from smexperiments.trial import Trial
from smexperiments.trial_component import TrialComponent
from smexperiments.tracker import Tracker

experiment_name = 'DEMO-sagemaker-experiments-dvc'

# create the experiment if it doesn't exist
try:
    my_experiment = Experiment.load(experiment_name=experiment_name)
    print("existing experiment loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_experiment = Experiment.create(
            experiment_name = experiment_name,
            description = "How to integrate DVC"
        )
        print("new experiment created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

الاختبار الأول: إنشاء ملفات فردية للتدريب والتحقق من الصحة

في هذا القسم ، نقوم بإنشاء برنامج نصي للمعالجة يقوم بجلب البيانات الأولية مباشرة من خدمة تخزين أمازون البسيطة (Amazon S3) كمدخل ؛ معالجته لإنشاء مجموعات بيانات القطار والتحقق من الصحة والاختبار ؛ ويخزن النتائج مرة أخرى في Amazon S3 باستخدام DVC. علاوة على ذلك ، نعرض كيف يمكنك تتبع نتائج المخرجات التي تم إنشاؤها بواسطة DVC باستخدام SageMaker عند تشغيل مهام المعالجة والتدريب وعبر تجارب SageMaker.

أولاً ، نقوم بإنشاء ملف dvc-trial-single-file محاكمة وإضافته إلى DEMO-sagemaker-experiments-dvc تجربة. من خلال القيام بذلك ، نحافظ على تنظيم جميع مكونات التجربة المتعلقة بهذا الاختبار بطريقة مفيدة.

first_trial_name = "dvc-trial-single-file"

try:
    my_first_trial = Trial.load(trial_name=first_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_first_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=first_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

استخدم DVC في مهمة معالجة SageMaker لإنشاء إصدار ملف واحد

في هذا القسم ، نقوم بإنشاء برنامج نصي للمعالجة يحصل على البيانات الأولية مباشرة من Amazon S3 كمدخلات باستخدام إمكانية تحميل البيانات المُدارة الخاصة بـ SageMaker ؛ يعالجها لإنشاء مجموعات بيانات القطار والتحقق من الصحة والاختبار ؛ ويخزن النتائج مرة أخرى في Amazon S3 باستخدام DVC. من المهم جدًا أن نفهم أنه عند استخدام DVC لتخزين البيانات في Amazon S3 (أو سحب البيانات من Amazon S3) ، فإننا نفقد إمكانات تحميل البيانات المُدارة من SageMaker ، والتي يمكن أن يكون لها تأثير على الأداء وتكاليف وظائف المعالجة والتدريب لدينا ، خاصة عند العمل مع مجموعات بيانات كبيرة جدًا. لمزيد من المعلومات حول إمكانيات وضع الإدخال الأصلي المختلفة لـ SageMaker ، ارجع إلى الوصول إلى بيانات التدريب.

أخيرًا ، نوحد إمكانيات تتبع DVC مع إمكانات تتبع SageMaker عند تشغيل مهام المعالجة عبر تجارب SageMaker.

يتوقع نص المعالجة عنوان مستودع Git والفرع الذي نريد إنشاءه لتخزين بيانات DVC الوصفية التي تم تمريرها عبر المتغيرات البيئية. يتم تخزين مجموعات البيانات نفسها في Amazon S3 بواسطة DVC. على الرغم من أن المتغيرات البيئية يتم تتبعها تلقائيًا في تجارب SageMaker وتكون مرئية في معلمات مكون التجربة ، فقد نرغب في إثراء مكونات التجربة بمزيد من المعلومات ، والتي تصبح بعد ذلك متاحة للتصور في واجهة مستخدم الاستوديو باستخدام كائن تعقب. في حالتنا ، تتضمن معلمات مكونات التجربة ما يلي:

  • DVC_REPO_URL
  • DVC_BRANCH
  • USER
  • data_commit_hash
  • train_test_split_ratio

يقوم البرنامج النصي للمعالجة المسبقة باستنساخ مستودع Git ؛ يُنشئ مجموعات بيانات القطار والتحقق من الصحة والاختبار ؛ ويقوم بمزامنتها باستخدام DVC. كما ذكرنا سابقًا ، عند استخدام DVC ، لا يمكننا الاستفادة من إمكانات تحميل بيانات SageMaker الأصلية. بصرف النظر عن عقوبات الأداء التي قد نعاني منها في مجموعات البيانات الكبيرة ، فإننا نفقد أيضًا إمكانات التتبع التلقائي لأعمال الإخراج. ومع ذلك ، بفضل أداة التعقب و DVC Python API ، يمكننا تعويض هذه العيوب ، واسترداد هذه المعلومات في وقت التشغيل ، وتخزينها في المكون التجريبي بجهد ضئيل. القيمة المضافة من خلال القيام بذلك هي أن يكون لديك في عرض واحد من عناصر المدخلات والمخرجات التي تنتمي إلى مهمة المعالجة المحددة هذه.

يتوفر نص Python الكامل للمعالجة المسبقة في ملف جيثب ريبو.

with Tracker.load() as tracker:
    tracker.log_parameters({"data_commit_hash": commit_hash})
    for file_type in file_types:
        path = dvc.api.get_url(
            f"{data_path}/{file_type}/california_{file_type}.csv",
            repo=dvc_repo_url,
            rev=dvc_branch
        )
        tracker.log_output(name=f"california_{file_type}",value=path)

يمنحنا SageMaker إمكانية تشغيل نص المعالجة الخاص بنا على صور الحاويات التي تديرها AWS والتي تم تحسينها للتشغيل على البنية التحتية لـ AWS. إذا كان البرنامج النصي الخاص بنا يتطلب تبعيات إضافية ، فيمكننا توفير ملف requirements.txt ملف. عندما نبدأ مهمة المعالجة ، يستخدم SageMaker pip-install لتثبيت جميع المكتبات التي نحتاجها (على سبيل المثال ، المكتبات المتعلقة بـ DVC). إذا كنت بحاجة إلى تحكم أكثر إحكامًا في جميع المكتبات المثبتة على الحاويات ، فيمكنك إحضار حاويتك الخاصة في SageMaker ، على سبيل المثال من أجل معالجة والتدريب.

لدينا الآن جميع المكونات لتشغيل مهمة معالجة SageMaker الخاصة بنا:

  • نص معالجة يمكنه معالجة عدة وسيطات (--train-test-split-ratio) واثنين من المتغيرات البيئية (DVC_REPO_URL و DVC_BRANCH)
  • A requiremets.txt ملف
  • مستودع Git (في CodeCommit)
  • تجربة وتجربة SageMaker
from sagemaker.processing import FrameworkProcessor, ProcessingInput
from sagemaker.sklearn.estimator import SKLearn

dvc_repo_url = "codecommit::{}://sagemaker-dvc-sample".format(region)
dvc_branch = my_first_trial.trial_name

script_processor = FrameworkProcessor(
    estimator_cls=SKLearn,
    framework_version='0.23-1',
    instance_count=1,
    instance_type='ml.m5.xlarge',
    env={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    },
    role=role
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

ثم نقوم بتشغيل مهمة المعالجة مع preprocessing-experiment.py النصي، experiment_config, dvc_repo_urlو dvc_branch حددناها في وقت سابق.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.2"]
)

تستغرق مهمة المعالجة حوالي 5 دقائق حتى تكتمل. يمكنك الآن عرض تفاصيل الإصدار التجريبي لمجموعة بيانات الملف الفردي.

توضح لقطة الشاشة التالية أين يمكنك العثور على المعلومات المخزنة داخل الاستوديو. لاحظ قيم dvc-trial-single-file in DVC_BRANCH, DVC_REPO_URLو data_commit_hash على المعلمات علامة التبويب.

علامة تبويب معلمات تجارب SageMaker

لاحظ أيضًا تفاصيل الإدخال والإخراج على ملف القطع الأثرية علامة التبويب.

علامة تبويب العناصر الأثرية لـ SageMaker Experiments

قم بإنشاء مقدر وتناسب النموذج مع إصدار بيانات ملف واحد

لاستخدام تكامل DVC داخل وظيفة تدريب SageMaker ، نجتاز dvc_repo_url و dvc_branch كمتغيرات بيئية عند إنشاء كائن المقدر.

نحن نتدرب على dvc-trial-single-file الفرع الأول.

عند سحب البيانات باستخدام DVC ، نستخدم بنية مجموعة البيانات التالية:

dataset
    |-- train
    |   |-- california_train.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation.csv

الآن نقوم بإنشاء أداة تقدير Scikit-Learn باستخدام امتداد SageMaker بيثون SDK. هذا يسمح لنا بتحديد ما يلي:

  • المسار إلى ملف مصدر Python ، والذي يجب تشغيله كنقطة دخول للتدريب.
  • دور IAM الذي يتحكم في أذونات الوصول إلى بيانات Amazon S3 و CodeCommit وتشغيل وظائف SageMaker.
  • قائمة القواميس التي تحدد المقاييس المستخدمة لتقييم وظائف التدريب.
  • عدد ونوع الدورات التدريبية. نستخدم مثيل ml.m5.large واحد.
  • Hyperparameters التي تستخدم للتدريب.
  • متغيرات البيئة لاستخدامها أثناء التدريب. نحن نستخدم DVC_REPO_URL, DVC_BRANCHو USER.
metric_definitions = [{'Name': 'median-AE', 'Regex': "AE-at-50th-percentile: ([0-9.]+).*$"}]

hyperparameters={ 
        "learning_rate" : 1,
        "depth": 6
    }
estimator = SKLearn(
    entry_point='train.py',
    source_dir='source_dir',
    role=role,
    metric_definitions=metric_definitions,
    hyperparameters=hyperparameters,
    instance_count=1,
    instance_type='ml.m5.large',
    framework_version='0.23-1',
    base_job_name='training-with-dvc-data',
    environment={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    }
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

نحن نسمي الطريقة الملائمة للمقدر باستخدام صيغة_التجربة التي حددناها مسبقًا لبدء التدريب.

%%time
estimator.fit(experiment_config=experiment_config)

تستغرق مهمة التدريب حوالي 5 دقائق حتى تكتمل. توضح السجلات تلك الخطوط ، مما يشير إلى الملفات التي تم سحبها بواسطة DVC:

Running dvc pull command
A       train/california_train.csv
A       test/california_test.csv
A       validation/california_validation.csv
3 files added and 3 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train.csv']
Found validation files: ['/opt/ml/input/data/dataset/train/california_train.csv']

الاختبار 2: إنشاء ملفات متعددة للتدريب والتحقق من الصحة

نخلق ملف dvc-trial-multi-files التجربة وإضافتها إلى التيار DEMO-sagemaker-experiments-dvc تجربة.

second_trial_name = "dvc-trial-multi-files"
try:
    my_second_trial = Trial.load(trial_name=second_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_second_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=second_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

بشكل مختلف عن البرنامج النصي الأول للمعالجة ، نقوم الآن بإنشاء ملفات متعددة من مجموعة البيانات الأصلية للتدريب والتحقق من الصحة وتخزين البيانات الوصفية لـ DVC في فرع مختلف.

يمكنك استكشاف سيناريو Python الثاني للمعالجة المسبقة GitHub جيثب:.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment-multifiles.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.1"]
)

تستغرق مهمة المعالجة حوالي 5 دقائق حتى تكتمل. يمكنك الآن عرض تفاصيل الإصدار التجريبي لمجموعة البيانات متعددة الملفات.

تُظهر لقطات الشاشة التالية المكان الذي يمكنك العثور فيه على المعلومات المخزنة داخل تجارب SageMaker في ملف مكونات التجربة داخل Studio UI. لاحظ قيم dvc-trial-multi-files in DVC_BRANCH, DVC_REPO_URLو data_commit_hash على المعلمات علامة التبويب.

علامة تبويب معلمات تجارب SageMaker متعددة الملفات

يمكنك أيضًا مراجعة تفاصيل الإدخال والإخراج على ملف القطع الأثرية علامة التبويب.

علامة تبويب SageMaker متعددة الملفات للتجارب الأثرية

نحن الآن نتدرب على dvc-trial-multi-files فرع. عند سحب البيانات باستخدام DVC ، نستخدم بنية مجموعة البيانات التالية:

dataset
    |-- train
    |   |-- california_train_1.csv
    |   |-- california_train_2.csv
    |   |-- california_train_3.csv
    |   |-- california_train_4.csv
    |   |-- california_train_5.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation_1.csv
    |   |-- california_validation_2.csv
    |   |-- california_validation_3.csv

كما فعلنا من قبل ، قمنا بإنشاء Scikit-Learn Estimator جديدًا باسم الإصدار التجريبي dvc-trial-multi-files وابدأ العمل التدريبي.

%%time

estimator.fit(experiment_config=experiment_config)

تستغرق مهمة التدريب حوالي 5 دقائق حتى تكتمل. في إخراج سجلات مهمة التدريب إلى الكمبيوتر الدفتري ، يمكنك رؤية تلك السطور ، التي تشير إلى الملفات التي تم سحبها بواسطة DVC:

Running dvc pull command
A       validation/california_validation_2.csv
A       validation/california_validation_1.csv
A       validation/california_validation_3.csv
A       train/california_train_4.csv
A       train/california_train_5.csv
A       train/california_train_2.csv
A       train/california_train_3.csv
A       train/california_train_1.csv
A       test/california_test.csv
9 files added and 9 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train_2.csv', '/opt/ml/input/data/dataset/train/california_train_5.csv', '/opt/ml/input/data/dataset/train/california_train_4.csv', '/opt/ml/input/data/dataset/train/california_train_1.csv', '/opt/ml/input/data/dataset/train/california_train_3.csv']
Found validation files: ['/opt/ml/input/data/dataset/validation/california_validation_2.csv', '/opt/ml/input/data/dataset/validation/california_validation_1.csv', '/opt/ml/input/data/dataset/validation/california_validation_3.csv']

استضف نموذجك في SageMaker

بعد تدريب نموذج ML الخاص بك ، يمكنك نشره باستخدام SageMaker. لنشر نقطة نهاية مستمرة في الوقت الفعلي تقوم بعمل تنبؤ واحد في كل مرة ، نستخدمها خدمات الاستضافة في الوقت الحقيقي من SageMaker.

from sagemaker.serializers import CSVSerializer

predictor = estimator.deploy(1, "ml.t2.medium", serializer=CSVSerializer())

أولاً ، نحصل على أحدث مجموعة بيانات اختبار محليًا على دفتر التطوير في Studio. لهذا الغرض ، يمكننا استخدام dvc.api.read() لتحميل البيانات الأولية التي تم تخزينها في Amazon S3 بواسطة مهمة معالجة SageMaker.

import io
import dvc.api

raw = dvc.api.read(
    "dataset/test/california_test.csv",
    repo=dvc_repo_url,
    rev=dvc_branch
)

ثم نقوم بإعداد البيانات باستخدام Pandas ، وتحميل ملف اختبار CSV ، والاتصال predictor.predict لاستدعاء نقطة نهاية SageMaker التي تم إنشاؤها مسبقًا بالبيانات والحصول على تنبؤات.

test = pd.read_csv(io.StringIO(raw), sep=",", header=None)
X_test = test.iloc[:, 1:].values
y_test = test.iloc[:, 0:1].values

predicted = predictor.predict(X_test)
for i in range(len(predicted)-1):
    print(f"predicted: {predicted[i]}, actual: {y_test[i][0]}")

احذف نقطة النهاية

يجب حذف نقاط النهاية عندما لم تعد قيد الاستخدام ، لأنه يتم تحرير فواتيرها بحلول وقت النشر (لمزيد من المعلومات ، راجع الأمازون SageMaker التسعير). تأكد من حذف نقطة النهاية لتجنب التكاليف غير المتوقعة.

predictor.delete_endpoint()

تنظيف

قبل إزالة جميع الموارد التي قمت بإنشائها ، تأكد من حذف جميع التطبيقات من ملف data-scientist-dvc المستخدم ، بما في ذلك جميع تطبيقات KernelGateway ، بالإضافة إلى تطبيق JupiterServer الافتراضي.

ثم يمكنك تدمير مكدس AWS CDK عن طريق تشغيل الأمر التالي:

cdk destroy

إذا كنت تستخدم مجالًا موجودًا ، فقم أيضًا بتشغيل الأوامر التالية:

# inject your DOMAIN_ID into the configuration file
sed -i 's/<your-sagemaker-studio-domain-id>/'"$DOMAIN_ID"'/' ../update-domain-no-custom-images.json
# update the sagemaker studio domain
aws --region ${REGION} sagemaker update-domain --cli-input-json file://../update-domain-no-custom-images.json

وفي الختام

في هذا المنشور ، استعرضت مثالاً لكيفية تتبع تجاربك عبر التعليمات البرمجية والبيانات والقطع الأثرية والمقاييس باستخدام تجارب SageMaker ووظائف المعالجة والتدريب من SageMaker جنبًا إلى جنب مع DVC. أنشأنا صورة Docker تحتوي على DVC ، والتي كانت مطلوبة لـ Studio كدفتر تطوير ، وأظهرنا كيف يمكنك استخدام مهام المعالجة والتدريب مع DVC. قمنا بإعداد نسختين من البيانات واستخدمنا DVC لإدارتها باستخدام Git. ثم استخدمت تجارب SageMaker لتتبع المعالجة والتدريب باستخدام نسختين من البيانات من أجل الحصول على عرض موحد للمعلمات والتحف والمقاييس في جزء زجاجي واحد. أخيرًا ، قمت بنشر النموذج على نقطة نهاية SageMaker واستخدمت مجموعة بيانات اختبار من إصدار مجموعة البيانات الثاني لاستدعاء نقطة نهاية SageMaker والحصول على تنبؤات.

كخطوة تالية ، يمكنك تمديد دفتر الملاحظات الحالي وتقديم إستراتيجية هندسة الميزات الخاصة بك واستخدام DVC و SageMaker لتشغيل تجاربك. لنبدأ البناء!

لمزيد من القراءة ، يرجى الرجوع إلى الموارد التالية:


حول المؤلف

باولو دي فرانشيسكوباولو دي فرانشيسكو هو مهندس حلول في AWS. لديه خبرة في الاتصالات السلكية واللاسلكية وهندسة البرمجيات. إنه متحمس للتعلم الآلي ويركز حاليًا على استخدام خبرته لمساعدة العملاء على الوصول إلى أهدافهم على AWS ، لا سيما في المناقشات حول MLOps. خارج العمل ، يستمتع بلعب كرة القدم والقراءة.

ايتان سيلاايتان سيلا هو مهندس حلول متخصص في التعلم الآلي مع Amazon Web Services. إنه يعمل مع عملاء AWS لتقديم التوجيه والمساعدة الفنية ، ومساعدتهم في بناء وتشغيل حلول التعلم الآلي على AWS. في أوقات فراغه ، يستمتع إيتان بالركض وقراءة أحدث مقالات التعلم الآلي.

الطابع الزمني:

اكثر من التعلم الآلي من AWS