স্কেলে মডেল স্থাপন করা অনেক ডেটা বিজ্ঞানী এবং মেশিন লার্নিং ইঞ্জিনিয়ারদের জন্য একটি কষ্টকর কাজ হতে পারে। যাইহোক, Amazon SageMaker এন্ডপয়েন্ট আপনার মেশিন লার্নিং (ML) মডেল ইনফারেন্সগুলি স্থাপন এবং স্কেল করার জন্য একটি সহজ সমাধান প্রদান করে। আমাদের শেষ ব্লগ পোস্ট এবং গিটহুব রেপো হোস্টিং একটি YOLOv5 TensorFlowModel
on আমাজন সেজমেকার সমাপ্তি আমাদের পাঠকদের কাছ থেকে অনেক আগ্রহ সৃষ্টি করেছে। অনেক পাঠক কীভাবে YOLOv5 মডেল ব্যবহার করে হোস্ট করতে হয় তা শিখতে আগ্রহী ছিলেন PyTorch
. এই সমস্যাটি সমাধান করার জন্য এবং সাম্প্রতিক রিলিজের সাথে YOLOv8 থেকে মডেল আল্ট্রালাইটিক্স, আমরা কিভাবে একটি YOLOv8 হোস্ট করতে এই পোস্ট উপস্থাপন PyTorchModel
সেজমেকার এন্ডপয়েন্টে। YOLOv8 মডেল, GNU GPL3 লাইসেন্সের অধীনে বিতরণ করা একটি জনপ্রিয় বস্তু সনাক্তকরণ মডেল যা তার রানটাইম দক্ষতার পাশাপাশি সনাক্তকরণের নির্ভুলতার জন্য পরিচিত। Amazon SageMaker এন্ডপয়েন্টগুলি মডেল স্থাপনের জন্য একটি সহজে মাপযোগ্য এবং খরচ-অপ্টিমাইজ করা সমাধান প্রদান করে।
সমাধান ওভারভিউ
নিম্নলিখিত চিত্রটি SageMaker এন্ডপয়েন্ট ব্যবহার করে YOLOv8 মডেল হোস্ট করতে ব্যবহৃত AWS পরিষেবাগুলির রূপরেখা দেয় এবং ব্যবহারকারী হিসাবে শেষ বিন্দুকে আহ্বান করে৷ সমাধান ব্যবহার করে এডাব্লুএস ক্লাউডফর্মেশন একটি SageMaker উদাহরণ তৈরি স্বয়ংক্রিয় করতে এবং আমাদের ক্লোন GitHub উদাহরণের সংগ্রহস্থল। SageMaker নোটবুক একটি YOLOv8 PyTorch মডেল অ্যাক্সেস করে এবং ডাউনলোড করে এবং মডেলের সাথে কাস্টম ইনফারেন্স কোড সংরক্ষণ করে আমাজন সিম্পল স্টোরেজ সার্ভিস (Amazon S3) বালতি। নোটবুকের মধ্যে থাকা ধাপগুলি SageMaker এন্ডপয়েন্ট তৈরিকে হাইলাইট করে যা YOLOv8 PyTorch মডেল এবং কাস্টম ইনফারেন্স কোড হোস্ট করে। নোটবুকটি প্রদর্শন করে যে কীভাবে শেষ পয়েন্ট পরীক্ষা করতে হয় এবং ফলাফলগুলি প্লট করতে হয়। সমাধান নিম্নলিখিত পদক্ষেপ নিয়ে গঠিত:
- আমরা দুটি নোটবুক সহ একটি গিটহাব সংগ্রহস্থল তৈরি করেছি
1_DeployEndpoint.ipynb
এবং2_TestEndpoint.ipynb
, অধীনেsm-notebook/
ডিরেক্টরি. - AWS CloudFormation টেমপ্লেট চলে, একটি SageMaker নোটবুক উদাহরণ তৈরি করে এবং তারপর GitHub সংগ্রহস্থল ক্লোন করে।
- খাতাটি
1_DeployEndpoint.ipynb
YOLOv8 মডেল ডাউনলোড করতে ব্যবহৃত হয়। - YOLOv8 মডেল এবং অনুমান কোড হিসাবে সংরক্ষণ করা হয়
model.tar.gz
Amazon S3 এ। - একটি SageMaker শেষ পয়েন্ট হোস্টিং দ্বারা তৈরি করা হয়
model.tar.gz
. - খাতাটি
2_TestEndpoint.ipynb
শেষবিন্দু পরীক্ষা করতে এবং ফলাফল সংগ্রহ করতে ব্যবহৃত হয়।
পূর্বশর্ত
সাথে AWS অ্যাকাউন্ট AWS আইডেন্টিটি অ্যান্ড অ্যাকসেস ম্যানেজমেন্ট (IAM) ভূমিকা যা অ্যাক্সেস প্রদান করে:
- এডাব্লুএস ক্লাউডফর্মেশন
- আমাজন সেজমেকার
- আমাজন S3
1. SageMaker এন্ডপয়েন্টে YOLOv8 হোস্ট করুন
Ultralytics এর বিভিন্ন ক্ষমতা সহ একাধিক YOLOv8 মডেল রয়েছে। তারা নিম্নলিখিত উপবিভক্ত করা হয়:
- বস্তু সনাক্তকরণ (
yolov8l.pt, yolov8m.pt, yolov8n.pt, yolov8s.pt, yolov8x.pt, yolov8x6.pt
) - সেগমেন্টেশন (
yolov8l-seg.pt, yolov8m-seg.pt, yolov8n-seg.pt, yolov8s-seg.pt, yolov8x-seg.pt
) - শ্রেণীবিন্যাস (
yolov8l-cls.pt, yolov8m-cls.pt, yolov8n-cls.pt, yolov8s-cls.pt, yolov8x-cls.pt
)
এই ব্লগে, আমরা ব্যবহার করে বস্তু সনাক্তকরণের উপর ফোকাস করি yolov8l.pt
পাইটর্চ মডেল। SageMaker এন্ডপয়েন্টে YOLOv8 মডেল এবং কাস্টম ইনফারেন্স কোড হোস্ট করার জন্য, সেগুলিকে একত্রে সংকুচিত করতে হবে model.tar.gz
নিম্নলিখিত কাঠামো সহ:
model.tar.gz ├─ code/ │ ├── inference.py │ └── requirements.txt └── yolov8l.pt
মডেল ওজন yolov8l.pt
ফাইলের বাইরে হতে হবে code/
ডিরেক্টরি এবং প্রধান অনুমান পাইথন স্ক্রিপ্ট inference.py
, যার মধ্যে মডেল লোড করা, ইনপুট পার্স করা, অনুমান চালানো এবং আউটপুট-প্রসেসিং-এর জন্য প্রয়োজনীয় ফাংশন রয়েছে, এর অধীনে থাকা উচিত code/
ডিরেক্টরি আরও বিস্তারিত inference.py
নিম্নলিখিত বিভাগে উপস্থাপিত হয়.
1.1। কাস্টম ইনফারেন্স কোড
আপনার পাইপলাইন এবং কোড ওয়ার্কফ্লো উপর নির্ভর করে, সেজমেকার এন্ডপয়েন্ট থেকে ইনপুট এবং আউটপুট পরিবর্তিত হতে পারে। এই পোস্টে, আমরা একটি পাস করার জন্য একটি কর্মপ্রবাহ উপস্থাপন করি numpy
শেষ পয়েন্ট এবং প্রক্রিয়াকরণের অ্যারে। যাইহোক, শেষ পয়েন্ট ইনপুট হতে পারে json
বা পাশাপাশি পাঠ্য। আপনার কর্মপ্রবাহের উপর নির্ভর করে, আপনাকে অবশ্যই এর মধ্যে ফাংশনগুলি সংশোধন করতে হবে inference.py
বিভিন্ন ইনপুট এবং আউটপুট মিটমাট করা। উপরন্তু, YOLOv8 এর সাম্প্রতিক প্রকাশের সাথে, Ultralytics দল তাদের Python API প্রকাশ করেছে, যা আমাদের সরাসরি YOLO লাইব্রেরি ইনস্টল করার অনুমতি দেয় requirements.txt
এবং মডেলটি আমদানি করুন inference.py
.
1.1.1। বিষয়বস্তু code/inference.py
:
import numpy as np
import torch, os, json, io, cv2, time
from ultralytics import YOLO def model_fn(model_dir): print("Executing model_fn from inference.py ...") env = os.environ model = YOLO("/opt/ml/model/code/" + env['YOLOV8_MODEL']) return model def input_fn(request_body, request_content_type): print("Executing input_fn from inference.py ...") if request_content_type: jpg_original = np.load(io.BytesIO(request_body), allow_pickle=True) jpg_as_np = np.frombuffer(jpg_original, dtype=np.uint8) img = cv2.imdecode(jpg_as_np, flags=-1) else: raise Exception("Unsupported content type: " + request_content_type) return img def predict_fn(input_data, model): print("Executing predict_fn from inference.py ...") device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') model.to(device) with torch.no_grad(): result = model(input_data) return result def output_fn(prediction_output, content_type): print("Executing output_fn from inference.py ...") infer = {} for result in prediction_output: if result.boxes: infer['boxes'] = result.boxes.numpy().data.tolist() if result.masks: infer['masks'] = result.masks.numpy().data.tolist() if result.probs: infer['probs'] = result.probs.numpy().data.tolist() return json.dumps(infer)
1.1.2। বিষয়বস্তু code/requirements.txt
:
একবারের জন্য ফাইলের সমস্ত বিষয়বস্তু model.tar.gz
চূড়ান্ত করা হয়েছে, একটি টার বল তৈরি করতে নিম্নলিখিত কমান্ডটি চালান:
$ tar -czvf model.tar.gz code/ yolov8l.pt
1.2. হোস্ট model.tar.gz
সেজমেকার এন্ডপয়েন্টে:
এই কয়েক ধাপ জড়িত যেখানে model.tar.gz
প্রথম S3 বালতি আপলোড করা হয়. আপলোড করা নিদর্শন একটি SageMaker PyTorchModel তৈরি করতে ব্যবহৃত হয়। এবং অবশেষে, এই PyTorchModelটি SageMaker এন্ডপয়েন্টে মডেল স্থাপন করতে ব্যবহৃত হয়।
1.2.1। S3 এ মডেল এবং অনুমান কোড আপলোড করুন:
from sagemaker import s3 bucket = "s3://NAME_OF_BUCKET"
prefix = "yolov8/demo-custom-endpoint"
model_data = s3.S3Uploader.upload("model.tar.gz", bucket + "/" + prefix)
1.2.2। SageMaker PyTorchModel তৈরি করুন:
from sagemaker.pytorch import PyTorchModel model_name = 'yolov8l.pt' model = PyTorchModel(entry_point='inference.py', model_data=model_data, framework_version='1.12', py_version='py38', role=role, env={'TS_MAX_RESPONSE_SIZE':'20000000', 'YOLOV8_MODEL': model_name}, sagemaker_session=sess)
1.2.3। একটি শেষ পয়েন্টে মডেলটি কম্পাইল করুন এবং হোস্ট করুন:
from sagemaker.deserializers import JSONDeserializer INSTANCE_TYPE = 'ml.m5.4xlarge'
ENDPOINT_NAME = 'yolov8-pytorch-' + str(datetime.utcnow().strftime('%Y-%m-%d-%H-%M-%S-%f')) predictor = model.deploy(initial_instance_count=1, instance_type=INSTANCE_TYPE, deserializer=JSONDeserializer(), endpoint_name=ENDPOINT_NAME)
2. সেজমেকার এন্ডপয়েন্ট পরীক্ষা করুন
একবার শেষ পয়েন্ট সফলভাবে হোস্ট করা হলে, এটি অনুমান চালানোর জন্য ব্যবহার করা যেতে পারে। এই ধাপে, আমরা প্রথমে একটি ছবি পড়ব, এটিকে বাইটে রূপান্তর করব এবং বাইটগুলিকে এন্ডপয়েন্টে ইনপুট হিসাবে পাস করে অনুমান চালাব। উত্পন্ন ফলাফলগুলি হোস্টিংয়ের জন্য ব্যবহৃত YOLOv8 মডেলের ধরণের উপর ভিত্তি করে বাউন্ডিং বাক্স বা মুখোশ বা কনফিডেন্স স্কোর থাকবে। আউটপুট সেই অনুযায়ী প্লট করা যেতে পারে।
2.1.1। অনুমান ফলাফল এবং প্লট আউটপুট তৈরি করুন:
import cv2, random
import numpy as np
import matplotlib.pyplot as plt orig_image = cv2.imread('bus.jpg') image_height, image_width, _ = orig_image.shape
model_height, model_width = 300, 300
x_ratio = image_width/model_width
y_ratio = image_height/model_height resized_image = cv2.resize(orig_image, (model_height, model_width))
payload = cv2.imencode('.jpg', resized_image)[1].tobytes()
result = predictor.predict(payload) if 'boxes' in result: for idx,(x1,y1,x2,y2,conf,lbl) in enumerate(result['boxes']): # Draw Bounding Boxes x1, x2 = int(x_ratio*x1), int(x_ratio*x2) y1, y2 = int(y_ratio*y1), int(y_ratio*y2) color = (random.randint(10,255), random.randint(10,255), random.randint(10,255)) cv2.rectangle(orig_image, (x1,y1), (x2,y2), color, 4) cv2.putText(orig_image, f"Class: {int(lbl)}", (x1,y1-40), cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2, cv2.LINE_AA) cv2.putText(orig_image, f"Conf: {int(conf*100)}", (x1,y1-10), cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2, cv2.LINE_AA) if 'masks' in result: # Draw Masks mask = cv2.resize(np.asarray(result['masks'][idx]), dsize=(image_width, image_height), interpolation=cv2.INTER_CUBIC) for c in range(3): orig_image[:,:,c] = np.where(mask>0.5, orig_image[:,:,c]*(0.5)+0.5*color[c], orig_image[:,:,c]) if 'probs' in result: # Find Class lbl = result['probs'].index(max(result['probs'])) color = (random.randint(10,255), random.randint(10,255), random.randint(10,255)) cv2.putText(orig_image, f"Class: {int(lbl)}", (20,20), cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2, cv2.LINE_AA) plt.imshow(cv2.cvtColor(orig_image, cv2.COLOR_BGR2RGB))
plt.show()
2.1.2। ফলাফল:
অবজেক্ট ডিটেকশন এবং সেগমেন্টেশন YOLOv8 মডেলের আউটপুট নিম্নলিখিত ছবিতে দেখানো হয়েছে:
3. পরিষ্কার করুন
CloudFormation স্ট্যাক মুছে ফেলা হচ্ছে প্রকৃতপক্ষে তৈরি করা সমস্ত সংস্থান মুছে ফেলবে। যাইহোক, ক্লাউডফর্মেশন বর্তমানে স্বয়ংক্রিয়ভাবে এন্ডপয়েন্ট, এন্ডপয়েন্ট কনফিগারেশন এবং মডেল মুছে ফেলার জন্য কনফিগার করা হয়নি। যদি হোস্টেড এন্ডপয়েন্ট ব্যবহার না করা হয়, তাহলে খরচ বাঁচাতে এটি অপসারণ করা একটি ভালো অভ্যাস। এটি নিম্নরূপ করা যেতে পারে:
import boto3 sm_client = boto3.client(service_name="sagemaker") response = sm_client.describe_endpoint_config(EndpointConfigName=endpoint_name)
print(response)
endpoint_config_name = response['EndpointConfigName'] # Delete Endpoint
sm_client.delete_endpoint(EndpointName=endpoint_name) # Delete Endpoint Configuration
sm_client.delete_endpoint_config(EndpointConfigName=endpoint_config_name) # Delete Model
for prod_var in response['ProductionVariants']: model_name = prod_var['ModelName'] sm_client.delete_model(ModelName=model_name)
উপসংহার
এই পোস্টে, আমরা দেখিয়েছি কিভাবে একটি প্রাক-প্রশিক্ষিত YOLOv8 হোস্ট করতে হয় PyTorchModel
একটি সেজমেকার এন্ডপয়েন্টে এবং এন্ডপয়েন্টটি আহ্বান করে অনুমান ফলাফল পরীক্ষা করুন। বিস্তারিত কোড পাওয়া যায় GitHub, এবং টেমপ্লেট CloudFormation স্ট্যাক GitHub এও উপলব্ধ।
SageMaker এন্ডপয়েন্ট সম্পর্কে আরও জানতে, অনুগ্রহ করে চেক আউট করুন আপনার এন্ডপয়েন্ট তৈরি করুন এবং আপনার মডেল স্থাপন করুন এবং Amazon SageMaker এর সাথে PyTorch ব্যবহার করুন, যা ব্যবহার করে হাইলাইট করে PyTorchModel
সেজমেকারে। প্রক্রিয়াটি ব্যবহার করে স্বয়ংক্রিয় হতে পারে সেজমেকারের জন্য ক্লাউডফর্মেশন সমর্থন.
লেখক সম্পর্কে
কেভিন গান AWS প্রফেশনাল সার্ভিসেস-এর একজন ডেটা সায়েন্টিস্ট। তিনি বায়োফিজিক্সে পিএইচডি করেছেন এবং কম্পিউটার ভিশন এবং মেশিন লার্নিং সলিউশন তৈরিতে পাঁচ বছরেরও বেশি শিল্প অভিজ্ঞতা রয়েছে।
রোমিল শাহ AWS প্রফেশনাল সার্ভিসে একজন IoT Edge ডেটা সায়েন্টিস্ট। কম্পিউটার ভিশন, মেশিন লার্নিং এবং আইওটি এজ ডিভাইসে রোমিলের ছয় বছরেরও বেশি শিল্প অভিজ্ঞতা রয়েছে। তিনি একটি শিল্প সেটআপে প্রান্ত ডিভাইসগুলির জন্য গ্রাহকদের তাদের মেশিন লার্নিং মডেলগুলি অপ্টিমাইজ করতে এবং স্থাপন করতে সহায়তা করার সাথে জড়িত৷
- এসইও চালিত বিষয়বস্তু এবং পিআর বিতরণ। আজই পরিবর্ধিত পান।
- প্লেটোব্লকচেন। Web3 মেটাভার্স ইন্টেলিজেন্স। জ্ঞান প্রসারিত. এখানে প্রবেশ করুন.
- উত্স: https://aws.amazon.com/blogs/machine-learning/hosting-yolov8-pytorch-model-on-amazon-sagemaker-endpoints/
- : হয়
- 1
- 10
- 100
- 7
- a
- সম্পর্কে
- প্রবেশ
- মিটমাট করা
- তদনুসারে
- হিসাব
- সঠিকতা
- যোগ
- ঠিকানা
- সব
- অনুমতি
- মর্দানী স্ত্রীলোক
- আমাজন সেজমেকার
- এবং
- API
- রয়েছি
- বিন্যাস
- AS
- At
- স্বয়ংক্রিয় পদ্ধতি প্রয়োগ করা
- অটোমেটেড
- স্বয়ংক্রিয়ভাবে
- সহজলভ্য
- ডেস্কটপ AWS
- AWS প্রফেশনাল সার্ভিসেস
- বল
- ভিত্তি
- BE
- হচ্ছে
- প্রাণপদার্থবিদ্যা
- ব্লগ
- বক্স
- ভবন
- বাস
- by
- CAN
- ক্ষমতা
- চেক
- শ্রেণী
- কোড
- রঙ
- এর COM
- কম্পিউটার
- কম্পিউটার ভিশন
- বিশ্বাস
- কনফিগারেশন
- ধারণ
- বিষয়বস্তু
- সুখী
- রূপান্তর
- খরচ
- সৃষ্টি
- নির্মিত
- সৃষ্টি
- সৃষ্টি
- এখন
- প্রথা
- গ্রাহকদের
- উপাত্ত
- তথ্য বিজ্ঞানী
- DATETIME
- প্রদর্শিত
- প্রমান
- নির্ভর করে
- স্থাপন
- মোতায়েন
- বিস্তৃতি
- বিশদ
- বিস্তারিত
- সনাক্তকরণ
- যন্ত্র
- ডিভাইস
- বিভিন্ন
- সরাসরি
- বণ্টিত
- ডাউনলোড
- ডাউনলোড
- আঁকা
- সহজে
- প্রান্ত
- দক্ষতা
- পারেন
- শেষপ্রান্ত
- প্রকৌশলী
- নির্বাহ
- অভিজ্ঞতা
- কয়েক
- ফাইল
- চূড়ান্ত
- পরিশেষে
- আবিষ্কার
- প্রথম
- কেন্দ্রবিন্দু
- অনুসরণ
- অনুসরণ
- জন্য
- থেকে
- ক্রিয়াকলাপ
- অধিকতর
- উত্পাদন করা
- উত্পন্ন
- GitHub
- ভাল
- আছে
- সাহায্য
- লক্ষণীয় করা
- হাইলাইট
- ঝুলিতে
- নিমন্ত্রণকর্তা
- হোস্ট
- হোস্টিং
- হোস্ট
- কিভাবে
- কিভাবে
- যাহোক
- এইচটিএমএল
- HTTPS দ্বারা
- পরিচয়
- IDX
- ভাবমূর্তি
- চিত্র
- আমদানি
- in
- শিল্প
- শিল্প
- ইনপুট
- ইনস্টল
- উদাহরণ
- স্বার্থ
- আগ্রহী
- জড়িত
- IOT
- সমস্যা
- IT
- এর
- JPG
- JSON
- পরিচিত
- গত
- শিখতে
- শিক্ষা
- লাইব্রেরি
- লাইসেন্স
- বোঝাই
- অনেক
- মেশিন
- মেশিন লার্নিং
- প্রধান
- ব্যবস্থাপনা
- অনেক
- মাস্ক
- মুখোশ
- matplotlib
- ML
- মডেল
- মডেল
- পরিবর্তন
- অধিক
- বহু
- প্রয়োজন
- নোটবই
- অসাড়
- লক্ষ্য
- বস্তু সনাক্তকরণ
- of
- on
- অপ্টিমিজ
- ক্রম
- মূলত
- OS
- প্রান্তরেখা
- আউটপুট
- বাহিরে
- পাসিং
- পাইপলাইন
- Plato
- প্লেটো ডেটা ইন্টেলিজেন্স
- প্লেটোডাটা
- দয়া করে
- জনপ্রিয়
- পোস্ট
- অনুশীলন
- Predictor
- বর্তমান
- উপস্থাপন
- প্রক্রিয়া
- প্রক্রিয়াজাতকরণ
- পেশাদারী
- প্রদান
- উপলব্ধ
- পাইথন
- পাইটার্চ
- বৃদ্ধি
- এলোমেলো
- পড়া
- পাঠকদের
- সাম্প্রতিক
- মুক্তি
- মুক্ত
- অপসারণ
- সংগ্রহস্থলের
- আবশ্যকতা
- Resources
- প্রতিক্রিয়া
- ফল
- ফলাফল
- প্রত্যাবর্তন
- চালান
- দৌড়
- ঋষি নির্মাতা
- সংরক্ষণ করুন
- মাপযোগ্য
- স্কেল
- আরোহী
- বিজ্ঞানী
- বিজ্ঞানীরা
- সমুদ্রজাত
- অধ্যায়
- সেগমেন্টেশন
- সেবা
- সেটআপ
- আকৃতি
- উচিত
- প্রদর্শিত
- সহজ
- একক
- ছয়
- সমাধান
- সলিউশন
- গাদা
- ধাপ
- প্রারম্ভিক ব্যবহারের নির্দেশাবলী
- স্টোরেজ
- সঞ্চিত
- দোকান
- গঠন
- সফলভাবে
- সমর্থন
- কার্য
- টীম
- টেমপ্লেট
- পরীক্ষা
- যে
- সার্জারির
- তাদের
- সময়
- থেকে
- একসঙ্গে
- মশাল
- টর্চভিশন
- অধীনে
- আপলোড করা
- us
- ব্যবহারকারী
- দৃষ্টি
- আমরা একটি
- যে
- ইচ্ছা
- সঙ্গে
- মধ্যে
- would
- বছর
- Yolo
- আপনি
- আপনার
- zephyrnet