Amazon SageMaker-এ BLOOM-176B এবং OPT-30B স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স সহ। উল্লম্ব অনুসন্ধান. আ.

অ্যামাজন সেজমেকারে ব্লুম-176বি এবং ওপিটি-30বি স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড সহ

গত কয়েক বছরে গভীর শিক্ষার ক্ষেত্রে দ্রুত উন্নয়ন হয়েছে। যদিও হার্ডওয়্যারের উন্নতি হয়েছে, যেমন NVIDIA এবং Amazon-এর সাম্প্রতিক প্রজন্মের এক্সিলারেটরগুলির সাথে, উন্নত মেশিন লার্নিং (ML) অনুশীলনকারীরা এখনও প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP) এর মতো অ্যাপ্লিকেশনগুলির জন্য তাদের বৃহৎ গভীর শিক্ষার মডেলগুলি স্থাপনে নিয়মিত সমস্যার সম্মুখীন হন।

আগের পোস্টে আমরা আলোচনা করেছি ক্ষমতা এবং কনফিগারযোগ্য সেটিংস in অ্যামাজন সেজমেকার মডেল স্থাপনা যা এই বৃহৎ মডেলগুলির সাথে সহজে অনুমান করতে পারে। আজ, আমরা একটি নতুন ঘোষণা আমাজন সেজমেকার ডিপ লার্নিং কন্টেইনার (DLC) যা আপনি কয়েক মিনিটের মধ্যে বড় মডেলের অনুমান শুরু করতে ব্যবহার করতে পারেন। এই DLC মডেল সমান্তরাল অনুমানের জন্য কিছু জনপ্রিয় ওপেন সোর্স লাইব্রেরি প্যাকেজ করে, যেমন ডিপস্পিড এবং হাগিং ফেস এক্সিলারেট।

এই পোস্টে, আমরা দুটি জনপ্রিয় বড় NLP মডেল স্থাপন করতে একটি নতুন সেজমেকার বড় মডেল ইনফারেন্স ডিএলসি ব্যবহার করি: বিগসায়েন্সের BLOOM-176B এবং মেটা এর OPT-30B আলিঙ্গন মুখ ভান্ডার থেকে. বিশেষ করে, আমরা টেক্সট জেনারেশন ব্যবহারের ক্ষেত্রে টোকেন প্রতি 0.1 সেকেন্ড লেটেন্সি অর্জন করতে DeepSpeed ​​থেকে ডিপ জাভা লাইব্রেরি (DJL) পরিবেশন এবং টেনসর সমান্তরাল কৌশল ব্যবহার করি।

আপনি আমাদের সম্পূর্ণ উদাহরণ নোটবুক খুঁজে পেতে পারেন আমাদের GitHub সংগ্রহস্থল.

বড় মডেল অনুমান কৌশল

ভাষা মডেল সম্প্রতি আকার এবং জনপ্রিয়তা উভয় বিস্ফোরিত হয়েছে. হাগিং ফেসের মতো মডেল চিড়িয়াখানা থেকে সহজে অ্যাক্সেস এবং শ্রেণীবিভাগ এবং পাঠ্য তৈরির মতো NLP কাজগুলিতে উন্নত নির্ভুলতা এবং কর্মক্ষমতা সহ, অনুশীলনকারীরা এই বড় মডেলগুলির জন্য ক্রমবর্ধমানভাবে পৌঁছাচ্ছেন। যাইহোক, বড় মডেলগুলি প্রায়শই একটি একক অ্যাক্সিলারেটরের মেমরির মধ্যে মাপসই করার জন্য খুব বড় হয়। উদাহরণস্বরূপ, BLOOM-176B মডেলের জন্য 350 গিগাবাইটের বেশি এক্সিলারেটর মেমরির প্রয়োজন হতে পারে, যা বর্তমানে উপলব্ধ হার্ডওয়্যার এক্সিলারেটরের ক্ষমতার চেয়ে অনেক বেশি। এর জন্য ডিপস্পিড এবং হাগিং ফেস এক্সিলারেটের মতো লাইব্রেরি থেকে মডেল সমান্তরাল কৌশল ব্যবহার করা প্রয়োজন যাতে অনুমানের জন্য একাধিক অ্যাক্সিলারেটর জুড়ে একটি মডেল বিতরণ করা যায়। এই পোস্টে, আমরা ব্যবহার SageMaker বড় মডেল অনুমান ধারক এই দুটি ওপেন-সোর্স লাইব্রেরি ব্যবহার করে লেটেন্সি এবং থ্রুপুট পারফরম্যান্স তৈরি এবং তুলনা করতে।

DeepSpeed ​​এবং Accelerate বিভিন্ন কৌশল ব্যবহার করে অনুমানের জন্য বড় ভাষার মডেল অপ্টিমাইজ করে। মূল পার্থক্য হল ডিপস্পিডের অপ্টিমাইজ করা কার্নেল ব্যবহার. এই কার্নেলগুলি মডেলের কম্পিউটেশন গ্রাফে বাধা কমিয়ে অনুমান লেটেন্সি নাটকীয়ভাবে উন্নত করতে পারে। অপ্টিমাইজ করা কার্নেলগুলি বিকাশ করা কঠিন হতে পারে এবং সাধারণত একটি নির্দিষ্ট মডেল আর্কিটেকচারের জন্য নির্দিষ্ট হয়; DeepSpeed ​​এই অপ্টিমাইজ করা কার্নেলগুলির সাথে ওপিটি এবং ব্লুমের মতো জনপ্রিয় বড় মডেলগুলিকে সমর্থন করে৷ বিপরীতে, Hugging Face এর Accelerate লাইব্রেরিতে লেখার সময় অপ্টিমাইজ করা কার্নেল অন্তর্ভুক্ত করা হয় না। যেহেতু আমরা আমাদের ফলাফল বিভাগে আলোচনা করেছি, এই পার্থক্যটি ডিপস্পিডের ত্বরণের চেয়ে বেশি পারফরম্যান্স প্রান্তের জন্য দায়ী।

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

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

বৃহৎ ভাষার মডেলগুলিকে কার্যকরভাবে হোস্ট করার জন্য, আমাদের নিম্নলিখিত প্রধান ক্ষেত্রগুলিতে বৈশিষ্ট্য এবং সমর্থন প্রয়োজন:

  • বিল্ডিং এবং পরীক্ষার সমাধান – এমএল ডেভেলপমেন্টের পুনরাবৃত্তিমূলক প্রকৃতির প্রেক্ষিতে, আমাদের দ্রুত ব্যর্থ হওয়ার ক্ষমতা সহ এই মডেলগুলি হোস্ট করার সময় ইনফারেন্স এন্ডপয়েন্ট কীভাবে আচরণ করবে তা নির্মাণ, দ্রুত পুনরাবৃত্তি এবং পরীক্ষা করার ক্ষমতা প্রয়োজন। এই মডেলগুলি সাধারণত শুধুমাত্র p4dn বা g5 এর মত বড় দৃষ্টান্তে হোস্ট করা যেতে পারে এবং মডেলগুলির আকার বিবেচনা করে, এটি একটি অনুমান দৃষ্টান্ত ঘোরাতে এবং যেকোনো পরীক্ষার পুনরাবৃত্তি চালাতে কিছু সময় নিতে পারে। স্থানীয় পরীক্ষায় সাধারণত সীমাবদ্ধতা থাকে কারণ পরীক্ষা করার জন্য আপনার আকারের অনুরূপ উদাহরণ প্রয়োজন এবং এই মডেলগুলি পাওয়া সহজ নয়।
  • স্থাপন এবং স্কেলে চলমান - মডেল ফাইলগুলিকে ইনফরেন্স ইনস্ট্যান্সে লোড করতে হবে, যা আকারের পরিপ্রেক্ষিতে নিজেই একটি চ্যালেঞ্জ উপস্থাপন করে। ব্লুম-১৭৬বি-এর উদাহরণ হিসেবে Tar/Un-Tar তৈরি করতে প্রায় 176 ঘণ্টা এবং লোড হতে আরও এক ঘণ্টা সময় লাগে। মডেল ফাইলগুলিতে সহজে অ্যাক্সেসের অনুমতি দেওয়ার জন্য আমাদের একটি বিকল্প ব্যবস্থা দরকার।
  • সিঙ্গলটন হিসাবে মডেল লোড করা হচ্ছে - একটি বহু-কর্মী প্রক্রিয়ার জন্য, আমাদের নিশ্চিত করতে হবে যে মডেলটি শুধুমাত্র একবার লোড হয় যাতে আমরা রেসের পরিস্থিতির মধ্যে না পড়ি এবং অপ্রয়োজনীয় সংস্থান ব্যয় না করি। এই পোস্টে, আমরা সরাসরি থেকে লোড করার একটি উপায় দেখাই আমাজন সিম্পল স্টোরেজ সার্ভিস (Amazon S3)। যাইহোক, এটি শুধুমাত্র তখনই কাজ করে যদি আমরা DJL এর ডিফল্ট সেটিংস ব্যবহার করি। তদুপরি, শেষ পয়েন্টগুলির যে কোনও স্কেলিং কয়েক মিনিটের মধ্যে স্পিন করতে সক্ষম হওয়া দরকার, যা মডেলগুলি কীভাবে লোড এবং বিতরণ করা যেতে পারে তা পুনর্বিবেচনার জন্য আহ্বান জানায়।
  • ফ্রেমওয়ার্ক Sharding – এই মডেলগুলি সাধারণত হতে হবে, সাধারণত একটি টেনসর সমান্তরাল প্রক্রিয়া দ্বারা বা সাধারণ শার্ডিং কৌশল হিসাবে পাইপলাইন শার্ডিংয়ের মাধ্যমে, এবং আমাদের কাছে টেনসর শার্ডিংয়ের উপরে নির্মিত ZeRO শার্ডিংয়ের মতো উন্নত ধারণা রয়েছে। শার্ডিং কৌশল সম্পর্কে আরও তথ্যের জন্য, পড়ুন মডেল সমান্তরালতা. এটি অর্জনের জন্য, আমরা NIVIDIA, DeepSpeed ​​এবং অন্যান্যদের থেকে বিভিন্ন সমন্বয় এবং ফ্রেমওয়ার্ক ব্যবহার করতে পারি। এটির জন্য BYOC পরীক্ষা করার বা 1P কন্টেইনার ব্যবহার করার এবং সমাধানগুলির উপর পুনরাবৃত্তি এবং বেঞ্চমার্কিং পরীক্ষা চালানোর ক্ষমতা প্রয়োজন। আপনি বিভিন্ন হোস্টিং বিকল্প যেমন অ্যাসিঙ্ক্রোনাস, সার্ভারহীন এবং অন্যান্য পরীক্ষা করতে চাইতে পারেন।
  • হার্ডওয়্যার নির্বাচন - হার্ডওয়্যারে আপনার পছন্দ পূর্বোক্ত সমস্ত পয়েন্ট এবং আরও ট্র্যাফিক প্যাটার্ন, ব্যবহারের প্রয়োজন এবং মডেলের আকার দ্বারা নির্ধারিত হয়।

এই পোস্টে, আমরা সেজমেকারে BLOOM-176B এবং OPT-30B হোস্ট করতে DeepSpeed-এর অপ্টিমাইজ করা কার্নেল এবং টেনসর সমান্তরাল কৌশলগুলি ব্যবহার করি। অপ্টিমাইজ করা কার্নেল এবং টেনসর সমান্তরালতার কার্যকারিতা সুবিধাগুলি প্রদর্শন করার জন্য আমরা Accelerate থেকে ফলাফলের তুলনা করি। DeepSpeed ​​এবং Accelerate সম্পর্কে আরও তথ্যের জন্য, পড়ুন ডিপস্পিড ইনফারেন্স: অভূতপূর্ব স্কেলে ট্রান্সফরমার মডেলগুলির দক্ষ অনুমান সক্ষম করা এবং ডিপস্পিড এবং ত্বরণ সহ অবিশ্বাস্যভাবে দ্রুত ব্লুম অনুমান.

আমরা এই উদাহরণে মডেল পরিবেশন সমাধান হিসাবে DJLSserving ব্যবহার করি। ডিজেএলসার্ভিং হল ডিপ জাভা লাইব্রেরি (ডিজেএল) দ্বারা চালিত একটি উচ্চ-পারফরম্যান্স সার্বজনীন মডেল পরিবেশনকারী সমাধান যা প্রোগ্রামিং ভাষা অজ্ঞেয়। DJL এবং DJLSserving সম্পর্কে আরও জানতে, পড়ুন DJLSserving এবং DeepSpeed ​​মডেল সমান্তরাল অনুমান ব্যবহার করে Amazon SageMaker-এ বড় মডেল স্থাপন করুন.

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

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

DJLSserving SageMaker DLC ইমেজ ব্যবহার করে

আপনি নোটবুকটি চালাচ্ছেন এমন নির্দিষ্ট অঞ্চলের সাথে অঞ্চলটি প্রতিস্থাপন করার পরে DJLSserving SageMaker DLC চিত্রটি ব্যবহার করতে নিম্নলিখিত কোডটি ব্যবহার করুন:

763104351884.dkr.ecr..amazonaws.com/djl-inference:0.19.0-deepspeed0.7.3-cu113
# example uri might be like 763104351884.dkr.ecr.us-east-1.amazonaws.com/djl-inference:0.19.0-deepspeed0.7.3-cu113

আমাদের মডেল ফাইল তৈরি করুন

প্রথমত, আমরা নামক একটি ফাইল তৈরি করি serving.properties যে কোড শুধুমাত্র একটি লাইন রয়েছে. এটি ডিজেএল মডেল সার্ভারকে ডিপস্পিড ইঞ্জিন ব্যবহার করতে বলে। ফাইলটিতে নিম্নলিখিত কোড রয়েছে:

engine=DeepSpeed

serving.properties ডিজেএলসার্ভিং দ্বারা সংজ্ঞায়িত একটি ফাইল যা প্রতি-মডেল কনফিগারেশন কনফিগার করতে ব্যবহৃত হয়।

পরবর্তী, আমরা আমাদের তৈরি model.py ফাইল, যা লোড করার জন্য প্রয়োজনীয় কোডটি সংজ্ঞায়িত করে এবং তারপরে মডেলটি পরিবেশন করে। আমাদের কোড, আমরা পড়ুন TENSOR_PARALLEL_DEGREE পরিবেশ পরিবর্তনশীল (ডিফল্ট মান হল 1)। এটি ডিভাইসের সংখ্যা সেট করে যার উপর টেনসর সমান্তরাল মডিউলগুলি বিতরণ করা হয়। মনে রাখবেন যে ডিপস্পিড ব্লুম মডেলের জন্য একটি সহ কয়েকটি অন্তর্নির্মিত পার্টিশন সংজ্ঞা প্রদান করে। আমরা নির্দিষ্ট করে এটি ব্যবহার করি replace_method এবং relpace_with_kernel_inject. আপনার যদি একটি কাস্টমাইজড মডেল থাকে এবং কার্যকরভাবে পার্টিশন করার জন্য ডিপস্পিডের প্রয়োজন হয়, তাহলে আপনাকে পরিবর্তন করতে হবে relpace_with_kernel_inject থেকে false এবং যোগ করুন injection_policy রানটাইম পার্টিশন কাজ করতে. আরো তথ্যের জন্য, পড়ুন অনুমানের জন্য সূচনা করা হচ্ছে. আমাদের উদাহরণের জন্য, আমরা ডিপস্পীডে প্রাক-বিভাজন করা ব্লুম মডেল ব্যবহার করেছি।

দ্বিতীয়ত, মধ্যে model.py ফাইল, এন্ডপয়েন্ট তৈরি হওয়ার পরে আমরা Amazon S3 থেকে মডেলটিও লোড করি। মডেল লোড করা হয় /tmp পাত্রে স্থান কারণ SageMaker মানচিত্র /tmp থেকে আমাজন ইলাস্টিক ব্লক স্টোর (Amazon EBS) ভলিউম যা মাউন্ট করা হয় যখন আমরা এন্ডপয়েন্ট ক্রিয়েশন প্যারামিটার নির্দিষ্ট করি VolumeSizeInGB. p4dn-এর মতো দৃষ্টান্তের জন্য, যা ভলিউম ইনস্ট্যান্সের সাথে প্রি-বিল্ট করা হয়, আমরা লিভারেজ চালিয়ে যেতে পারি /tmp পাত্রে নিম্নলিখিত কোড দেখুন:

from djl_python import Input, Output
import os
import deepspeed
import torch
import torch.distributed as dist
import sys
import subprocess
import time
from glob import glob
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
from transformers.models.opt.modeling_opt import OPTDecoderLayer

predictor = None

def check_config():
    local_rank = os.getenv('LOCAL_RANK')
    
    if not local_rank:
        return False
    return True
    
def get_model():

    if not check_config():
        raise Exception("DJL:DeepSpeed configurations are not default. This code does not support non default configurations") 
    
    tensor_parallel = int(os.getenv('TENSOR_PARALLEL_DEGREE', '1'))
    local_rank = int(os.getenv('LOCAL_RANK', '0'))
    model_dir = "/tmp/model"
    bucket = os.environ.get("MODEL_S3_BUCKET")
    key_prefix = os.environ.get("MODEL_S3_PREFIX")
    print(f"rank: {local_rank}")
    if local_rank == 0:
        if f"{model_dir}/DONE" not in glob(f"{model_dir}/*"):
            print("Starting Model downloading files")
            try:
                proc_run = subprocess.run(
                    ["aws", "s3", "cp", "--recursive", f"s3://{bucket}/{key_prefix}", model_dir]
                )
                print("Model downloading finished")
                # write file when download complete. Could use dist.barrier() but this makes it easier to check if model is downloaded in case of retry
                with open(f"{model_dir}/DONE", "w") as f:
                    f.write("download_complete")
                    
                proc_run.check_returncode() # to throw the error in case there was one
                
            except subprocess.CalledProcessError as e:
                print ( "Model download failed: Error:nreturn code: ", e.returncode, "nOutput: ", e.stderr )
                raise # FAIL FAST  
                               
    dist.barrier()
                
    
    tokenizer = AutoTokenizer.from_pretrained(model_dir)
    
    # has to be FP16 as Int8 model loading not yet supported
    with deepspeed.OnDevice(dtype=torch.float16, device="meta"):
        model = AutoModelForCausalLM.from_config(
            AutoConfig.from_pretrained(model_dir), torch_dtype=torch.bfloat16
        )
    model = model.eval()
    
    model = deepspeed.init_inference(
        model,
        mp_size=tensor_parallel,
        dtype=torch.int8,
        base_dir = model_dir,
        checkpoint=os.path.join(model_dir, "ds_inference_config.json"),
        replace_method='auto',
        replace_with_kernel_inject=True
    )

    model = model.module
    dist.barrier()
    return model, tokenizer

DJLServing সংজ্ঞায়িত যেকোনো পিপ প্যাকেজে রানটাইম ইনস্টলেশন পরিচালনা করে requirement.txt. এই ফাইলটিতে থাকবে:

awscli
boto3

আমরা নামক একটি ডিরেক্টরি তৈরি করেছি code এবং model.py, serving.properties, এবং requirements.txt ফাইলগুলি ইতিমধ্যে এই ডিরেক্টরিতে তৈরি করা হয়েছে। ফাইলগুলি দেখতে, আপনি টার্মিনাল থেকে নিম্নলিখিত কোড চালাতে পারেন:

mkdir -p code
cat code/model.py 
cat code/serving.properties 
cat code/requirements.txt 

নিচের চিত্রটি এর গঠন দেখায় model.tar.gz.

অবশেষে, আমরা মডেল ফাইল তৈরি করি এবং এটি অ্যামাজন S3 এ আপলোড করি:

tar cvfz model.tar.gz code
s3_code_artifact = sess.upload_data("model.tar.gz", bucket, s3_code_prefix)

আলিঙ্গন মুখ থেকে মডেল ডাউনলোড এবং সংরক্ষণ করুন (ঐচ্ছিক)

আপনি যদি Amazon S3 এ মডেলটি ডাউনলোড করতে চান এবং সেখান থেকে এটি ব্যবহার করতে চান তবে আমরা এই বিভাগে পদক্ষেপগুলি সরবরাহ করেছি। ধাপগুলো GitHub-এ জুপিটার ফাইলে দেওয়া আছে। নিম্নলিখিত স্ক্রিনশট পদক্ষেপগুলির একটি স্ন্যাপশট দেখায়।

Amazon SageMaker-এ BLOOM-176B এবং OPT-30B স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স সহ। উল্লম্ব অনুসন্ধান. আ.

একটি সেজমেকার মডেল তৈরি করুন

আমরা এখন একটি তৈরি করি সেজমেকার মডেল. আমরা ব্যবহার করি অ্যামাজন ইলাস্টিক কনটেইনার রেজিস্ট্রি (Amazon ECR) দ্বারা প্রদত্ত ইমেজ এবং পূর্ববর্তী ধাপ থেকে SageMaker মডেল তৈরির মডেল আর্টিফ্যাক্ট। মডেল সেটআপে, আমরা কনফিগার করি TENSOR_PARALLEL_DEGREE=8, যার মানে মডেলটি 8টি GPU-এর সাথে বিভাজিত। নিম্নলিখিত কোড দেখুন:

PrimaryContainer={
        "Image": inference_image_uri,
        "ModelDataUrl": s3_code_artifact,
        "Environment": {
            "MODEL_S3_BUCKET": bucket,
            "MODEL_S3_PREFIX": s3_model_prefix,
            "TENSOR_PARALLEL_DEGREE": "8",
},

আপনি Jupyter ফাইলে পূর্ববর্তী ঘরটি চালানোর পরে, আপনি নিম্নলিখিতগুলির অনুরূপ আউটপুট দেখতে পাবেন:

{
    "ModelArn": "arn:aws:sagemaker:us-east-1::model/bloom-djl-ds-"
}

একটি সেজমেকার এন্ডপয়েন্ট তৈরি করুন

আপনি পরীক্ষার জন্য একাধিক GPU সহ যেকোনো দৃষ্টান্ত ব্যবহার করতে পারেন। এই ডেমোতে, আমরা একটি p4d.24xlarge উদাহরণ ব্যবহার করি। নিম্নলিখিত কোডে, আমরা কীভাবে সেট করি তা নোট করুন ModelDataDownloadTimeoutInSeconds, ContainerStartupHealthCheckTimeoutInSeconds, এবং VolumeSizeInGB বড় মডেলের আকার মিটমাট করার পরামিতি। দ্য VolumeSizeInGB পরামিতি EBS ভলিউম সংযুক্তি সমর্থনকারী GPU দৃষ্টান্তগুলিতে প্রযোজ্য।

endpoint_config_response = sm_client.create_endpoint_config(
    EndpointConfigName=endpoint_config_name,
    ProductionVariants=[
        {
            "VariantName": "variant1",
            "ModelName": model_name,
            "InstanceType": "ml.p4d.24xlarge",
            "InitialInstanceCount": 1,
            #"VolumeSizeInGB" : 200,
            "ModelDataDownloadTimeoutInSeconds": 2400,
            "ContainerStartupHealthCheckTimeoutInSeconds": 2400,
        },
    ],
)'

অবশেষে, আমরা একটি সেজমেকার এন্ডপয়েন্ট তৈরি করি:

create_endpoint_response = sm_client.create_endpoint(
    EndpointName=f"{endpoint_name}", EndpointConfigName=endpoint_config_name
)

আপনি এটি নিম্নলিখিত কোডে মুদ্রিত দেখতে পান:

{
    "EndpointArn": "arn:aws:sagemaker:us-east-1::endpoint/bloom-djl-ds-"
}

শেষ বিন্দু শুরু হতে কিছু সময় লাগতে পারে। আপনি যদি দৌড়াতে পারেন তবে আপনি আরও কয়েকবার চেষ্টা করতে পারেন InsufficientInstanceCapacity ত্রুটি, অথবা আপনি আপনার অ্যাকাউন্টের সীমা বাড়ানোর জন্য AWS-এর কাছে একটি অনুরোধ করতে পারেন।

পারফরম্যান্স টিউনিং

আপনি যদি এই পোস্ট এবং তার সাথে থাকা নোটবুকটি একটি ভিন্ন মডেলের সাথে ব্যবহার করতে চান, তাহলে আপনি সেজমেকার, ডিপস্পীড এবং ডিজেএল অফার করে এমন কিছু টিউনযোগ্য প্যারামিটারগুলি অন্বেষণ করতে চাইতে পারেন। এই পরামিতিগুলির সাথে পুনরাবৃত্তিমূলকভাবে পরীক্ষা করা আপনার হোস্ট করা বড় মডেলের বিলম্ব, থ্রুপুট এবং খরচের উপর একটি উপাদান প্রভাব ফেলতে পারে। টিউনিং প্যারামিটার সম্পর্কে আরও জানতে যেমন কর্মীদের সংখ্যা, টেনসর সমান্তরালতার ডিগ্রি, কাজের সারির আকার এবং অন্যান্য, দেখুন DJL কনফিগারেশন পরিবেশন এবং DJLSserving এবং DeepSpeed ​​মডেল সমান্তরাল অনুমান ব্যবহার করে Amazon SageMaker-এ বড় মডেল স্থাপন করুন.

ফলাফল

এই পোস্টে, আমরা SageMaker ML উদাহরণে BLOOM-176B এবং OPT-30B হোস্ট করতে DeepSpeed ​​ব্যবহার করেছি। নিচের সারণীটি আমাদের পারফরম্যান্সের ফলাফলের সংক্ষিপ্ত বিবরণ দেয়, যার মধ্যে হাগিং ফেস এক্সিলারেটের সাথে তুলনা করা হয়েছে। লেটেন্সি একটি 256-টোকেন স্ট্রিং তৈরি করতে চারবার মিলিসেকেন্ডের সংখ্যা প্রতিফলিত করে (batch_size=4) মডেল থেকে। থ্রুপুট প্রতিটি পরীক্ষার জন্য প্রতি সেকেন্ডে উত্পাদিত টোকেনের সংখ্যা প্রতিফলিত করে। Hugging Face Accelerate-এর জন্য, আমরা GPU মেমরি ম্যাপিং সহ লাইব্রেরির ডিফল্ট লোডিং ব্যবহার করেছি। DeepSpeed-এর জন্য, আমরা এর দ্রুত চেকপয়েন্ট লোডিং মেকানিজম ব্যবহার করেছি।

মডেল লাইব্রেরি মডেল যথার্থতা ব্যাচ আকার সমান্তরাল ডিগ্রি দৃষ্টান্ত লোড করার সময়
(গুলি)
লেটেন্সি (4 x 256 টোকেন আউটপুট) .
. . . . . . . P50
(মাইক্রোসফট)
P90
(মাইক্রোসফট)
P99
(মাইক্রোসফট)
থ্রুপুট
(টোকেন/সেকেন্ড)
BLOOM-176B ডিপস্পিড INT8 4 8 p4d.24x বড় 74.9 27,564 27,580 32,179 37.1
BLOOM-176B দ্রুততর করা INT8 4 8 p4d.24x বড় 669.4 92,694 92,735 103,292 11.0
OPT-30B ডিপস্পিড FP16 4 4 g5.24x বড় 239.4 11,299 11,302 11,576 90.6
OPT-30B দ্রুততর করা FP16 4 4 g5.24x বড় 533.8 63,734 63,737 67,605 16.1

লেটেন্সি দৃষ্টিকোণ থেকে, ডিপস্পীড BLOOM-3.4B এর জন্য প্রায় 176 গুণ দ্রুত এবং OPT-5.6B এর জন্য ত্বরণের চেয়ে 30 গুণ দ্রুত। ডিপস্পিডের অপ্টিমাইজ করা কার্নেলগুলি লেটেন্সির এই পার্থক্যের জন্য দায়ী৷ এই ফলাফলের পরিপ্রেক্ষিতে, আপনার পছন্দের মডেল সমর্থিত হলে আমরা এক্সিলারেটের উপরে DeepSpeed ​​ব্যবহার করার পরামর্শ দিই।

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

এই ফলাফলগুলি বিভিন্ন মডেলের আকারের লেটেন্সি এবং থ্রুপুটের পার্থক্যও প্রদর্শন করে। আমাদের পরীক্ষায়, OPT-30B প্রতি ইউনিট সময়ে BLOOM-2.4B-এর তুলনায় 176 গুণ টোকেন তৈরি করে একটি উদাহরণ টাইপ যা তিন গুণেরও বেশি সস্তা। প্রতি ইউনিট থ্রুপুট ভিত্তিতে মূল্যে, একটি g30xl দৃষ্টান্তে OPT-5.24B একটি p8.9d.176xl উদাহরণে BLOOM-4B থেকে 24 গুণ ভাল। আপনার যদি কঠোর লেটেন্সি, থ্রুপুট বা খরচের সীমাবদ্ধতা থাকে, তাহলে সম্ভাব্য ক্ষুদ্রতম মডেল ব্যবহার করার কথা বিবেচনা করুন যা এখনও কার্যকরী প্রয়োজনীয়তাগুলি অর্জন করবে।

পরিষ্কার কর

সর্বোত্তম অনুশীলনের অংশ হিসাবে এটি সর্বদা নিষ্ক্রিয় উদাহরণগুলি মুছে ফেলার পরামর্শ দেওয়া হয়। নীচের কোডটি আপনাকে দেখায় কিভাবে উদাহরণগুলি মুছতে হয়।

# - Delete the end point
sm_client.delete_endpoint(EndpointName=endpoint_name)

# - In case the end point failed we still want to delete the model
sm_client.delete_endpoint_config(EndpointConfigName=endpoint_config_name)
sm_client.delete_model(ModelName=model_name)

ঐচ্ছিকভাবে আপনার S3 থেকে মডেল চেক পয়েন্ট মুছে দিন

!aws s3 rm --recursive s3:///{s3_model_prefix}

উপসংহার

এই পোস্টে, আমরা দেখিয়েছি কিভাবে SageMaker বৃহৎ মডেল ইনফারেন্স কন্টেনার ব্যবহার করে দুটি বড় ভাষার মডেল, BLOOM-176B এবং OPT-30B হোস্ট করতে হয়। আমরা একটি একক SageMaker ML উদাহরণে একাধিক GPU সহ DeepSpeed ​​এর মডেল সমান্তরাল কৌশলগুলি ব্যবহার করেছি।

Amazon SageMaker এবং এর বৃহৎ মডেল অনুমান ক্ষমতা সম্পর্কে আরো বিস্তারিত জানার জন্য, পড়ুন অ্যামাজন সেজমেকার এখন কনফিগারযোগ্য ভলিউম আকার এবং টাইমআউট কোটার মাধ্যমে বড় মডেল স্থাপনকে সমর্থন করে এবং রিয়েল-টাইম অনুমান.


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

Amazon SageMaker-এ BLOOM-176B এবং OPT-30B স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স সহ। উল্লম্ব অনুসন্ধান. আ.সাইমন জামারিন একজন AI/ML সলিউশন আর্কিটেক্ট যার মূল ফোকাস গ্রাহকদের তাদের ডেটা সম্পদ থেকে মূল্য বের করতে সাহায্য করে। তার অবসর সময়ে, সাইমন পরিবারের সাথে সময় কাটানো, সাই-ফাই পড়া এবং বিভিন্ন DIY হাউস প্রকল্পে কাজ করা উপভোগ করে।

Amazon SageMaker-এ BLOOM-176B এবং OPT-30B স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স সহ। উল্লম্ব অনুসন্ধান. আ. রুপিন্দর গ্রেওয়াল AWS সহ একজন Sr Ai/ML বিশেষজ্ঞ সমাধান স্থপতি। তিনি বর্তমানে সেজমেকারে মডেল এবং এমএলওপ পরিবেশন করার দিকে মনোনিবেশ করেন। এই ভূমিকার আগে তিনি মেশিন লার্নিং ইঞ্জিনিয়ার বিল্ডিং এবং হোস্টিং মডেল হিসাবে কাজ করেছেন। কাজের বাইরে সে টেনিস খেলা এবং পাহাড়ের পথে বাইক চালানো উপভোগ করে।

Amazon SageMaker-এ BLOOM-176B এবং OPT-30B স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স সহ। উল্লম্ব অনুসন্ধান. আ.ফ্রাঙ্ক লিউ AWS গভীর শিক্ষার জন্য একজন সফটওয়্যার ইঞ্জিনিয়ার। তিনি সফ্টওয়্যার প্রকৌশলী এবং বিজ্ঞানীদের জন্য উদ্ভাবনী গভীর শিক্ষার সরঞ্জাম তৈরিতে মনোনিবেশ করেন। তার অবসর সময়ে, তিনি বন্ধু এবং পরিবারের সাথে হাইকিং উপভোগ করেন।

Amazon SageMaker-এ BLOOM-176B এবং OPT-30B স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স সহ। উল্লম্ব অনুসন্ধান. আ.অ্যালান ট্যান বৃহৎ মডেল অনুমানে সেজমেকার নেতৃত্বের প্রচেষ্টার সাথে একজন সিনিয়র প্রোডাক্ট ম্যানেজার। তিনি অ্যানালিটিক্সের ক্ষেত্রে মেশিন লার্নিং প্রয়োগ করার বিষয়ে উত্সাহী। কাজের বাইরে, তিনি বাইরে উপভোগ করেন।

Amazon SageMaker-এ BLOOM-176B এবং OPT-30B স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স সহ। উল্লম্ব অনুসন্ধান. আ.ধাওয়াল প্যাটেল AWS-এর একজন প্রধান মেশিন লার্নিং আর্কিটেক্ট। তিনি ডিস্ট্রিবিউটেড কম্পিউটিং এবং কৃত্রিম বুদ্ধিমত্তা সম্পর্কিত সমস্যা নিয়ে বড় উদ্যোগ থেকে শুরু করে মাঝারি আকারের স্টার্টআপ পর্যন্ত সংস্থাগুলির সাথে কাজ করেছেন। তিনি এনএলপি এবং কম্পিউটার ভিশন ডোমেন সহ গভীর শিক্ষার উপর ফোকাস করেন। তিনি গ্রাহকদের SageMaker-এ উচ্চ কর্মক্ষমতা মডেল অনুমান অর্জনে সহায়তা করেন।

Amazon SageMaker-এ BLOOM-176B এবং OPT-30B স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স সহ। উল্লম্ব অনুসন্ধান. আ.কিং ল্যান AWS-এর একজন সফটওয়্যার ডেভেলপমেন্ট ইঞ্জিনিয়ার। তিনি অ্যামাজনে বেশ কিছু চ্যালেঞ্জিং প্রোডাক্ট নিয়ে কাজ করছেন, যার মধ্যে রয়েছে হাই পারফরম্যান্স এমএল ইনফারেন্স সলিউশন এবং হাই পারফরম্যান্স লগিং সিস্টেম। Qing-এর দল সফলভাবে অ্যামাজন বিজ্ঞাপনে প্রথম বিলিয়ন-প্যারামিটার মডেল লঞ্চ করেছে খুব কম বিলম্বের প্রয়োজনে। কিং এর অবকাঠামো অপ্টিমাইজেশান এবং গভীর শিক্ষার ত্বরণ সম্পর্কে গভীর জ্ঞান রয়েছে।

Amazon SageMaker-এ BLOOM-176B এবং OPT-30B স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স সহ। উল্লম্ব অনুসন্ধান. আ.কিংওয়েই লি অ্যামাজন ওয়েব সার্ভিসের একজন মেশিন লার্নিং বিশেষজ্ঞ। তিনি তার পিএইচ.ডি. অপারেশনস রিসার্চে যখন তিনি তার উপদেষ্টার গবেষণা অনুদানের হিসাব ভেঙ্গে দেন এবং নোবেল পুরস্কার প্রদানে ব্যর্থ হন তার প্রতিশ্রুতি। বর্তমানে তিনি আর্থিক পরিষেবা এবং বীমা শিল্পের গ্রাহকদের AWS-এ মেশিন লার্নিং সমাধান তৈরি করতে সহায়তা করেন। অবসর সময়ে তিনি পড়া ও পড়াতে পছন্দ করেন।

Amazon SageMaker-এ BLOOM-176B এবং OPT-30B স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স সহ। উল্লম্ব অনুসন্ধান. আ.রবার্ট ভ্যান ডুসেন অ্যামাজন সেজমেকারের একজন সিনিয়র প্রোডাক্ট ম্যানেজার। তিনি বড় মডেল অনুমানের মতো অ্যাপ্লিকেশনগুলির জন্য গভীর শিক্ষার মডেল অপ্টিমাইজেশানে নেতৃত্ব দেন।

Amazon SageMaker-এ BLOOM-176B এবং OPT-30B স্থাপন করুন বড় মডেলের অনুমান ডিপ লার্নিং কন্টেইনার এবং ডিপস্পিড প্ল্যাটোব্লকচেন ডেটা ইন্টেলিজেন্স সহ। উল্লম্ব অনুসন্ধান. আ.সিদ্ধার্থ ভেঙ্কটেসন AWS ডিপ লার্নিং-এ একজন সফটওয়্যার ইঞ্জিনিয়ার। তিনি বর্তমানে বৃহৎ মডেল অনুমানের জন্য সমাধান নির্মাণের উপর ফোকাস করেন। AWS-এর আগে তিনি বিশ্বব্যাপী গ্রাহকদের জন্য নতুন অর্থপ্রদানের বৈশিষ্ট্য তৈরির Amazon Grocery org-এ কাজ করেছিলেন। কাজের বাইরে, তিনি স্কিইং, আউটডোর এবং খেলাধুলা দেখতে উপভোগ করেন।

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

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