Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.

Amazon SageMaker Autopilot এর সাথে একটি শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন৷

অ্যামাজন সেজমেকার অটোপাইলট মাত্র কয়েকটি লাইন বা এমনকি কোডের সাথে একটি এন্ড-টু-এন্ড মেশিন লার্নিং (ML) মডেল এবং অনুমান পাইপলাইন দ্রুত তৈরি এবং স্থাপন করা সংস্থাগুলির পক্ষে সম্ভব করে তোলে কোন কোড ছাড়া সব সঙ্গে অ্যামাজন সেজমেকার স্টুডিও. অটোপাইলট পরিকাঠামো কনফিগার করার ভারী উত্তোলন এবং বৈশিষ্ট্য ইঞ্জিনিয়ারিং, মডেল নির্বাচন এবং হাইপারপ্যারামিটার টিউনিং সহ একটি সম্পূর্ণ পাইপলাইন তৈরি করতে যে সময় লাগে তা অফলোড করে।

এই পোস্টে, আমরা অটোপাইলট দিয়ে কীভাবে কাঁচা ডেটা থেকে একটি শক্তিশালী এবং সম্পূর্ণরূপে স্থাপন করা অনুমান পাইপলাইনে যেতে হয় তা দেখাই।

সমাধান ওভারভিউ

আমরা ব্যাবহার করি বাইকশেয়ারিং-এ লিফটের পাবলিক ডেটাসেট এই সিমুলেশনটি ভবিষ্যদ্বাণী করার জন্য যে কোনও ব্যবহারকারী এতে অংশগ্রহণ করে কিনা বাইক শেয়ার ফর অল প্রোগ্রাম. এটি একটি সাধারণ বাইনারি শ্রেণিবিন্যাস সমস্যা।

বাইক শেয়ার ফর অল প্রোগ্রামে অংশগ্রহণের ভিত্তিতে ব্যবহারকারীদের শ্রেণীবদ্ধ করার জন্য একটি স্বয়ংক্রিয় এবং রিয়েল-টাইম ইনফারেন্স পাইপলাইন তৈরি করা কতটা সহজ তা আমরা দেখাতে চাই। এই লক্ষ্যে, আমরা সান ফ্রান্সিসকো বে এরিয়াতে অপারেটিং একটি কাল্পনিক বাইকশেয়ার কোম্পানির জন্য এন্ড-টু-এন্ড ডেটা ইনজেশন এবং ইনফারেন্স পাইপলাইন সিমুলেট করি।

আর্কিটেকচার দুটি ভাগে বিভক্ত: ইনজেশন পাইপলাইন এবং ইনফরেন্স পাইপলাইন।
Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.

আমরা এই পোস্টের প্রথম বিভাগে প্রাথমিকভাবে ML পাইপলাইনের উপর ফোকাস করি এবং দ্বিতীয় অংশে ডেটা ইনজেশন পাইপলাইন পর্যালোচনা করি।

পূর্বশর্ত

এই উদাহরণটি অনুসরণ করতে, নিম্নলিখিত পূর্বশর্তগুলি পূরণ করুন:

  1. একটি নতুন সেজমেকার নোটবুক উদাহরণ তৈরি করুন.
  2. তৈরি একটি আমাজন কিনেস ডেটা ফায়ারহোজ ose একটি সঙ্গে বিতরণ স্ট্রীম এডাব্লুএস ল্যাম্বদা রূপান্তর ফাংশন। নির্দেশাবলীর জন্য, দেখুন AWS Lambda এর সাথে Amazon Kinesis Firehose ডেটা ট্রান্সফরমেশন. এই ধাপটি ঐচ্ছিক এবং শুধুমাত্র ডেটা স্ট্রিমিং অনুকরণ করার জন্য প্রয়োজন।

ডেটা অন্বেষণ

আসুন ডেটাসেট ডাউনলোড এবং কল্পনা করি, যা একটি সর্বজনীনে অবস্থিত আমাজন সিম্পল স্টোরেজ সার্ভিস (Amazon S3) বালতি এবং স্ট্যাটিক ওয়েবসাইট:

# The dataset is located in a public bucket and static s3 website.
# https://www.lyft.com/bikes/bay-wheels/system-data import pandas as pd
import numpy as np
import os
from time import sleep !wget -q -O '201907-baywheels-tripdata.zip' https://s3.amazonaws.com/baywheels-data/201907-baywheels-tripdata.csv.zip
!unzip -q -o 201907-baywheels-tripdata.zip
csv_file = os.listdir('.')
data = pd.read_csv('201907-baywheels-tripdata.csv', low_memory=False)
data.head()

নিম্নলিখিত স্ক্রিনশট রূপান্তরের আগে ডেটার একটি উপসেট দেখায়।
Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.

ডেটার শেষ কলামে আমরা যে টার্গেটটি ভবিষ্যদ্বাণী করতে চাই তা ধারণ করে, যা একটি বাইনারি ভেরিয়েবল যা হ্যাঁ বা না মান গ্রহণ করে, যা নির্দেশ করে যে ব্যবহারকারী সকলের জন্য বাইক শেয়ার প্রোগ্রামে অংশগ্রহণ করে কিনা।

আসুন যেকোন ডেটা ভারসাম্যহীনতার জন্য আমাদের লক্ষ্য ভেরিয়েবলের বিতরণের দিকে নজর দিন।

# For plotting
%matplotlib inline
import matplotlib.pyplot as plt
#!pip install seaborn # If you need this library
import seaborn as sns
display(sns.countplot(x='bike_share_for_all_trip', data=data))

Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.

উপরের গ্রাফে যেমন দেখানো হয়েছে, প্রোগ্রামে কম লোক অংশগ্রহণ করে ডেটা ভারসাম্যহীন।

অতি-প্রতিনিধিত্বের পক্ষপাত রোধ করতে আমাদের ডেটার ভারসাম্য বজায় রাখতে হবে। এই পদক্ষেপটি ঐচ্ছিক কারণ অটোপাইলট স্বয়ংক্রিয়ভাবে শ্রেণি ভারসাম্যহীনতা পরিচালনা করার জন্য একটি অভ্যন্তরীণ পদ্ধতির প্রস্তাব দেয়, যা একটি F1 স্কোর বৈধতা মেট্রিকে ডিফল্ট হয়। অতিরিক্তভাবে, আপনি যদি ডেটার ভারসাম্য নিজেরাই বেছে নেন, তাহলে আপনি শ্রেণী ভারসাম্যহীনতা পরিচালনার জন্য আরও উন্নত কৌশল ব্যবহার করতে পারেন, যেমন SMOTE or GAN.

এই পোস্টের জন্য, আমরা ডাটা ব্যালেন্সিং কৌশল হিসাবে সংখ্যাগরিষ্ঠ শ্রেণীর (না) নমুনা তুলেছি:

নিম্নলিখিত কোডটি ডেটা সমৃদ্ধ করে এবং অত্যধিক উপস্থাপিত শ্রেণীকে আন্ডার-স্যাম্পল করে:

df = data.copy()
df.drop(columns=['rental_access_method'], inplace=True) df['start_time'] = pd.to_datetime(df['start_time'])
df['start_time'] = pd.to_datetime(df['end_time']) # Adding some day breakdown
df = df.assign(day_of_week=df.start_time.dt.dayofweek, hour_of_day=df.start_time.dt.hour, trip_month=df.start_time.dt.month)
# Breaking the day in 4 parts: ['morning', 'afternoon', 'evening']
conditions = [ (df['hour_of_day'] >= 5) & (df['hour_of_day'] < 12), (df['hour_of_day'] >= 12) & (df['hour_of_day'] < 18), (df['hour_of_day'] >= 18) & (df['hour_of_day'] < 21),
]
choices = ['morning', 'afternoon', 'evening']
df['part_of_day'] = np.select(conditions, choices, default='night')
df.dropna(inplace=True) # Downsampling the majority to rebalance the data
# We are getting about an even distribution
df.sort_values(by='bike_share_for_all_trip', inplace=True)
slice_pointe = int(df['bike_share_for_all_trip'].value_counts()['Yes'] * 2.1)
df = df[-slice_pointe:]
# The data is balanced now. Let's reshuffle the data
df = df.sample(frac=1).reset_index(drop=True)

আমরা ইচ্ছাকৃতভাবে আমাদের শ্রেণীগত বৈশিষ্ট্যগুলিকে এনকোড করা হয়নি, আমাদের বাইনারি লক্ষ্য মান সহ। এর কারণ হল অটোপাইলট স্বয়ংক্রিয় বৈশিষ্ট্য ইঞ্জিনিয়ারিং এবং পাইপলাইন স্থাপনার অংশ হিসাবে আমাদের জন্য ডেটা এনকোডিং এবং ডিকোড করার যত্ন নেয়, যেমনটি আমরা পরবর্তী বিভাগে দেখতে পাচ্ছি।

নিম্নলিখিত স্ক্রিনশটটি আমাদের ডেটার একটি নমুনা দেখায়।
Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.

নিম্নলিখিত গ্রাফের ডেটা অন্যথায় স্বাভাবিক দেখায়, একটি বিমোডাল ডিস্ট্রিবিউশন যা সকালের সময় এবং বিকেলের ভিড়ের সময় দুটি শিখর প্রতিনিধিত্ব করে, যেমনটি আপনি আশা করেন। আমরা সপ্তাহান্তে এবং রাতে কম কার্যকলাপ পর্যবেক্ষণ করি।
Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.

পরবর্তী বিভাগে, আমরা অটোপাইলটকে ডেটা ফিড করি যাতে এটি আমাদের জন্য একটি পরীক্ষা চালাতে পারে।

একটি বাইনারি শ্রেণিবিন্যাস মডেল তৈরি করুন

অটোপাইলটের প্রয়োজন যে আমরা ইনপুট এবং আউটপুট গন্তব্য বালতি নির্দিষ্ট করি। এটি ডেটা লোড করতে ইনপুট বাকেট ব্যবহার করে এবং আউটপুট বাকেট ব্যবহার করে শিল্পকর্ম সংরক্ষণ করতে, যেমন ফিচার ইঞ্জিনিয়ারিং এবং জেনারেট করা জুপিটার নোটবুক। প্রশিক্ষণ শেষ হওয়ার পর মডেলের কার্যকারিতা মূল্যায়ন ও যাচাই করার জন্য আমরা 5% ডেটাসেট ধরে রাখি এবং S95 ইনপুট বাকেটে 3% ডেটাসেট আপলোড করি। নিম্নলিখিত কোড দেখুন:

import sagemaker
import boto3 # Let's define our storage.
# We will use the default sagemaker bucket and will enforce encryption bucket = sagemaker.Session().default_bucket() # SageMaker default bucket. #Encrypting the bucket
s3 = boto3.client('s3')
SSEConfig={ 'Rules': [ { 'ApplyServerSideEncryptionByDefault': { 'SSEAlgorithm': 'AES256', } }, ] }
s3.put_bucket_encryption(Bucket=bucket, ServerSideEncryptionConfiguration=SSEConfig) prefix = 'sagemaker-automl01' # prefix for ther bucket
role = sagemaker.get_execution_role() # IAM role object to use by SageMaker
sagemaker_session = sagemaker.Session() # Sagemaker API
region = sagemaker_session.boto_region_name # AWS Region # Where we will load our data input_path = "s3://{}/{}/automl_bike_train_share-1".format(bucket, prefix) output_path = "s3://{}/{}/automl_bike_output_share-1".format(bucket, prefix) # Spliting data in train/test set.
# We will use 95% of the data for training and the remainder for testing.
slice_point = int(df.shape[0] * 0.95) training_set = df[:slice_point] # 95%
testing_set = df[slice_point:] # 5% # Just making sure we have split it correctly
assert training_set.shape[0] + testing_set.shape[0] == df.shape[0] # Let's save the data locally and upload it to our s3 data location
training_set.to_csv('bike_train.csv')
testing_set.to_csv('bike_test.csv', header=False) # Uploading file the trasining set to the input bucket
sagemaker.s3.S3Uploader.upload(local_path='bike_train.csv', desired_s3_uri=input_path)

আমরা ইনপুট গন্তব্যে ডেটা আপলোড করার পরে, এটি অটোপাইলট শুরু করার সময়:

from sagemaker.automl.automl import AutoML
# You give your job a name and provide the s3 path where you uploaded the data
bike_automl_binary = AutoML(role=role, target_attribute_name='bike_share_for_all_trip', output_path=output_path, max_candidates=30)
# Starting the training bike_automl_binary.fit(inputs=input_path, wait=False, logs=False)

আমাদের যা পরীক্ষা শুরু করতে হবে তা হল fit() পদ্ধতিকে কল করা। অটোপাইলটের প্রয়োজনীয় পরামিতি হিসাবে ইনপুট এবং আউটপুট S3 অবস্থান এবং টার্গেট অ্যাট্রিবিউট কলাম প্রয়োজন। বৈশিষ্ট্য প্রক্রিয়াকরণের পরে, অটোপাইলট কল করে সেজমেকার স্বয়ংক্রিয় মডেল টিউনিং আপনার ডেটাসেটে অনেক প্রশিক্ষণের কাজ চালিয়ে একটি মডেলের সেরা সংস্করণ খুঁজে পেতে। প্রার্থীর সংখ্যা 30-এ সীমিত করার জন্য আমরা ঐচ্ছিক max_candidates প্যারামিটার যোগ করেছি, যা অটোপাইলট সর্বোত্তম মডেল খোঁজার জন্য অ্যালগরিদম এবং হাইপারপ্যারামিটারের বিভিন্ন সংমিশ্রণে লঞ্চ করে এমন প্রশিক্ষণ কাজের সংখ্যা। আপনি যদি এই প্যারামিটারটি নির্দিষ্ট না করেন তবে এটি 250 তে ডিফল্ট হয়।

আমরা নিম্নলিখিত কোড সহ অটোপাইলটের অগ্রগতি পর্যবেক্ষণ করতে পারি:

# Let's monitor the progress this will take a while. Go grup some coffe.
from time import sleep def check_job_status(): return bike_automl_binary.describe_auto_ml_job()['AutoMLJobStatus'] def discribe(): return bike_automl_binary.describe_auto_ml_job() while True: print (check_job_status(), discribe()['AutoMLJobSecondaryStatus'], end='** ') if check_job_status() in ["Completed", "Failed"]: if "Failed" in check_job_status(): print(discribe()['FailureReason']) break sleep(20)

প্রশিক্ষণ শেষ হতে কিছু সময় লাগে। এটি চলাকালীন, আসুন অটোপাইলট ওয়ার্কফ্লো দেখুন।
Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.

সেরা প্রার্থী খুঁজে পেতে, নিম্নলিখিত কোড ব্যবহার করুন:

# Let's take a look at the best candidate selected by AutoPilot
from IPython.display import JSON
def jsonView(obj, rootName=None): return JSON(obj, root=rootName, expanded=True) bestCandidate = bike_automl_binary.describe_auto_ml_job()['BestCandidate']
display(jsonView(bestCandidate['FinalAutoMLJobObjectiveMetric'], 'FinalAutoMLJobObjectiveMetric'))

নিম্নলিখিত স্ক্রিনশট আমাদের আউটপুট দেখায়।
Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.

আমাদের মডেল 96% একটি বৈধতা নির্ভুলতা অর্জন করেছে, তাই আমরা এটি স্থাপন করতে যাচ্ছি। আমরা এমন একটি শর্ত যোগ করতে পারি যে আমরা কেবলমাত্র মডেলটি ব্যবহার করি যদি সঠিকতা একটি নির্দিষ্ট স্তরের উপরে হয়।

অনুমান পাইপলাইন

আমরা আমাদের মডেল স্থাপন করার আগে, আসুন আমাদের সেরা প্রার্থী এবং আমাদের পাইপলাইনে কী ঘটছে তা পরীক্ষা করি। নিম্নলিখিত কোড দেখুন:

display(jsonView(bestCandidate['InferenceContainers'], 'InferenceContainers'))

নিচের চিত্রটি আমাদের আউটপুট দেখায়।
Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.

অটোপাইলট মডেলটি তৈরি করেছে এবং এটি তিনটি ভিন্ন পাত্রে প্যাকেজ করেছে, প্রতিটি ক্রমানুসারে একটি নির্দিষ্ট কাজ চালাচ্ছে: রূপান্তর, ভবিষ্যদ্বাণী এবং বিপরীত-রূপান্তর। এই বহু-পদক্ষেপ অনুমান একটি দ্বারা সম্ভব সেজমেকার ইনফারেন্স পাইপলাইন।

একটি মাল্টি-স্টেপ ইনফারেন্স একাধিক ইনফারেন্স মডেলকে চেইন করতে পারে। উদাহরণস্বরূপ, একটি ধারক পারফর্ম করতে পারে প্রধান উপাদান বিশ্লেষণ XGBoost কন্টেইনারে ডেটা পাস করার আগে।

একটি শেষ পয়েন্টে অনুমান পাইপলাইন স্থাপন করুন

স্থাপনার প্রক্রিয়ায় কোডের মাত্র কয়েকটি লাইন জড়িত:

# We chose to difine an endpoint name.
from datetime import datetime as dt
today = str(dt.today())[:10]
endpoint_name='binary-bike-share-' + today
endpoint = bike_automl_binary.deploy(initial_instance_count=1, instance_type='ml.m5.xlarge', endpoint_name=endpoint_name, candidate=bestCandidate, wait=True)

আসুন একটি ভবিষ্যদ্বাণীকারীর সাথে ভবিষ্যদ্বাণীর জন্য আমাদের শেষ পয়েন্টটি কনফিগার করি:

from sagemaker.serializers import CSVSerializer
from sagemaker.deserializers import CSVDeserializer
csv_serializer = CSVSerializer()
csv_deserializer = CSVDeserializer()
# Initialize the predictor
predictor = sagemaker.predictor.Predictor(endpoint_name=endpoint_name, sagemaker_session=sagemaker.Session(), serializer=csv_serializer, deserializer=csv_deserializer )

এখন যেহেতু আমাদের এন্ডপয়েন্ট এবং ভবিষ্যদ্বাণী প্রস্তুত আছে, এখন সময় এসেছে টেস্টিং ডেটা ব্যবহার করার এবং আমাদের মডেলের যথার্থতা পরীক্ষা করার। আমরা একটি ইউটিলিটি ফাংশন সংজ্ঞায়িত করে শুরু করি যা আমাদের অনুমান শেষ পয়েন্টে একবারে এক লাইনে ডেটা পাঠায় এবং বিনিময়ে একটি ভবিষ্যদ্বাণী পায়। কারণ আমরা একটি আছে এক্সজিবিস্ট মডেল, আমরা শেষ পয়েন্টে CSV লাইন পাঠানোর আগে টার্গেট ভেরিয়েবল ড্রপ করি। উপরন্তু, আমরা ফাইলটি লুপ করার আগে পরীক্ষার CSV থেকে শিরোনামটি সরিয়ে দিয়েছি, যা SageMaker-এ XGBoost-এর জন্য আরেকটি প্রয়োজনীয়তা। নিম্নলিখিত কোড দেখুন:

# The fuction takes 3 arguments: the file containing the test set,
# The predictor and finaly the number of lines to send for prediction.
# The function returns two Series: inferred and Actual.
def get_inference(file, predictor, n=1): infered = [] actual = [] with open(file, 'r') as csv: for i in range(n): line = csv.readline().split(',') #print(line) try: # Here we remove the target variable from the csv line before predicting observed = line.pop(14).strip('n') actual.append(observed) except: pass obj = ','.join(line) predicted = predictor.predict(obj)[0][0] infered.append(predicted) pd.Series(infered) data = {'Infered': pd.Series(infered), 'Observed': pd.Series(actual)} return pd.DataFrame(data=data) n = testing_set.shape[0] # The size of the testing data
inference_df = get_inference('bike_test.csv', predictor, n) inference_df['Binary_Result'] = (inference_df['Observed'] == inference_df['Infered'])
display(inference_df.head())

নিম্নলিখিত স্ক্রিনশট আমাদের আউটপুট দেখায়।
Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.

এখন আমাদের মডেলের নির্ভুলতা গণনা করা যাক।
Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.

নিম্নলিখিত কোডটি দেখুন:

count_binary = inference_df['Binary_Result'].value_counts()
accuracy = count_binary[True]/n
print('Accuracy:', accuracy)

আমরা 92% এর নির্ভুলতা পাই। এটি বৈধকরণ পদক্ষেপের সময় প্রাপ্ত 96% থেকে সামান্য কম, তবে এটি এখনও যথেষ্ট বেশি। আমরা আশা করি না যে নির্ভুলতা ঠিক একই হবে কারণ পরীক্ষাটি একটি নতুন ডেটাসেট দিয়ে করা হয়।

ডেটা ইনজেশন

আমরা সরাসরি ডেটা ডাউনলোড করেছি এবং প্রশিক্ষণের জন্য কনফিগার করেছি। বাস্তব জীবনে, আপনাকে প্রান্ত ডিভাইস থেকে সরাসরি ডেটা লেকে পাঠাতে হতে পারে এবং সেজমেকারকে ডেটা লেক থেকে সরাসরি নোটবুকে লোড করতে হবে।

Kinesis Data Firehose হল একটি ভাল বিকল্প এবং নির্ভরযোগ্যভাবে ডেটা লেক, ডেটা স্টোর এবং অ্যানালিটিক্স টুলগুলিতে স্ট্রিমিং ডেটা লোড করার সবচেয়ে সহজ উপায়। এটি Amazon S3 এবং অন্যান্য AWS ডেটা স্টোরগুলিতে স্ট্রিমিং ডেটা ক্যাপচার, রূপান্তর এবং লোড করতে পারে।

আমাদের ব্যবহারের ক্ষেত্রে, আমরা একটি ল্যাম্বডা ট্রান্সফরমেশন ফাংশন সহ একটি কাইনেসিস ডেটা ফায়ারহোস ডেলিভারি স্ট্রীম তৈরি করি যাতে এটি স্ট্রীম অতিক্রম করে কিছু হালকা ডেটা পরিষ্কার করতে পারে৷ নিম্নলিখিত কোড দেখুন:

# Data processing libraries
import pandas as pd # Data processing
import numpy as np
import base64
from io import StringIO def lambda_handler(event, context): output = [] print('Received', len(event['records']), 'Records') for record in event['records']: payload = base64.b64decode(record['data']).decode('utf-8') df = pd.read_csv(StringIO(payload), index_col=0) df.drop(columns=['rental_access_method'], inplace=True) df['start_time'] = pd.to_datetime(df['start_time']) df['start_time'] = pd.to_datetime(df['end_time']) # Adding some day breakdown df = df.assign(day_of_week=df.start_time.dt.dayofweek, hour_of_day=df.start_time.dt.hour, trip_month=df.start_time.dt.month) # Breaking the day in 4 parts: ['morning', 'afternoon', 'evening'] conditions = [ (df['hour_of_day'] >= 5) & (df['hour_of_day'] < 12), (df['hour_of_day'] >= 12) & (df['hour_of_day'] < 18), (df['hour_of_day'] >= 18) & (df['hour_of_day'] < 21), ] choices = ['morning', 'afternoon', 'evening'] df['part_of_day'] = np.select(conditions, choices, default='night') df.dropna(inplace=True) # Downsampling the majority to rebalance the data # We are getting about an even distribution df.sort_values(by='bike_share_for_all_trip', inplace=True) slice_pointe = int(df['bike_share_for_all_trip'].value_counts()['Yes'] * 2.1) df = df[-slice_pointe:] # The data is balanced now. Let's reshuffle the data df = df.sample(frac=1).reset_index(drop=True) data = base64.b64encode(bytes(df.to_csv(), 'utf-8')).decode("utf-8") output_record = { 'recordId': record['recordId'], 'result': 'Ok', 'data': data } output.append(output_record) print('Returned', len(output), 'Records') print('Event', event) return {'records': output}

এই ল্যাম্বডা ফাংশনটি ডিভাইসগুলি থেকে ডেটা লেকে প্রবাহিত ডেটার হালকা রূপান্তর সম্পাদন করে। এটি একটি CSV ফর্ম্যাট করা ডেটা ফাইল আশা করে৷

ইনজেশন ধাপের জন্য, আমরা ডেটা ডাউনলোড করি এবং একটি ল্যাম্বডা ট্রান্সফর্ম ফাংশন সহ কাইনেসিস ডেটা ফায়ারহোসে একটি ডেটা স্ট্রীম এবং আমাদের S3 ডেটা লেকে অনুকরণ করি।

আসুন কয়েকটি লাইন স্ট্রিমিং অনুকরণ করি:

# Saving the data in one file.
file = '201907-baywheels-tripdata.csv' data.to_csv(file) # Stream the data 'n' lines at a time.
# Only run this for a minute and stop the cell
def streamer(file, n): with open(file, 'r') as csvfile: header = next(csvfile) data = header counter = 0 loop = True while loop == True: for i in range(n): line = csvfile.readline() data+=line # We reached the end of the csv file. if line == '': loop = False counter+=n # Use your kinesis streaming name stream = client.put_record(DeliveryStreamName='firehose12-DeliveryStream-OJYW71BPYHF2', Record={"Data": bytes(data, 'utf-8')}) data = header print( file, 'HTTPStatusCode: '+ str(stream['ResponseMetadata']['HTTPStatusCode']), 'csv_lines_sent: ' + str(counter), end=' -*- ') sleep(random.randrange(1, 3)) return
# Streaming for 500 lines at a time. You can change this number up and down.
streamer(file, 500) # We can now load our data as a DataFrame because it’s streamed into the S3 data lake:
# Getting data from s3 location where it was streamed.
STREAMED_DATA = 's3://firehose12-deliverybucket-11z0ya3patrod/firehose/2020'
csv_uri = sagemaker.s3.S3Downloader.list(STREAMED_DATA)
in_memory_string = [sagemaker.s3.S3Downloader.read_file(file) for file in csv_uri]
in_memory_csv = [pd.read_csv(StringIO(file), index_col=0) for file in in_memory_string]
display(df.tail())

পরিষ্কার কর

খরচ কমাতে এই অনুশীলনে ব্যবহৃত সমস্ত সংস্থান মুছে ফেলা গুরুত্বপূর্ণ। নিচের কোডটি আমাদের তৈরি করা সেজমেকার ইনফারেন্স এন্ডপয়েন্ট মুছে দেয় সেইসাথে আমাদের আপলোড করা প্রশিক্ষণ এবং টেস্টিং ডেটা:

#Delete the s3 data
predictor.delete_endpoint() # Delete s3 data
s3 = boto3.resource('s3')
ml_bucket = sagemaker.Session().default_bucket()
delete_data = s3.Bucket(ml_bucket).objects.filter(Prefix=prefix).delete()

উপসংহার

এমএল ইঞ্জিনিয়ার, ডেটা সায়েন্টিস্ট এবং সফ্টওয়্যার ডেভেলপাররা অটোপাইলট ব্যবহার করে একটি অনুমান পাইপলাইন তৈরি এবং স্থাপন করতে পারেন যার মধ্যে সামান্য থেকে কোন এমএল প্রোগ্রামিং অভিজ্ঞতা নেই৷ অটোপাইলট ডেটা সায়েন্স এবং এমএল সেরা অনুশীলনগুলি ব্যবহার করে সময় এবং সংস্থান সংরক্ষণ করে। বৃহৎ সংস্থাগুলি এখন ইঞ্জিনিয়ারিং সংস্থানগুলিকে অবকাঠামো কনফিগারেশন থেকে দূরে সরিয়ে মডেলগুলি উন্নত করতে এবং ব্যবসায়িক ব্যবহারের ক্ষেত্রে সমাধান করতে পারে৷ স্টার্টআপ এবং ছোট সংস্থাগুলি সামান্য থেকে কোনও এমএল দক্ষতা ছাড়াই মেশিন লার্নিং শুরু করতে পারে।

সেজমেকার অটোপাইলট দিয়ে শুরু করতে, দেখুন পণ্য পাতা অথবা সেজমেকার স্টুডিওর মধ্যে সেজমেকার অটোপাইলট অ্যাক্সেস করুন।

আমরা সেজমেকারের অফার করা অন্যান্য গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি সম্পর্কে আরও শিখতে সুপারিশ করি, যেমন আমাজন সেজমেকার ফিচার স্টোর, যার সাথে একীভূত হয় অ্যামাজন সেজমেকার পাইপলাইন তৈরি করতে, বৈশিষ্ট্য অনুসন্ধান এবং আবিষ্কার যোগ করতে এবং স্বয়ংক্রিয় এমএল ওয়ার্কফ্লো পুনরায় ব্যবহার করতে। আপনি আপনার ডেটাসেটে বিভিন্ন বৈশিষ্ট্য বা লক্ষ্য ভেরিয়েন্ট সহ একাধিক অটোপাইলট সিমুলেশন চালাতে পারেন। আপনি এটিকে একটি গতিশীল যানবাহন বরাদ্দকরণ সমস্যা হিসাবেও যোগাযোগ করতে পারেন যেখানে আপনার মডেল সময় (যেমন দিন বা সপ্তাহের দিন) বা অবস্থান বা উভয়ের সংমিশ্রণের উপর ভিত্তি করে গাড়ির চাহিদা ভবিষ্যদ্বাণী করার চেষ্টা করে।


লেখক সম্পর্কে

Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.ডগ এমবায়া ডেটা এবং বিশ্লেষণে ফোকাস সহ একজন সিনিয়র সলিউশন আর্কিটেক্ট। ডগ AWS অংশীদারদের সাথে ঘনিষ্ঠভাবে কাজ করে, তাদের ক্লাউডে ডেটা এবং বিশ্লেষণ সমাধান একীভূত করতে সাহায্য করে। ডগের পূর্বের অভিজ্ঞতার মধ্যে রয়েছে রাইড শেয়ারিং এবং ফুড ডেলিভারি সেগমেন্টে AWS গ্রাহকদের সমর্থন করা।

Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence-এর সাথে শেয়ার করা বাইক এবং স্কুটারের শ্রেণীবিভাগ মডেল স্বয়ংক্রিয় করুন। উল্লম্ব অনুসন্ধান. আ.ভ্যালেরিও পেরোন অ্যামাজন সেজমেকার স্বয়ংক্রিয় মডেল টিউনিং এবং অটোপাইলটে কর্মরত একজন ফলিত বিজ্ঞান ব্যবস্থাপক।

সময় স্ট্যাম্প:

থেকে আরো এডাব্লুএস মেশিন লার্নিং

TensorFlow এবং Amazon SageMaker-এর সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন

উত্স নোড: 1354412
সময় স্ট্যাম্প: জুন 13, 2022

অ্যামাজন সেজমেকার জাম্পস্টার্টে একটি ডোমেন-অভিযোজিত ফাইন-টিউনড বড় ভাষা মডেল ব্যবহার করে আর্থিক পাঠ্য প্রজন্ম

উত্স নোড: 1826689
সময় স্ট্যাম্প: এপ্রিল 18, 2023