يوفر Amazon SageMaker أكثر من مجرد القدرة على إدارة أجهزة الكمبيوتر المحمولة في Jupyter ، ولكنه خدمة قابلة للتكوين تتيح لك إنشاء نماذج التعلم الآلي وتدريبها وتحسينها ونشرها. هناك اعتقاد خاطئ شائع ، خاصة عند بدء استخدام SageMaker ، وهو أنك بحاجة إلى SageMaker Notebook Instance أو SageMaker (Studio) Notebook لاستخدام هذه الخدمات. في الواقع ، يمكنك تشغيل جميع الخدمات مباشرة من جهاز الكمبيوتر المحلي الخاص بك أو حتى IDE المفضل لديك.
قبل المضي قدمًا ، دعونا نفهم كيفية التفاعل مع خدمات Amazon SageMaker. لديك اثنين من واجهات برمجة التطبيقات:
SageMaker Python SDK - واجهة برمجة تطبيقات Python عالية المستوى تلخص التعليمات البرمجية لإنشاء نماذج التعلم الآلي والتدريب عليها ونشرها. على وجه الخصوص ، يوفر مقيّمين للخوارزميات من الدرجة الأولى أو المضمنة ، كما أنه يدعم أطر عمل مثل TensorFlow و MXNET وما إلى ذلك. في معظم الحالات ، ستستخدمه للتفاعل مع مهام التعلم الآلي التفاعلية.
AWS SDKهي واجهة برمجة تطبيقات ذات مستوى منخفض تُستخدم للتفاعل مع جميع خدمات AWS المدعومة ، وليس بالضرورة لـ SageMaker. AWS SDK متاح للغات الأكثر شيوعًا مثل Java و Javascript و Python (boto) وما إلى ذلك. في معظم الحالات ، ستستخدم واجهة برمجة التطبيقات هذه لأشياء مثل إنشاء موارد التشغيل الآلي أو التفاعل مع خدمات AWS الأخرى التي لا تدعمها SageMaker Python SDK.
لماذا البيئة المحلية؟
التكلفة هي أول ما يتبادر إلى الذهن ، ولكن أيضًا المرونة في استخدام IDE الأصلي والقدرة على العمل دون اتصال وتشغيل المهام في سحابة AWS عندما تكون جاهزًا تلعب دورًا مهمًا.
كيف تعمل البيئة المحلية
أنت تكتب الكود لإنشاء النموذج ، ولكن بدلاً من مثيل SageMake Notebook أو SageMaker Studio Notebook ، يمكنك القيام بذلك على جهازك المحلي في Jupyter أو من IDE الخاص بك. بعد ذلك ، عندما يصبح كل شيء جاهزًا ، ستبدأ التدريب على مثيلات SageMaker على AWS. بعد التدريب ، سيتم تخزين النموذج في AWS. يمكنك بعد ذلك تشغيل النشر أو تحويل الدُفعات من جهازك المحلي.
تهيئة البيئة مع كوندا
يوصى بإعداد بيئة افتراضية لبيثون. في حالتنا ، سوف نستخدم conda لإدارة البيئات الافتراضية ، ولكن يمكنك استخدام virtualenv. مرة أخرى ، يستخدم Amazon SageMaker conda لإدارة البيئات والحزم. من المفترض أنك قمت بالفعل بتثبيت conda ، إذا لم يكن كذلك ، فانتقل إلى هنا .
إنشاء بيئة كوندا جديدة
conda create -n sagemaker python=3
نقوم بتنشيط والتحقق من البيئة
تركيب الحزم المطلوبة
لتثبيت الحزم ، استخدم الأوامر
condaأو pip. دعنا نختار الخيار مع conda .
conda install -y pandas numpy matplotlib
تثبيت حزم AWS
قم بتثبيت AWS SDK لـ Python (boto) و awscli و SageMaker Python SDK. لا يتوفر SageMaker Python SDK كحزمة conda ، لذلك سنستخدمها هنا فقط
pip.
pip install boto3 awscli sagemaker
إذا كانت هذه هي المرة الأولى التي تستخدم فيها awscli ، فأنت بحاجة إلى تكوينه. هنا يمكنك أن ترى كيف تفعل ذلك.
سيتم تثبيت الإصدار الثاني من SageMaker Python SDK افتراضيًا. تأكد من التحقق من وجود تغييرات عاجلة في الإصدار الثاني من SDK.
تركيب Jupyter وبناء النواة
conda install -c conda-forge jupyterlab
python -m ipykernel install --user --name sagemaker
نتحقق من البيئة ونتحقق من الإصدارات
قم بتشغيل Jupyter من خلال مختبر Jupyter وحدد النواة
sagemakerالتي أنشأناها أعلاه.
ثم تحقق من الإصدارات الموجودة في دفتر الملاحظات للتأكد من أنها الإصدارات التي تريدها.
نصنع وندرب
يمكنك الآن البدء في بناء نموذجك محليًا والبدء في التعلم على AWS عندما تكون جاهزًا.
استيراد الطرود
استيراد الحزم المطلوبة وتحديد الدور. الاختلاف الرئيسي هنا هو أنك تحتاج إلى تحديد
arnالأدوار بشكل مباشر ، وليس get_execution_role(). نظرًا لأنك تقوم بتشغيل كل شيء من جهازك المحلي باستخدام بيانات اعتماد AWS وليس مثيل دفتر ملاحظات له دور ، get_execution_role()فلن تعمل الميزة .
from sagemaker import image_uris # Use image_uris instead of get_image_uri
from sagemaker import TrainingInput # Use instead of sagemaker.session.s3_input
region = boto3.Session().region_name
container = image_uris.retrieve('image-classification',region)
bucket= 'your-bucket-name'
prefix = 'output'
SageMakerRole='arn:aws:iam::xxxxxxxxxx:role/service-role/AmazonSageMaker-ExecutionRole-20191208T093742'
قم بإنشاء المثمن
قم بإنشاء مقيِّم وقم بتعيين المعلمات الفائقة كما تفعل عادةً. في المثال أدناه ، نقوم بتدريب مصنف الصور باستخدام خوارزمية تصنيف الصور المضمنة. يمكنك أيضًا تحديد نوع مثيل Stagemaker وعدد المثيلات التي تريد استخدامها للتدريب.
s3_output_location = 's3://{}/output'.format(bucket, prefix)
classifier = sagemaker.estimator.Estimator(container,
role=SageMakerRole,
instance_count=1,
instance_type='ml.p2.xlarge',
volume_size = 50,
max_run = 360000,
input_mode= 'File',
output_path=s3_output_location)
classifier.set_hyperparameters(num_layers=152,
use_pretrained_model=0,
image_shape = "3,224,224",
num_classes=2,
mini_batch_size=32,
epochs=30,
learning_rate=0.01,
num_training_samples=963,
precision_dtype='float32')
قنوات التعلم
حدد قنوات التعلم بالطريقة التي تقوم بها دائمًا ، ولا توجد أيضًا تغييرات مقارنة بكيفية القيام بذلك على نسخة دفتر ملاحظاتك.
train_data = TrainingInput(s3train, distribution='FullyReplicated',
content_type='application/x-image', s3_data_type='S3Prefix')
validation_data = TrainingInput(s3validation, distribution='FullyReplicated',
content_type='application/x-image', s3_data_type='S3Prefix')
train_data_lst = TrainingInput(s3train_lst, distribution='FullyReplicated',
content_type='application/x-image', s3_data_type='S3Prefix')
validation_data_lst = TrainingInput(s3validation_lst, distribution='FullyReplicated',
content_type='application/x-image', s3_data_type='S3Prefix')
data_channels = {'train': train_data, 'validation': validation_data,
'train_lst': train_data_lst, 'validation_lst': validation_data_lst}
نبدأ التدريب
ابدأ مهمة التدريب في SageMaker عن طريق استدعاء الطريقة المناسبة ، والتي ستبدأ التدريب على مثيلات SageMaker AWS.
classifier.fit(inputs=data_channels, logs=True)
يمكنك التحقق من حالة وظائف التدريب مع قائمة-تدريب-الوظائف .
هذا كل شئ. اكتشفنا اليوم كيفية إعداد بيئة SageMaker محليًا وبناء نماذج التعلم الآلي على آلة محلية باستخدام Jupyter. إلى جانب Jupyter ، يمكنك أن تفعل الشيء نفسه من IDE الخاص بك.
تعلم سعيد!
