জেমার সাথে একটি ব্যবসায়িক ইমেল এআই সহকারী তৈরি করুন

ইমেল সহ গ্রাহকের অনুসন্ধানগুলি পরিচালনা করা অনেক ব্যবসা চালানোর একটি প্রয়োজনীয় অংশ, তবে এটি দ্রুত অপ্রতিরোধ্য হতে পারে। একটু চেষ্টা করে, জেমার মতো কৃত্রিম বুদ্ধিমত্তা (AI) মডেলগুলি এই কাজটিকে আরও সহজ করতে সাহায্য করতে পারে৷

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

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

ওভারভিউ

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

ওয়েব অ্যাপ ইউজার ইন্টারফেসের স্ক্রিনশট

চিত্র 1. বেকারি ইমেল অনুসন্ধান প্রক্রিয়াকরণের জন্য প্রকল্প ব্যবহারকারী ইন্টারফেস

হার্ডওয়্যার প্রয়োজনীয়তা

একটি গ্রাফিক্স প্রসেসিং ইউনিট (GPU) বা একটি টেনসর প্রসেসিং ইউনিট (TPU) সহ একটি কম্পিউটারে এই টিউনিং প্রক্রিয়াটি চালান এবং বিদ্যমান মডেলটি ধরে রাখার জন্য পর্যাপ্ত GPU বা TPU মেমরি এবং টিউনিং ডেটা। এই প্রকল্পে টিউনিং কনফিগারেশন চালানোর জন্য, আপনার প্রায় 16GB GPU মেমরি, প্রায় একই পরিমাণ নিয়মিত RAM এবং সর্বনিম্ন 50GB ডিস্ক স্পেস প্রয়োজন।

আপনি T4 GPU রানটাইম সহ একটি Colab পরিবেশ ব্যবহার করে এই টিউটোরিয়ালের জেমা মডেল টিউনিং অংশটি চালাতে পারেন। আপনি যদি একটি Google ক্লাউড VM দৃষ্টান্তে এই প্রকল্পটি তৈরি করছেন, তাহলে এই প্রয়োজনীয়তাগুলি অনুসরণ করে উদাহরণটি কনফিগার করুন:

  • GPU হার্ডওয়্যার : এই প্রকল্পটি চালানোর জন্য একটি NVIDIA T4 প্রয়োজন (NVIDIA L4 বা উচ্চতর প্রস্তাবিত)
  • অপারেটিং সিস্টেম : একটি ডিপ লার্নিং অন লিনাক্স বিকল্প বেছে নিন, বিশেষ করে ডিপ লার্নিং ভিএম সহ CUDA 12.3 M124 পূর্বে ইনস্টল করা GPU সফ্টওয়্যার ড্রাইভার সহ।
  • বুট ডিস্কের আকার : আপনার ডেটা, মডেল এবং সমর্থনকারী সফ্টওয়্যারগুলির জন্য কমপক্ষে 50GB ডিস্ক স্থানের ব্যবস্থা করুন।

প্রকল্প সেটআপ

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

ইনস্টল করুন এবং কনফিগার করুন

এই প্রকল্পটি প্যাকেজ পরিচালনা করতে এবং অ্যাপ্লিকেশন চালানোর জন্য Python 3 এবং ভার্চুয়াল এনভায়রনমেন্ট ( venv ) ব্যবহার করে। নিম্নলিখিত ইনস্টলেশন নির্দেশাবলী একটি লিনাক্স হোস্ট মেশিনের জন্য।

প্রয়োজনীয় সফ্টওয়্যার ইনস্টল করতে:

  • পাইথনের জন্য পাইথন 3 এবং venv ভার্চুয়াল পরিবেশ প্যাকেজ ইনস্টল করুন:

    sudo apt update
    sudo apt install git pip python3-venv
    

প্রকল্পটি ক্লোন করুন

আপনার উন্নয়ন কম্পিউটারে প্রকল্প কোড ডাউনলোড করুন. প্রোজেক্ট সোর্স কোড পুনরুদ্ধার করতে আপনার গিট সোর্স কন্ট্রোল সফ্টওয়্যার প্রয়োজন।

প্রকল্প কোড ডাউনলোড করতে:

  1. নিম্নলিখিত কমান্ড ব্যবহার করে গিট সংগ্রহস্থল ক্লোন করুন:

    git clone https://github.com/google-gemini/gemma-cookbook.git
    
  2. ঐচ্ছিকভাবে, স্পার্স চেকআউট ব্যবহার করতে আপনার স্থানীয় গিট রিপোজিটরি কনফিগার করুন, যাতে আপনার কাছে প্রকল্পের জন্য শুধুমাত্র ফাইল থাকে:

    cd gemma-cookbook/
    git sparse-checkout set Gemma/business-email-assistant/
    git sparse-checkout init --cone
    

পাইথন লাইব্রেরি ইনস্টল করুন

পাইথন প্যাকেজ এবং নির্ভরতাগুলি পরিচালনা করতে সক্রিয় venv পাইথন ভার্চুয়াল পরিবেশের সাথে পাইথন লাইব্রেরিগুলি ইনস্টল করুন। pip ইনস্টলারের সাথে পাইথন লাইব্রেরি ইনস্টল করার আগে আপনি পাইথন ভার্চুয়াল পরিবেশ সক্রিয় করেছেন তা নিশ্চিত করুন। পাইথন ভার্চুয়াল পরিবেশ ব্যবহার সম্পর্কে আরও তথ্যের জন্য, পাইথন ভেনভ ডকুমেন্টেশন দেখুন।

পাইথন লাইব্রেরি ইনস্টল করতে:

  1. একটি টার্মিনাল উইন্ডোতে, business-email-assistant ডিরেক্টরিতে নেভিগেট করুন:

    cd Gemma/business-email-assistant/
    
  2. এই প্রকল্পের জন্য Python ভার্চুয়াল এনভায়রনমেন্ট (venv) কনফিগার করুন এবং সক্রিয় করুন:

    python3 -m venv venv
    source venv/bin/activate
    
  3. setup_python স্ক্রিপ্ট ব্যবহার করে এই প্রকল্পের জন্য প্রয়োজনীয় পাইথন লাইব্রেরি ইনস্টল করুন:

    ./setup_python.sh
    

পরিবেশের ভেরিয়েবল সেট করুন

এই প্রকল্পটি চালানোর জন্য কয়েকটি পরিবেশগত পরিবেশের ভেরিয়েবলের প্রয়োজন, যার মধ্যে একটি Kaggle ব্যবহারকারীর নাম এবং একটি Kaggle API টোকেন রয়েছে। আপনার অবশ্যই একটি Kaggle অ্যাকাউন্ট থাকতে হবে এবং সেগুলি ডাউনলোড করতে সক্ষম হওয়ার জন্য Gemma মডেলগুলিতে অ্যাক্সেসের অনুরোধ করুন৷ এই প্রকল্পের জন্য, আপনি দুটি .env ফাইলে আপনার Kaggle ব্যবহারকারীর নাম এবং Kaggle API টোকেন যোগ করুন, যা যথাক্রমে ওয়েব অ্যাপ্লিকেশন এবং টিউনিং প্রোগ্রাম দ্বারা পড়া হয়।

পরিবেশ ভেরিয়েবল সেট করতে:

  1. Kaggle ডকুমেন্টেশনে নির্দেশাবলী অনুসরণ করে আপনার Kaggle ব্যবহারকারীর নাম এবং আপনার টোকেন কী পান।
  2. Gemma সেটআপ পৃষ্ঠায় Gemma নির্দেশাবলীতে অ্যাক্সেস পান অনুসরণ করে Gemma মডেলে অ্যাক্সেস পান।
  3. আপনার প্রকল্পের ক্লোনের প্রতিটি স্থানে একটি .env পাঠ্য ফাইল তৈরি করে প্রকল্পের জন্য পরিবেশ পরিবর্তনশীল ফাইল তৈরি করুন:
    email-processing-webapp/.env
    model-tuning/.env
    
  4. .env টেক্সট ফাইল তৈরি করার পরে, উভয় ফাইলে নিম্নলিখিত সেটিংস যোগ করুন:

    KAGGLE_USERNAME=<YOUR_KAGGLE_USERNAME_HERE>
    KAGGLE_KEY=<YOUR_KAGGLE_KEY_HERE>
    

চালান এবং অ্যাপ্লিকেশন পরীক্ষা

একবার আপনি প্রকল্পের ইনস্টলেশন এবং কনফিগারেশন সম্পন্ন করার পরে, আপনি এটি সঠিকভাবে কনফিগার করেছেন তা নিশ্চিত করতে ওয়েব অ্যাপ্লিকেশনটি চালান। আপনার নিজের ব্যবহারের জন্য প্রকল্পটি সম্পাদনা করার আগে আপনার এটি একটি বেসলাইন চেক হিসাবে করা উচিত।

প্রকল্প চালানো এবং পরীক্ষা করতে:

  1. একটি টার্মিনাল উইন্ডোতে, email-processing-webapp ডিরেক্টরিতে নেভিগেট করুন:

    cd business-email-assistant/email-processing-webapp/
    
  2. run_app স্ক্রিপ্ট ব্যবহার করে অ্যাপ্লিকেশনটি চালান:

    ./run_app.sh
    
  3. ওয়েব অ্যাপ্লিকেশন শুরু করার পরে, প্রোগ্রাম কোড একটি URL তালিকাভুক্ত করে যেখানে আপনি ব্রাউজ এবং পরীক্ষা করতে পারেন। সাধারণত, এই ঠিকানা হল:

    http://127.0.0.1:5000/
    
  4. ওয়েব ইন্টারফেসে, মডেল থেকে একটি প্রতিক্রিয়া তৈরি করতে প্রথম ইনপুট ক্ষেত্রের নীচে ডেটা পান বোতাম টিপুন।

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

আবেদন প্রসারিত করুন

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

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

প্রম্পট নির্দেশাবলী পরিবর্তন করতে:

  1. ডেভেলপমেন্ট প্রজেক্টে, business-email-assistant/email-processing-webapp/app.py কোড ফাইলটি খুলুন।
  2. app.py কোডে, get_prompt(): ফাংশনে সংযোজন নির্দেশাবলী যোগ করুন:

    def get_prompt():
      return """
        Extract the relevant details of this request and return them in
        JSON code, with no additional markdown formatting:\n"""
    

এই উদাহরণটি নির্দেশাবলীতে "কোন অতিরিক্ত মার্কডাউন ফর্ম্যাটিং ছাড়াই" বাক্যাংশ যোগ করে।

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

মডেল টিউন করুন

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

নিম্নলিখিত নির্দেশাবলী ব্যাখ্যা করে যে কীভাবে একটি VM পরিবেশে ফাইন-টিউনিং অপারেশন করতে হয়, তবে, আপনি এই প্রকল্পের জন্য সংশ্লিষ্ট Colab নোটবুক ব্যবহার করেও এই টিউনিং অপারেশন করতে পারেন।

হার্ডওয়্যার প্রয়োজনীয়তা

ফাইন-টিউনিংয়ের জন্য গণনার প্রয়োজনীয়তাগুলি প্রকল্পের বাকি অংশগুলির জন্য হার্ডওয়্যারের প্রয়োজনীয়তার মতোই। আপনি যদি ইনপুট টোকেন 256 এবং ব্যাচের আকার 1-এ সীমাবদ্ধ রাখেন তাহলে আপনি T4 GPU রানটাইম সহ Colab পরিবেশে টিউনিং অপারেশন চালাতে পারেন।

ডেটা প্রস্তুত করুন

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

অনুরোধ প্রতিক্রিয়া
হাই ইন্ডিয়ান বেকারি সেন্ট্রাল,\nআপনার হাতে কি 10টি পেন্ডা এবং ত্রিশটি বুন্দি লাডু আছে? এছাড়াও আপনি একটি ভ্যানিলা ফ্রস্টিং এবং চকোলেট স্বাদের কেক বিক্রি করেন। আমি একটি 6 ইঞ্চি আকার খুঁজছি { "টাইপ": "তদন্ত", "আইটেম": [ { "নাম": "পেন্ডা", "পরিমাণ": 10 }, { "নাম": "বুন্দি লাডু", "পরিমাণ": 30 }, { "নাম ": "কেক", "ফিলিং": নাল, "ফ্রস্টিং": "ভ্যানিলা", "ফ্লেভার": "চকলেট", "সাইজ": "6 ইন" } } }
আমি গুগল ম্যাপে আপনার ব্যবসা দেখেছি। আপনি কি জেলবি ও গুলাব জামুন বিক্রি করেন? { "টাইপ": "তদন্ত", "আইটেম": [ { "নাম": "জেলাবি", "পরিমাণ": শূন্য }, { "নাম": "গুলাব জামুন", "পরিমাণ": শূন্য } }

সারণি 1. বেকারি ইমেল ডেটা এক্সট্র্যাক্টরের জন্য টিউনিং ডেটাসেটের আংশিক তালিকা।

ডেটা বিন্যাস এবং লোড হচ্ছে

যতক্ষণ না আপনার কাছে পাইথন কোডের মাধ্যমে রেকর্ডগুলি পুনরুদ্ধার করার উপায় থাকে ততক্ষণ আপনি ডেটাবেস রেকর্ড, JSON ফাইল, CSV বা প্লেইন টেক্সট ফাইল সহ সুবিধাজনক যে কোনও বিন্যাসে আপনার টিউনিং ডেটা সংরক্ষণ করতে পারেন। এই প্রকল্পটি একটি data ডিরেক্টরি থেকে JSON ফাইলগুলিকে ডিকশনারি অবজেক্টের অ্যারেতে পড়ে। এই উদাহরন টার্নিং প্রোগ্রামে, টিউনিং ডেটাসেটটি model-tuning/main.py মডিউলে লোড করা হয় prepare_tuning_dataset() ফাংশন ব্যবহার করে:

def prepare_tuning_dataset():
    # collect data from JSON files
    prompt_data = read_json_files_to_dicts("./data")
    ...

পূর্বে উল্লিখিত হিসাবে, আপনি ডেটাসেটটিকে সুবিধাজনক একটি বিন্যাসে সংরক্ষণ করতে পারেন, যতক্ষণ না আপনি সংশ্লিষ্ট প্রতিক্রিয়াগুলির সাথে অনুরোধগুলি পুনরুদ্ধার করতে পারেন এবং সেগুলিকে একটি পাঠ্য স্ট্রিংয়ে একত্র করতে পারেন যা একটি টিউনিং রেকর্ড হিসাবে ব্যবহৃত হয়।

টিউনিং রেকর্ড একত্রিত করুন

প্রকৃত টিউনিং প্রক্রিয়ার জন্য, প্রোগ্রামটি প্রম্পট নির্দেশাবলী এবং প্রতিক্রিয়ার বিষয়বস্তু সহ প্রতিটি অনুরোধ এবং প্রতিক্রিয়াকে একটি একক স্ট্রিংয়ে একত্রিত করে। টিউনিং প্রোগ্রামটি মডেলের দ্বারা ব্যবহারের জন্য স্ট্রিংটিকে টোকেনাইজ করে। আপনি model-tuning/main.py মডিউল prepare_tuning_dataset() ফাংশনে একটি টিউনিং রেকর্ড একত্রিত করার জন্য কোডটি দেখতে পারেন:

def prepare_tuning_dataset():
    ...
    # prepare data for tuning
    tuning_dataset = []
    template = "{instruction}\n{response}"

    for prompt in prompt_data:
        tuning_dataset.append(template.format(instruction=prompt["prompt"],
                                              response=prompt["response"]))

    return tuning_dataset

এই ফাংশনটি তার ইনপুট হিসাবে ডেটা নেয় এবং নির্দেশ এবং প্রতিক্রিয়ার মধ্যে একটি লাইন বিরতি যোগ করে এটি ফর্ম্যাট করে।

মডেল ওজন তৈরি করুন

একবার আপনার জায়গায় টিউনিং ডেটা আছে এবং লোড হচ্ছে, আপনি টিউনিং প্রোগ্রাম চালাতে পারেন। এই উদাহরণ অ্যাপ্লিকেশনটির জন্য টিউনিং প্রক্রিয়াটি কেরাস এনএলপি লাইব্রেরি ব্যবহার করে মডেলটিকে নিম্ন র‌্যাঙ্ক অ্যাডাপ্টেশন বা LoRA টেকনিকের সাহায্যে নতুন মডেলের ওজন তৈরি করতে ব্যবহার করে। সম্পূর্ণ নির্ভুল টিউনিংয়ের তুলনায়, LoRA ব্যবহার উল্লেখযোগ্যভাবে বেশি মেমরি-দক্ষ কারণ এটি মডেল ওজনের পরিবর্তনগুলিকে আনুমানিক করে। তারপর আপনি মডেলের আচরণ পরিবর্তন করতে বিদ্যমান মডেল ওজনের উপর এই আনুমানিক ওজনগুলিকে ওভারলে করতে পারেন।

টিউনিং চালানো এবং নতুন ওজন গণনা করতে:

  1. একটি টার্মিনাল উইন্ডোতে, model-tuning/ ডিরেক্টরিতে নেভিগেট করুন।

    cd business-email-assistant/model-tuning/
    
  2. tune_model স্ক্রিপ্ট ব্যবহার করে টিউনিং প্রক্রিয়া চালান:

    ./tune_model.sh
    

আপনার উপলব্ধ গণনা সংস্থানগুলির উপর নির্ভর করে টিউনিং প্রক্রিয়াটি কয়েক মিনিট সময় নেয়। এটি সফলভাবে সম্পন্ন হলে, টিউনিং প্রোগ্রাম নিম্নলিখিত বিন্যাস সহ model-tuning/weights ডিরেক্টরিতে নতুন *.h5 ওজন ফাইল লিখবে:

gemma2-2b_inquiry_tuned_4_epoch##.lora.h5

সমস্যা সমাধান

টিউনিং সফলভাবে সম্পন্ন না হলে, দুটি সম্ভাব্য কারণ রয়েছে:

  • মেমরির বাইরে বা সংস্থান নিঃশেষ হয়ে গেছে : এই ত্রুটিগুলি ঘটে যখন টিউনিং প্রক্রিয়া মেমরির জন্য অনুরোধ করে যা উপলব্ধ GPU মেমরি বা CPU মেমরিকে অতিক্রম করে। টিউনিং প্রক্রিয়া চলাকালীন আপনি ওয়েব অ্যাপ্লিকেশনটি চালাচ্ছেন না তা নিশ্চিত করুন। আপনি যদি 16GB জিপিইউ মেমরি সহ একটি ডিভাইসে টিউনিং করেন তবে নিশ্চিত করুন যে আপনার token_limit 256 এ সেট করা আছে এবং batch_size 1 এ সেট করা আছে।
  • GPU ড্রাইভারগুলি ইনস্টল করা নেই বা JAX-এর সাথে সামঞ্জস্যপূর্ণ নয় : বাঁক নেওয়ার প্রক্রিয়ার জন্য কম্পিউট ডিভাইসে হার্ডওয়্যার ড্রাইভার ইনস্টল করা প্রয়োজন যা JAX লাইব্রেরির সংস্করণের সাথে সামঞ্জস্যপূর্ণ। আরো বিস্তারিত জানার জন্য, JAX ইনস্টলেশন ডকুমেন্টেশন দেখুন।

টিউন করা মডেল স্থাপন করুন

টিউনিং প্রক্রিয়া টিউনিং ডেটা এবং টিউনিং অ্যাপ্লিকেশনে সেট করা যুগের মোট সংখ্যার উপর ভিত্তি করে একাধিক ওজন তৈরি করে। ডিফল্টরূপে, টিউনিং প্রোগ্রাম 3টি মডেল ওজন ফাইল তৈরি করে, প্রতিটি টিউনিং যুগের জন্য একটি। প্রতিটি ধারাবাহিক টিউনিং যুগ ওজন তৈরি করে যা টিউনিং ডেটার ফলাফলগুলি আরও সঠিকভাবে পুনরুত্পাদন করে। আপনি টিউনিং প্রক্রিয়ার টার্মিনাল আউটপুটে প্রতিটি যুগের জন্য নির্ভুলতার হার দেখতে পারেন, নিম্নরূপ:

...
8/8 ━━━━━━━━━━━━━━━━━━━━ 121s 195ms/step - loss: 0.5432 - sparse_categorical_accuracy: 0.5982
Epoch 2/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 194ms/step - loss: 0.3320 - sparse_categorical_accuracy: 0.6966
Epoch 3/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 192ms/step - loss: 0.2135 - sparse_categorical_accuracy: 0.7848

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

ওয়েব অ্যাপ্লিকেশনে উত্পন্ন ওজন স্থাপন করতে:

  1. একটি টার্মিনাল উইন্ডোতে, model-tuning ডিরেক্টরিতে নেভিগেট করুন:

    cd business-email-assistant/model-tuning/
    
  2. deploy_weights স্ক্রিপ্ট ব্যবহার করে টিউনিং প্রক্রিয়া চালান:

    ./deploy_weights.sh
    

এই স্ক্রিপ্টটি চালানোর পরে, আপনি email-processing-webapp/weights/ ডিরেক্টরিতে একটি নতুন *.h5 ফাইল দেখতে পাবেন।

নতুন মডেল পরীক্ষা করুন

একবার আপনি অ্যাপ্লিকেশনটিতে নতুন ওজন স্থাপন করলে, নতুন টিউন করা মডেলটি চেষ্টা করার সময় এসেছে। আপনি ওয়েব অ্যাপ্লিকেশন পুনরায় চালানো এবং একটি প্রতিক্রিয়া তৈরি করে এটি করতে পারেন৷

প্রকল্প চালানো এবং পরীক্ষা করতে:

  1. একটি টার্মিনাল উইন্ডোতে, email-processing-webapp ডিরেক্টরিতে নেভিগেট করুন:

    cd business-email-assistant/email-processing-webapp/
    
  2. run_app স্ক্রিপ্ট ব্যবহার করে অ্যাপ্লিকেশনটি চালান:

    ./run_app.sh
    
  3. ওয়েব অ্যাপ্লিকেশন শুরু করার পরে, আপনি প্রোগ্রাম কোড একটি URL তালিকাভুক্ত করে যেখানে আপনি ব্রাউজ এবং পরীক্ষা করতে পারেন, সাধারণত এই ঠিকানাটি হল:

    http://127.0.0.1:5000/
    
  4. ওয়েব ইন্টারফেসে, মডেল থেকে একটি প্রতিক্রিয়া তৈরি করতে প্রথম ইনপুট ক্ষেত্রের নীচে ডেটা পান বোতাম টিপুন।

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

অতিরিক্ত সম্পদ

এই প্রকল্প সম্পর্কে আরও তথ্যের জন্য, জেমমা কুকবুক কোড সংগ্রহস্থল দেখুন। আপনার যদি অ্যাপ্লিকেশন তৈরিতে সাহায্যের প্রয়োজন হয় বা অন্য ডেভেলপারদের সাথে সহযোগিতা করতে চান, তাহলে Google Developers Community Discord সার্ভারটি দেখুন। Google AI প্রকল্পের সাথে আরও বিল্ড করার জন্য, ভিডিও প্লেলিস্টটি দেখুন।