Amazon SageMaker অসিঙ্ক্রোনাস এন্ডপয়েন্টের সাথে Amazon SageMaker JumpStart ফাউন্ডেশন মডেলের স্থাপনার খরচ অপ্টিমাইজ করুন | আমাজন ওয়েব সার্ভিসেস

Amazon SageMaker অসিঙ্ক্রোনাস এন্ডপয়েন্টের সাথে Amazon SageMaker JumpStart ফাউন্ডেশন মডেলের স্থাপনার খরচ অপ্টিমাইজ করুন | আমাজন ওয়েব সার্ভিসেস

শিল্পের বিস্তৃত পরিসর জুড়ে জেনারেটিভ এআই অ্যাপ্লিকেশনের সাফল্য বিশ্বব্যাপী কোম্পানিগুলির মনোযোগ এবং আগ্রহ আকর্ষণ করেছে যারা প্রতিযোগীদের কৃতিত্বকে পুনরুত্পাদন করতে এবং ছাড়িয়ে যেতে বা নতুন এবং উত্তেজনাপূর্ণ ব্যবহারের ক্ষেত্রে সমাধান করতে চায়। এই গ্রাহকরা TII Falcon, Stable Diffusion XL, বা OpenAI-এর GPT-3.5-এর মতো ফাউন্ডেশন মডেলগুলি খুঁজছেন, যেগুলি ইঞ্জিনগুলি তৈরি করে AI উদ্ভাবনকে শক্তি দেয়৷

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

যাইহোক, ফাউন্ডেশন মডেলের স্থাপনা উল্লেখযোগ্য চ্যালেঞ্জের সাথে আসতে পারে, বিশেষ করে খরচ এবং সম্পদের প্রয়োজনীয়তার ক্ষেত্রে। এই মডেলগুলি তাদের আকারের জন্য পরিচিত, প্রায়শই কয়েক মিলিয়ন থেকে বিলিয়ন প্যারামিটার পর্যন্ত। তাদের বড় আকার শক্তিশালী হার্ডওয়্যার এবং উল্লেখযোগ্য মেমরি ক্ষমতা সহ ব্যাপক গণনামূলক সংস্থানগুলির দাবি করে। প্রকৃতপক্ষে, কম্পিউটেশনাল লোড দক্ষতার সাথে পরিচালনা করার জন্য ফাউন্ডেশন মডেল স্থাপনের জন্য সাধারণত কমপক্ষে একটি (প্রায়শই বেশি) GPU-এর প্রয়োজন হয়। উদাহরণ স্বরূপ, TII Falcon-40B Instruct মডেলের মেমরিতে সফলভাবে লোড করার জন্য কমপক্ষে একটি ml.g5.12xlarge ইন্সট্যান্স প্রয়োজন, কিন্তু বড় ইন্সট্যান্সের সাথে ভাল পারফর্ম করে। ফলস্বরূপ, এই মডেলগুলি স্থাপন এবং রক্ষণাবেক্ষণের বিনিয়োগের উপর রিটার্ন (ROI) ব্যবসায়িক মূল্য প্রমাণের জন্য খুব কম হতে পারে, বিশেষত উন্নয়ন চক্রের সময় বা স্পাইকি কাজের চাপের জন্য। এটি দীর্ঘ সেশনের জন্য GPU-চালিত দৃষ্টান্ত থাকার চলমান খরচের কারণে, সম্ভাব্য 24/7।

এই বছরের শুরুতে, আমরা ঘোষণা করেছি আমাজন বেডরক, Amazon এবং আমাদের জেনারেটিভ AI অংশীদারদের থেকে ফাউন্ডেশন মডেলগুলি অ্যাক্সেস করার জন্য একটি সার্ভারহীন API৷ যদিও এটি বর্তমানে প্রাইভেট প্রিভিউতে রয়েছে, এর সার্ভারলেস এপিআই আপনাকে অ্যামাজন, অ্যানথ্রপিক, স্টেবিলিটি এআই, এবং এআই21 থেকে ফাউন্ডেশন মডেলগুলি ব্যবহার করতে দেয়, নিজেকে কোনও শেষ পয়েন্ট স্থাপন না করেই৷ যাইহোক, আলিঙ্গন মুখের মতো সম্প্রদায়ের ওপেন-সোর্স মডেলগুলি অনেক বেড়েছে এবং তাদের প্রত্যেকটিই অ্যামাজন বেডরকের মাধ্যমে উপলব্ধ করা হয়নি।

এই পোস্টে, আমরা এই পরিস্থিতিগুলিকে টার্গেট করি এবং বড় ফাউন্ডেশন মডেল স্থাপন করে উচ্চ খরচের ঝুঁকির সমস্যা সমাধান করি আমাজন সেজমেকার অ্যাসিঙ্ক্রোনাস এন্ডপয়েন্ট থেকে আমাজন সেজমেকার জাম্পস্টার্ট. এটি আর্কিটেকচারের খরচ কমাতে সাহায্য করতে পারে, যখন অনুরোধগুলি সারিতে থাকে এবং অল্প সময়ের জন্য লাইভ থাকে তখনই এন্ডপয়েন্ট চালানোর অনুমতি দেয়, যখন কোনও অনুরোধ পরিষেবার জন্য অপেক্ষা না করে তখন শূন্যে নেমে আসে। এটি ব্যবহার ক্ষেত্রে অনেক জন্য মহান শোনাচ্ছে; যাইহোক, একটি এন্ডপয়েন্ট যা শূন্যে নেমে গেছে তা অনুমান পরিবেশন করতে সক্ষম হওয়ার আগে একটি কোল্ড স্টার্ট টাইম চালু করবে।

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

নিম্নলিখিত চিত্রটি আমাদের সমাধান আর্কিটেকচারের চিত্র তুলে ধরেছে।

Optimize deployment cost of Amazon SageMaker JumpStart foundation models with Amazon SageMaker asynchronous endpoints | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

আমরা যে আর্কিটেকচারটি স্থাপন করি তা খুব সোজা:

  • ইউজার ইন্টারফেস হল একটি নোটবুক, যা স্ট্রিমলিট বা অনুরূপ প্রযুক্তিতে নির্মিত একটি ওয়েব UI দ্বারা প্রতিস্থাপিত হতে পারে। আমাদের ক্ষেত্রে, নোটবুক একটি অ্যামাজন সেজমেকার স্টুডিও নোটবুক, PyTorch 5 Python 2.0 CPU কার্নেলের সাথে একটি ml.m3.10.large ইনস্ট্যান্সে চলছে।
  • নোটবুক তিনটি উপায়ে শেষ বিন্দুকে জিজ্ঞাসা করে: সেজমেকার পাইথন SDK, পাইথনের জন্য AWS SDK (Boto3), এবং LangChain।
  • এন্ডপয়েন্টটি SageMaker-এ অ্যাসিঙ্ক্রোনাসভাবে চলছে এবং এন্ডপয়েন্টে আমরা Falcon-40B Instruct মডেলটি স্থাপন করি। ইন্সট্রাক্ট মডেলের ক্ষেত্রে এটি বর্তমানে অত্যাধুনিক এবং সেজমেকার জাম্পস্টার্টে উপলব্ধ। একটি একক API কল আমাদের শেষ পয়েন্টে মডেল স্থাপন করার অনুমতি দেয়।

SageMaker অ্যাসিঙ্ক্রোনাস অনুমান কি?

রিয়েল-টাইম এন্ডপয়েন্ট, ব্যাচ ইনফারেন্স এবং সার্ভারলেস ইনফারেন্স সহ সেজমেকার অ্যাসিঙ্ক্রোনাস ইনফারেন্স হল সেজমেকারের চারটি স্থাপনার বিকল্পগুলির মধ্যে একটি। বিভিন্ন স্থাপনার বিকল্প সম্পর্কে আরও জানতে, পড়ুন অনুমানের জন্য মডেল স্থাপন করুন.

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

Optimize deployment cost of Amazon SageMaker JumpStart foundation models with Amazon SageMaker asynchronous endpoints | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

একটি অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্ট স্থাপন করতে, আপনাকে একটি তৈরি করতে হবে AsyncInferenceConfig বস্তু আপনি যদি তৈরি করেন AsyncInferenceConfig এর আর্গুমেন্ট উল্লেখ না করেই, ডিফল্ট S3OutputPath হবে s3://sagemaker-{REGION}-{ACCOUNTID}/async-endpoint-outputs/{UNIQUE-JOB-NAME} এবং S3FailurePath হবে s3://sagemaker-{REGION}-{ACCOUNTID}/async-endpoint-failures/{UNIQUE-JOB-NAME}.

সেজমেকার জাম্পস্টার্ট কি

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

নিম্নলিখিত স্ক্রিনশটটি সেজমেকার জাম্পস্টার্ট UI-তে উপলব্ধ কয়েকটি মডেলের উদাহরণ দেখায়।

Optimize deployment cost of Amazon SageMaker JumpStart foundation models with Amazon SageMaker asynchronous endpoints | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

মডেল মোতায়েন করুন

আমাদের প্রথম ধাপ হল SageMaker-এ মডেলটি স্থাপন করা। এটি করার জন্য, আমরা SageMaker JumpStart বা SageMaker Python SDK-এর জন্য UI ব্যবহার করতে পারি, যা একটি API প্রদান করে যা আমরা মডেলটিকে অ্যাসিঙ্ক্রোনাস এন্ডপয়েন্টে স্থাপন করতে ব্যবহার করতে পারি:

%%time
from sagemaker.jumpstart.model import JumpStartModel, AsyncInferenceConfig
from sagemaker.serializers import JSONSerializer
from sagemaker.deserializers import JSONDeserializer model_id, model_version = "huggingface-llm-falcon-40b-instruct-bf16", "*"
my_model = JumpStartModel(model_id=model_id)
predictor = my_model.deploy( initial_instance_count=0, instance_type="ml.g5.12xlarge", async_inference_config=AsyncInferenceConfig()
)

এই কলটি সম্পূর্ণ হতে প্রায় 10 মিনিট সময় লাগতে পারে৷ এই সময়ের মধ্যে, এন্ডপয়েন্টটি তৈরি করা হয়, মডেল আর্টিফ্যাক্ট সহ কন্টেইনারটি এন্ডপয়েন্টে ডাউনলোড করা হয়, মডেল কনফিগারেশনটি সেজমেকার জাম্পস্টার্ট থেকে লোড করা হয়, তারপর অসিঙ্ক্রোনাস এন্ডপয়েন্টটি একটি DNS এন্ডপয়েন্টের মাধ্যমে উন্মোচিত হয়। আমাদের এন্ডপয়েন্ট শূন্যে নামতে পারে তা নিশ্চিত করার জন্য, আমাদের অ্যাপ্লিকেশন অটো স্কেলিং ব্যবহার করে অ্যাসিঙ্ক্রোনাস এন্ডপয়েন্টে অটো স্কেলিং কনফিগার করতে হবে। আপনাকে প্রথমে অ্যাপ্লিকেশন অটো স্কেলিং এর সাথে আপনার এন্ডপয়েন্ট বৈকল্পিক নিবন্ধন করতে হবে, একটি স্কেলিং নীতি নির্ধারণ করতে হবে এবং তারপর স্কেলিং নীতি প্রয়োগ করতে হবে। এই কনফিগারেশনে, আমরা একটি কাস্টম মেট্রিক ব্যবহার করে ব্যবহার করি CustomizedMetricSpecificationবলা হয় ApproximateBacklogSizePerInstance, নিচের কোডে দেখানো হয়েছে। একটি বিস্তারিত তালিকার জন্য অ্যামাজন ক্লাউডওয়াচ আপনার অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্টের সাথে উপলব্ধ মেট্রিক্স, পড়ুন ক্লাউডওয়াচ দিয়ে মনিটরিং.

import boto3 client = boto3.client("application-autoscaling")
resource_id = "endpoint/" + my_model.endpoint_name + "/variant/" + "AllTraffic" # Configure Autoscaling on asynchronous endpoint down to zero instances
response = client.register_scalable_target( ServiceNamespace="sagemaker", ResourceId=resource_id, ScalableDimension="sagemaker:variant:DesiredInstanceCount", MinCapacity=0, # Miminum number of instances we want to scale down to - scale down to 0 to stop incurring in costs MaxCapacity=1, # Maximum number of instances we want to scale up to - scale up to 1 max is good enough for dev
) response = client.put_scaling_policy( PolicyName="Invocations-ScalingPolicy", ServiceNamespace="sagemaker", # The namespace of the AWS service that provides the resource. ResourceId=resource_id, # Endpoint name ScalableDimension="sagemaker:variant:DesiredInstanceCount", # SageMaker supports only Instance Count PolicyType="TargetTrackingScaling", # 'StepScaling'|'TargetTrackingScaling' TargetTrackingScalingPolicyConfiguration={ "TargetValue": 5.0, # The target value for the metric. - here the metric is - SageMakerVariantInvocationsPerInstance "CustomizedMetricSpecification": { "MetricName": "ApproximateBacklogSizePerInstance", "Namespace": "AWS/SageMaker", "Dimensions": [{"Name": "EndpointName", "Value": my_model.endpoint_name}], "Statistic": "Average", }, "ScaleInCooldown": 600, # The amount of time, in seconds, after a scale in activity completes before another scale in activity can start. "ScaleOutCooldown": 300, # ScaleOutCooldown - The amount of time, in seconds, after a scale out activity completes before another scale out activity can start. # 'DisableScaleIn': True|False - indicates whether scale in by the target tracking policy is disabled. # If the value is true, scale in is disabled and the target tracking policy won't remove capacity from the scalable resource. },
)

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

Optimize deployment cost of Amazon SageMaker JumpStart foundation models with Amazon SageMaker asynchronous endpoints | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

অ্যাসিঙ্ক্রোনাস এন্ডপয়েন্ট আহ্বান করুন

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

সেজমেকার পাইথন এসডিকে

স্থাপনা সম্পূর্ণ হওয়ার পরে, এটি একটি ফেরত দেবে AsyncPredictor বস্তু অ্যাসিঙ্ক্রোনাস ইনফারেন্স সঞ্চালনের জন্য, আপনাকে Amazon S3 এ ডেটা আপলোড করতে হবে এবং ব্যবহার করতে হবে predict_async() ইনপুট হিসাবে S3 URI সহ পদ্ধতি। এটি একটি ফিরে আসবে AsyncInferenceResponse বস্তু, এবং আপনি ব্যবহার করে ফলাফল পরীক্ষা করতে পারেন get_response() পদ্ধতি।

বিকল্পভাবে, আপনি যদি পর্যায়ক্রমে একটি ফলাফল পরীক্ষা করতে চান এবং এটি প্রজন্মের পর ফেরত দিতে চান, তাহলে ব্যবহার করুন predict() পদ্ধতি আমরা নিম্নলিখিত কোডে এই দ্বিতীয় পদ্ধতিটি ব্যবহার করি:

import time # Invoking the asynchronous endpoint with the SageMaker Python SDK
def query_endpoint(payload): """Query endpoint and print the response""" response = predictor.predict_async( data=payload, input_path="s3://{}/{}".format(bucket, prefix), ) while True: try: response = response.get_result() break except: print("Inference is not ready ...") time.sleep(5) print(f"33[1m Input:33[0m {payload['inputs']}") print(f"33[1m Output:33[0m {response[0]['generated_text']}") query_endpoint(payload)

বোটো৩

এর এখন অন্বেষণ করা যাক invoke_endpoint_async Boto3 এর থেকে পদ্ধতি sagemaker-runtime ক্লায়েন্ট এটি বিকাশকারীদেরকে অ্যাসিঙ্ক্রোনাসভাবে একটি সেজমেকার এন্ডপয়েন্ট আহ্বান করতে সক্ষম করে, অগ্রগতি ট্র্যাকিং এবং পরে প্রতিক্রিয়া পুনরুদ্ধারের জন্য একটি টোকেন প্রদান করে। Boto3 SageMaker Python SDK-এর মতো অ্যাসিঙ্ক্রোনাস ইনফারেন্স সম্পূর্ণ হওয়ার জন্য অপেক্ষা করার উপায় অফার করে না get_result() অপারেশন. অতএব, আমরা যে Boto3 আমাজন S3 তে ইনফারেন্স আউটপুট সঞ্চয় করবে সেই বিষয়টির সুবিধা গ্রহণ করি response["OutputLocation"]. আমরা নিম্নলিখিত ফাংশনটি ব্যবহার করে অনুমান ফাইলটি Amazon S3 এ লেখার জন্য অপেক্ষা করতে পারি:

import json
import time
import boto3
from botocore.exceptions import ClientError s3_client = boto3.client("s3") # Wait until the prediction is generated
def wait_inference_file(bucket, prefix): while True: try: response = s3_client.get_object(Bucket=bucket, Key=prefix) break except ClientError as ex: if ex.response['Error']['Code'] == 'NoSuchKey': print("Waiting for file to be generated...") time.sleep(5) next else: raise except Exception as e: print(e.__dict__) raise return response

এই ফাংশনের সাহায্যে, আমরা এখন শেষ বিন্দুকে জিজ্ঞাসা করতে পারি:

# Invoking the asynchronous endpoint with the Boto3 SDK
import boto3 sagemaker_client = boto3.client("sagemaker-runtime") # Query the endpoint function
def query_endpoint_boto3(payload): """Query endpoint and print the response""" response = sagemaker_client.invoke_endpoint_async( EndpointName=my_model.endpoint_name, InputLocation="s3://{}/{}".format(bucket, prefix), ContentType="application/json", Accept="application/json" ) output_url = response["OutputLocation"] output_prefix = "/".join(output_url.split("/")[3:]) # Read the bytes of the file from S3 in output_url with Boto3 output = wait_inference_file(bucket, output_prefix) output = json.loads(output['Body'].read())[0]['generated_text'] # Emit output print(f"33[1m Input:33[0m {payload['inputs']}") print(f"33[1m Output:33[0m {output}") query_endpoint_boto3(payload)

ল্যাংচেইন

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

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

LangChain-এর বর্তমান বাস্তবায়নের সীমাগুলির মধ্যে একটি হল এটি স্থানীয়ভাবে অ্যাসিঙ্ক্রোনাস এন্ডপয়েন্ট সমর্থন করে না। LangChain-এ একটি অ্যাসিঙ্ক্রোনাস এন্ডপয়েন্ট ব্যবহার করতে, আমাদের একটি নতুন ক্লাস সংজ্ঞায়িত করতে হবে, SagemakerAsyncEndpoint, যে প্রসারিত SagemakerEndpoint ক্লাস ইতিমধ্যেই ল্যাংচেনে উপলব্ধ। উপরন্তু, আমরা নিম্নলিখিত তথ্য প্রদান করি:

  • S3 বালতি এবং উপসর্গ যেখানে অ্যাসিঙ্ক্রোনাস ইনফারেন্স ইনপুট (এবং আউটপুট) সংরক্ষণ করবে
  • টাইম আউট হওয়ার আগে সর্বোচ্চ সংখ্যক সেকেন্ড অপেক্ষা করতে হবে
  • An updated _call() ফাংশন দিয়ে এন্ডপয়েন্ট জিজ্ঞাসা করতে invoke_endpoint_async() পরিবর্তে invoke_endpoint()
  • অ্যাসিঙ্ক্রোনাস এন্ডপয়েন্টকে জাগানোর একটি উপায় যদি এটি কোল্ড স্টার্টে থাকে (শূন্যে স্কেল করা হয়)

সদ্য নির্মিত পর্যালোচনা SagemakerAsyncEndpoint, আপনি চেক আউট করতে পারেন sagemaker_async_endpoint.py ফাইল GitHub এ উপলব্ধ.

from typing import Dict
from langchain import PromptTemplate
from langchain.llms.sagemaker_endpoint import LLMContentHandler
from langchain.chains import LLMChain
from sagemaker_async_endpoint import SagemakerAsyncEndpoint class ContentHandler(LLMContentHandler): content_type:str = "application/json" accepts:str = "application/json" len_prompt:int = 0 def transform_input(self, prompt: str, model_kwargs: Dict) -> bytes: self.len_prompt = len(prompt) input_str = json.dumps({"inputs": prompt, "parameters": {"max_new_tokens": 100, "do_sample": False, "repetition_penalty": 1.1}}) return input_str.encode('utf-8') def transform_output(self, output: bytes) -> str: response_json = output.read() res = json.loads(response_json) ans = res[0]['generated_text'] return ans chain = LLMChain( llm=SagemakerAsyncEndpoint( input_bucket=bucket, input_prefix=prefix, endpoint_name=my_model.endpoint_name, region_name=sagemaker.Session().boto_region_name, content_handler=ContentHandler(), ), prompt=PromptTemplate( input_variables=["query"], template="{query}", ),
) print(chain.run(payload['inputs']))

পরিষ্কার কর

আপনি যখন এন্ডপয়েন্ট থেকে অনুমানের জেনারেশন পরীক্ষা করা শেষ করেন, তখন অতিরিক্ত চার্জ এড়াতে এন্ডপয়েন্টটি মুছে ফেলতে ভুলবেন না:

predictor.delete_endpoint()

উপসংহার

টিআইআই ফ্যালকনের মতো বড় ফাউন্ডেশন মডেল স্থাপন করার সময়, খরচ অপ্টিমাইজ করা অত্যন্ত গুরুত্বপূর্ণ। এই মডেলগুলির জন্য শক্তিশালী হার্ডওয়্যার এবং যথেষ্ট মেমরি ক্ষমতা প্রয়োজন, যার ফলে উচ্চ অবকাঠামো খরচ হয়। সেজমেকার অ্যাসিঙ্ক্রোনাস ইনফারেন্স, একটি স্থাপনার বিকল্প যা অ্যাসিঙ্ক্রোনাসভাবে অনুরোধগুলিকে প্রক্রিয়া করে, যখন কোনও মুলতুবি থাকা অনুরোধ না থাকে তখন উদাহরণের সংখ্যা শূন্যে স্কেল করে ব্যয় হ্রাস করে। এই পোস্টে, আমরা দেখিয়েছি কিভাবে SageMaker অ্যাসিঙ্ক্রোনাস এন্ডপয়েন্টে বড় সেজমেকার জাম্পস্টার্ট ফাউন্ডেশন মডেল স্থাপন করা যায়। আমরা SageMaker Python SDK, Boto3, এবং LangChain ব্যবহার করে অ্যাসিঙ্ক্রোনাস এন্ডপয়েন্ট এবং ফলাফল পুনরুদ্ধারের জন্য বিভিন্ন পদ্ধতির চিত্রিত করার জন্য কোড উদাহরণ প্রদান করেছি। এই কৌশলগুলি বিকাশকারী এবং গবেষকদের উন্নত ভাষা বোঝার সিস্টেমের জন্য ফাউন্ডেশন মডেলগুলির ক্ষমতা ব্যবহার করার সময় খরচ অপ্টিমাইজ করতে সক্ষম করে।

অ্যাসিঙ্ক্রোনাস ইনফারেন্স এবং সেজমেকার জাম্পস্টার্ট সম্পর্কে আরও জানতে, নিম্নলিখিত পোস্টগুলি দেখুন:


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

ডেভিডের ছবিডেভিড গ্যালিটেলি EMEA অঞ্চলে AI/ML-এর জন্য একজন বিশেষজ্ঞ সমাধান স্থপতি৷ তিনি ব্রাসেলসে অবস্থিত এবং বেনেলাক্স জুড়ে গ্রাহকদের সাথে ঘনিষ্ঠভাবে কাজ করেন। তিনি খুব অল্প বয়স থেকেই একজন বিকাশকারী ছিলেন, 7 বছর বয়সে কোড করতে শুরু করেছিলেন। তিনি বিশ্ববিদ্যালয়ে AI/ML শিখতে শুরু করেছিলেন, এবং তখন থেকেই এর প্রেমে পড়েছেন।

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

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

অ্যামাজন স্বীকৃতি লাইভ ভিডিও স্ট্রিমগুলিতে রিয়েল-টাইম সতর্কতা প্রদানের জন্য স্ট্রিমিং ভিডিও ইভেন্টগুলি প্রবর্তন করে

উত্স নোড: 1284245
সময় স্ট্যাম্প: এপ্রিল 28, 2022