এই ব্লগ পোস্টে, আমি আপনাকে ধাপে ধাপে MosaicML এর ChatGPT প্রতিযোগী, MPT-7B, আপনার নিজস্ব AWS SageMaker উদাহরণে চালানোর প্রক্রিয়ার মাধ্যমে নিয়ে যেতে যাচ্ছি।
আপনি কি ChatGPT এর ক্ষমতা সম্পর্কে উত্তেজিত, কিন্তু আপনার সংবেদনশীল ডেটা OpenAI-তে প্রকাশ করার বিষয়ে উদ্বিগ্ন? ভাগ্যক্রমে, এমন বিকল্প রয়েছে যা আপনি নিজের অবকাঠামোতে চালাতে পারেন। এরকম একটি বিকল্প হল MosaicML এর MPT-7b, ChatGPT-এর প্রতিযোগী, যা আমরা এই ব্লগ পোস্টে অন্বেষণ করব।
MosaicML, সম্প্রতি Databricks দ্বারা $1.3 বিলিয়ন অর্জিত , তাদের MPT-7B মডেল, ChatGPT-এর একটি অনুমিত প্রতিযোগী দিয়ে ML সম্প্রদায়ের মধ্যে তরঙ্গ তৈরি করছে৷ প্রতিশ্রুতি থাকা সত্ত্বেও, বিচ্ছিন্ন ডকুমেন্টেশন এবং এর ভারী সম্পদের প্রয়োজনীয়তার কারণে এই মডেলটি চালানো কঠিন হতে পারে। যাইহোক, কেউ একটি Jupyter নোটবুকে AWS SageMaker-এ MPT-7B চালাতে পারে, একটি পরিবেশ যা শিক্ষানবিস-বান্ধব এবং দ্রুত পুনরাবৃত্তির জন্য অত্যন্ত নমনীয়। এই সেটআপটি আপনাকে উত্পাদনে যাওয়ার সিদ্ধান্ত নেওয়ার আগে মডেলের সম্ভাব্যতা এবং হার্ডওয়্যার প্রয়োজনীয়তা পরীক্ষা করার অনুমতি দেয়।
AWS SageMaker-এ Jupyter নোটবুকে MPT-7B চালানো বেশ কিছু সুবিধা প্রদান করে। আপনি যা ব্যবহার করেন তার জন্য আপনি শুধু অর্থ প্রদান করতে পারবেন না এবং আপনার কাজ শেষ হয়ে গেলে এটি বন্ধ করতে পারবেন, তবে মডেলটি পুনরায় লোড না করেই আপনার কোডের অংশগুলিকে সহজেই পুনরায় চালু করার ক্ষমতা পুনরাবৃত্তিমূলক বিকাশের সময় সময় বাঁচায়। তবে সাবধান! আপনি যদি আপনার নোটবুকের দৃষ্টান্ত বন্ধ করতে ভুলে যান, তাহলে চার্জ দ্রুত যোগ হতে পারে।
যদিও এই পদ্ধতিটি তুলনামূলকভাবে সুবিধাজনক, তবে কিছু বিবেচনা রয়েছে যা আপনাকে অবশ্যই বিবেচনায় নিতে হবে। প্রথমত, মডেলটি লোড হতে 20 মিনিট পর্যন্ত সময় লাগতে পারে এমনকি একটি উচ্চ-পারফরম্যান্স GPU-তেও, এই প্রক্রিয়াটিকে কিছুটা সময়সাপেক্ষ করে তোলে। এছাড়াও, খরচ বিবেচনা করার একটি ফ্যাক্টর, কারণ চলমান খরচ প্রতি ঘন্টায় কমপক্ষে $4। আপনাকে কমপক্ষে একটি p3.2x বড় উদাহরণে MPT-7B চালাতে হবে; ছোট কিছু সম্ভব বলে মনে হয় না। আপনি SageMaker এর পরিবর্তে EC2 বেছে নিলে, আপনাকে একটি p3.2x বড় উদাহরণ ব্যবহার করার জন্য AWS-এর অনুমতি চাইতে হবে।
পরবর্তী বিভাগগুলিতে আমি আপনাকে ধাপে ধাপে আপনার নিজস্ব সেজমেকার জুপিটার নোটবুকে MPT-7B মডেলটি কীভাবে চালাতে হবে তা নিয়ে যাব:
AWS কনসোল ফায়ার করুন এবং SageMaker অনুসন্ধান করুন:
বাম দিকের মেনু থেকে, নোটবুক->নোটবুক উদাহরণ নির্বাচন করুন:
নোটবুক ইনস্ট্যান্স তৈরি করুন বোতামে ক্লিক করুন:
একটি উদাহরণের নাম উল্লেখ করুন। উদাহরণ টাইপ m1.p3.2xlarge চয়ন করুন। দুর্ভাগ্যবশত, মনে হচ্ছে m1.p3.2xlarge এর মতো শক্তিশালী একটি উদাহরণ প্রয়োজন, অন্যথায় আপনার উদাহরণের মেমরি ফুরিয়ে যেতে পারে বা এমনকি সহজতম প্রশ্নের উত্তর দিতে অত্যধিক সময় লাগতে পারে। যাইহোক, দয়া করে মনে রাখবেন যে এই উদাহরণটির জন্য প্রায় $4/ঘন্টা খরচ হবে, তাই আপনার ব্যবহার সাবধানে নিরীক্ষণ করা গুরুত্বপূর্ণ।
যদি আপনার পরীক্ষার পরিবেশে কোনো বিশেষ সংবেদনশীল ডেটা না থাকে তাহলে আপনি যেকোনো S3 বাকেটের অ্যাক্সেস মঞ্জুর করতে পারেন। অন্যথায়, আপনাকে আরও স্পষ্ট হতে হবে।
নোটবুকটি তখন একটি মুলতুবি অবস্থায় থাকবে। এটি সম্ভবত প্রায় 10 মিনিট স্থায়ী হবে:
ইতিমধ্যে, আমরা একটি নোটবুক ডাউনলোড করব যাতে AWS SageMaker দৃষ্টান্তের প্রভিশনিং শেষ হওয়ার পরে আমরা এটি আপলোড করতে পারি৷
AWS SageMaker.ipynb-এ MPT-7B- এ নোটবুকের দিকে যান এবং এটি ডাউনলোড করুন:
এই নোটবুকে আপনি দুটি প্রধান কোড ব্লক লক্ষ্য করবেন। প্রথম ব্লকটি MPT-7B টোকেনাইজার এবং মডেল লোড করে:
from torch import cuda, bfloat16 from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig device = f'cuda:{cuda.current_device()}' if cuda.is_available() else 'cpu' tokenizer = AutoTokenizer.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True) config={"init_device": "meta"} model = AutoModelForCausalLM.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True, config=config, torch_dtype=bfloat16) print(f"device={device}") print('model loaded')
টোকেনাইজারটি মডেলে প্রেরিত প্রশ্ন এনকোড করতে এবং মডেল থেকে প্রতিক্রিয়া ডিকোড করতে ব্যবহৃত হয়। উপরন্তু, আমরা আমাদের GPU-এর জন্য ডিভাইস স্পেসিফিকেশন প্রাপ্ত করি যাতে আমরা মডেলটিকে পরে ব্যবহার করার জন্য কনফিগার করতে পারি:
import time from IPython.display import Markdown import torch from transformers import StoppingCriteria, StoppingCriteriaList # mtp-7b is trained to add "<|endoftext|>" at the end of generations stop_token_ids = [tokenizer.eos_token_id] # Define custom stopping criteria object. # Source: https://github.com/pinecone-io/examples/blob/master/generation/llm-field-guide/mpt-7b/mpt-7b-huggingface-langchain.ipynb class StopOnTokens(StoppingCriteria): def __call__(self, input_ids: torch.LongTensor,scores: torch.FloatTensor, **kwargs) -> bool: for stop_id in stop_token_ids: if input_ids[0][-1] == stop_id: return True return False stopping_criteria = StoppingCriteriaList([StopOnTokens()]) def ask_question(question, max_length=100): start_time = time.time() # Encode the question input_ids = tokenizer.encode(question, return_tensors='pt') # Use the GPU input_ids = input_ids.to(device) # Generate a response output = model.generate( input_ids, max_new_tokens=max_length, temperature=0.9, stopping_criteria=stopping_criteria ) # Decode the response response = tokenizer.decode(output[:, input_ids.shape[-1]:][0], skip_special_tokens=True) end_time = time.time() duration = end_time - start_time display(Markdown(response)) print("Function duration:", duration, "seconds")
stopping_critera
ব্যবহার লক্ষ্য করুন, যা প্রয়োজন নয়তো মডেলটি আমাদের প্রশ্নের উত্তর দেওয়ার পরেও বকবক করা শুরু করবে।
আপনি যদি বিভিন্ন বিকল্পগুলি অন্বেষণ করতে চান তবে মডেল জেনারেট প্যারামিটারগুলি দেখুন৷
এখন, SageMaker-এ এই নোটবুকটি আপলোড করা যাক।
আশা করি এই সময়ের মধ্যে আপনার সেজমেকার নোটবুক উদাহরণের ব্যবস্থা করা শেষ হয়েছে। যখন এটি থাকে, ওপেন জুপিটার লিঙ্কটি ক্লিক করুন:
তারপরে, আপনার স্ক্রিনের উপরের-ডান কোণায় আপলোড বোতামটি ক্লিক করুন এবং আপনি যে নোটবুকটি ডাউনলোড করেছেন সেটি নির্বাচন করুন:
কার্নেলটিকে conda_python3 এ সেট করুন:
সেল নির্বাচন করুন -> সমস্ত চালান :
একটি ঘন্টাঘড়ি লোগো তারপর ব্রাউজার ট্যাবে প্রদর্শিত হবে:
মডেলটি ডাউনলোড করার জন্য আপনাকে প্রায় 10 মিনিট অপেক্ষা করতে হবে:
এটি চালানোর পরে, আপনি প্রশ্নের উত্তর দেখতে পাবেন পারমাণবিক বিভাজন এবং ফিউশনের মধ্যে পার্থক্য আমাকে ব্যাখ্যা করুন :
যেহেতু মডেল এবং টোকেনাইজার ইতিমধ্যেই উপরে লোড করা হয়েছে, আপনি সহজভাবে ask_question কোড ব্লক পরিবর্তন করতে পারেন এবং অন্য কোন প্রশ্ন জিজ্ঞাসা করতে Run বাটনে ক্লিক করতে পারেন। এটি আপনাকে প্রতিবার একটি নতুন প্রশ্ন পরীক্ষা করতে চাইলে 10 মিনিট ব্যয় করা থেকে বাঁচাবে।
যত তাড়াতাড়ি আপনি মডেলটি পরীক্ষা করা শেষ করেছেন, আপনি আপনার নোটবুকের উদাহরণগুলির তালিকায় ফিরে যেতে এবং এটি বন্ধ করতে চাইবেন। যদি আপনি না করেন, $4/ঘন্টা খুব দ্রুত যোগ হবে 💸
কর্মক্ষমতার পরিপ্রেক্ষিতে, আমার প্রাথমিক পরীক্ষাগুলি সুপারিশ করে যে MPT-7B-এর ফলাফল ChatGPT-এর মতো ভালো নাও হতে পারে৷ এটি প্রশ্নের উত্তর দেওয়ার মতো একটি শালীন কাজ করে:
কিন্তু "বেলিজের রাজধানী কি?" এর মতো প্রশ্নের জন্য এটি বেশ ভয়ঙ্করভাবে ব্যর্থ হয়:
আমি বর্তমানে আরও তথ্য সংগ্রহ করছি এবং একটি ফলো-আপ ব্লগ পোস্টে একটি ব্যাপক তুলনামূলক বিশ্লেষণ পরিচালনা করব৷ সেই পোস্টে, আমি প্রকৃত কথোপকথনের ইতিহাস ব্যবহার করে MPT-7B, MPT-30B, Falcon-40b, এবং ChatGPT-এর প্রশ্নোত্তর কর্মক্ষমতা তুলনা করব।
একবার আপনি পরীক্ষা থেকে উৎপাদনে রূপান্তর করতে প্রস্তুত হলে, সেজমেকার একটি অতিরিক্ত সুবিধা অফার করে - আপনার মডেলের জন্য একটি শেষ পয়েন্ট তৈরি করার ক্ষমতা। SageMaker এর সাথে, আপনি আপনার সংস্থানগুলিকে অপ্টিমাইজ করে শেষপয়েন্টের চাহিদার উপর ভিত্তি করে অটো-স্কেল করতে পারেন।
মনে রাখবেন যে জুপিটার নোটবুকে চলার সময় আপনার প্রক্রিয়াটি কাঁটাচামচ হয়ে যাওয়া এবং মেমরি ফুরিয়ে যাওয়া সহজ। যদি এটি ঘটে, কেবল কার্নেল বন্ধ করুন এবং সমস্ত কমান্ড আবার চালান।
আপনি যদি AWS ছাড়া অন্য কোনো প্ল্যাটফর্মে এই মডেলটি চালানোর বিষয়ে আগ্রহী হন, তাহলে Google Colab Pro হল $9/মাসে আরেকটি কার্যকর বিকল্প। যাইহোক, আমাদের পরীক্ষার উপর ভিত্তি করে, আমরা দেখেছি যে আমরা মাত্র কয়েক ঘন্টার মধ্যে প্রদত্ত ক্রেডিটগুলি শেষ করে দিয়েছি। 😳
CUDA সংস্করণের অসামঞ্জস্যতার কারণে সেজমেকারে ট্রাইটন অপ্টিমাইজেশান ব্যবহার করতে অক্ষমতা আপনার মুখোমুখি হতে পারে এমন আরেকটি চ্যালেঞ্জ। দুর্ভাগ্যবশত, AWS-এর বর্তমান P3 দৃষ্টান্তে সাম্প্রতিক CUDA সংস্করণ অন্তর্ভুক্ত নেই। অতএব, আপনি যদি ট্রাইটন অপ্টিমাইজেশান ব্যবহার করতে চান তবে আপনাকে কমান্ড লাইন অ্যাক্সেস সহ একটি EC2 ধারক তৈরি করতে হবে। যাইহোক, এটি মনে রাখা গুরুত্বপূর্ণ যে 8টি VCPU-এর সাথে একটি উদাহরণ চালানোর জন্য আপনাকে AWS সমর্থন থেকে বিশেষ অনুমতির প্রয়োজন হবে। ভবিষ্যতের একটি পোস্টে, আমি কীভাবে ট্রাইটনকে সংহত করতে এবং আরও সাশ্রয়ী জিপিইউ ক্লাউড সরবরাহকারীকে ব্যবহার করতে একটি বিস্তারিত নির্দেশিকা প্রদান করব, যেমন Lambda Labs ।
যদিও MosaicML-এর MPT-7B OpenAI-এর ChatGPT-এর একটি কার্যকর বিকল্প প্রস্তাব করে, এটি তার নিজস্ব চ্যালেঞ্জগুলি উপস্থাপন করে। মডেলটি চালানো সময়সাপেক্ষ, ব্যয়বহুল হতে পারে এবং উপলব্ধ ডকুমেন্টেশনের অভাব রয়েছে। যাইহোক, মডেলটিকে ইন-হাউস রাখার এবং OpenAI-এর সংস্পর্শে আসা থেকে আপনার ডেটা রক্ষা করার ক্ষমতা নির্দিষ্ট ব্যবহারের ক্ষেত্রে বাধ্যতামূলক হতে পারে।
SageMaker মডেলটি দ্রুত পরীক্ষা করার জন্য দুর্দান্ত সুবিধা প্রদান করে এবং আপনি প্রস্তুত হলে উৎপাদনে রূপান্তর করার নমনীয়তা প্রদান করে। আপনি MPT-7B দিয়ে শুরু করছেন বা কিছু সময়ের জন্য এটি ব্যবহার করছেন, আমরা আশা করি এই গাইডটি মূল্যবান অন্তর্দৃষ্টি প্রদান করেছে।
আমাদের পরবর্তী ব্লগ পোস্টের জন্য আমাদের সাথে থাকুন, যেখানে আমরা MPT-7B, MPT-30B, Falcon-40b, এবং ChatGPT-এর মধ্যে পারফরম্যান্স তুলনা সম্পর্কে গভীরভাবে আলোচনা করব৷
আপনি যদি MPT-7B বা এর বড় রূপ, MPT-30B সম্পর্কে আরও জানতে আগ্রহী হন তবে নিম্নলিখিত লিঙ্কগুলি দেখুন।
এবং মনে রাখবেন, আপনি ChatGPT বা MPT-7B-এর সাথে কাজ করছেন না কেন, আপনার ব্যবহারের ক্ষেত্রে ডেটা গোপনীয়তা এবং খরচ-কার্যকারিতার সঙ্গে আপস না করেই নিশ্চিত করাই গুরুত্বপূর্ণ। হ্যাপি টিংকারিং!
MindfulDataAI.com এ, আমরা ব্যবসার জন্য ChatGPT অফার করি। আপনি যদি আপনার কোম্পানির ডেটা দিয়ে ChatGPT, MPT বা অন্যান্য মডেলের সুবিধা নিতে আগ্রহী হন, তাহলে অনুগ্রহ করে আমাদের সাথে যোগাযোগ করুন।