অ্যামাজন সেজমেকারের সাথে ফ্যালকন মডেলগুলির কর্মক্ষমতা উন্নত করুন | আমাজন ওয়েব সার্ভিসেস

অ্যামাজন সেজমেকারের সাথে ফ্যালকন মডেলগুলির কর্মক্ষমতা উন্নত করুন | আমাজন ওয়েব সার্ভিসেস

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

পূর্বের দিকে পোস্ট, আমরা দেখিয়েছি কিভাবে আপনি SageMaker-এ ফ্যালকন ফ্যামিলির মডেল স্থাপন করতে LMI কন্টেইনার ব্যবহার করতে পারেন। এই পোস্টে, আমরা প্রদর্শন করি যে কীভাবে ক্রমাগত ব্যাচিংয়ের মতো কৌশলগুলি দিয়ে Falcon-40B পরিবেশন করার থ্রুপুট এবং লেটেন্সি উন্নত করা যায়। আমরা SageMaker LMI কন্টেইনার দ্বারা প্রদত্ত কনফিগারেশন প্যারামিটারগুলির একটি স্বজ্ঞাত বোঝাপড়াও প্রদান করি যা আপনাকে আপনার বাস্তব-বিশ্বের অ্যাপ্লিকেশনের জন্য সেরা কনফিগারেশন খুঁজে পেতে সহায়তা করতে পারে।

এলএলএম-এর জন্য টেক্সট-জেনারেটিভ ইনফারেন্সের মৌলিক বিষয়

আসুন প্রথমে টেক্সট জেনারেশনের জন্য এলএলএম-এর জন্য কীভাবে অনুমান করা যায় তার কয়েকটি মৌলিক বিষয় দেখি।

ফরোয়ার্ড পাস, অ্যাক্টিভেশন এবং কেভি ক্যাশে

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

ফ্যালকন বা জিপিটি মত ভাষার মডেল সহ পাঠ্য প্রজন্ম autoregressive. এর মানে হল যে মডেলটি পূর্বে জেনারেট করা টোকেনগুলিতে কন্ডিশনার করার সময় একবারে একটি টোকেন তৈরি করে। অন্য কথায়, প্রতিটি পুনরাবৃত্তিতে, মডেলটি পূর্বে তৈরি করা পাঠ্যটিকে ইনপুট হিসাবে নেয় এবং সেই প্রসঙ্গের উপর ভিত্তি করে পরবর্তী টোকেনের পূর্বাভাস দেয়। যেমন উল্লেখ করা হয়েছে vLLM: পেজড অ্যাটেনশন সহ সহজ, দ্রুত এবং সস্তা LLM পরিবেশন করা, এই অটোরিগ্রেসিভ ডিকোডিং প্রক্রিয়ায়, LLM-এর সমস্ত ইনপুট টোকেন তাদের মনোযোগ কী এবং মান টেনসর তৈরি করে এবং এই টেনসরগুলি পরবর্তী টোকেন তৈরি করতে GPU মেমরিতে রাখা হয়। এই ক্যাশড কী এবং মান টেনসরগুলিকে প্রায়শই হিসাবে উল্লেখ করা হয় KV cache.

প্রিফিল এবং ডিকোড পর্যায়গুলি

একটি অটোরিগ্রেসিভ ডিকোডিং প্রক্রিয়ায়, যেমন ফ্যালকনের মতো ভাষার মডেলগুলির সাথে পাঠ্য তৈরিতে ব্যবহৃত একটি প্রক্রিয়ায়, সাধারণত দুটি প্রধান পর্যায় রয়েছে: prefill ফেজ এবং decode পর্যায়. এই পর্যায়গুলি সুসংগত এবং প্রাসঙ্গিকভাবে প্রাসঙ্গিক পাঠ্য তৈরি করার জন্য অত্যন্ত গুরুত্বপূর্ণ।

প্রিফিল পর্বে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

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

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

ডিকোড পর্বে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

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

প্রিফিল এবং ডিকোড পর্যায়গুলির সংমিশ্রণ অটোরিগ্রেসিভ মডেলগুলিকে পাঠ্য তৈরি করতে দেয় যা একটি প্রাথমিক প্রসঙ্গে তৈরি করে এবং পাঠ্যের সুসংগত, প্রাসঙ্গিকভাবে প্রাসঙ্গিক এবং প্রাসঙ্গিকভাবে সামঞ্জস্যপূর্ণ ক্রম তৈরি করে।

নির্দেশ করে ট্রান্সফরমার-ভিত্তিক জেনারেটিভ মডেলের জন্য একটি ডিস্ট্রিবিউটেড সার্ভিং সিস্টেম প্রক্রিয়ার বিস্তারিত ব্যাখ্যার জন্য।

গতিশীল ব্যাচিং ব্যবহার করে থ্রুপুট অপ্টিমাইজ করা

এখন পর্যন্ত, আমরা শুধুমাত্র একটি একক ইনপুট সম্পর্কে কথা বলেছি। অনুশীলনে, আমরা একইসঙ্গে অনুমান করার জন্য অ্যাপ্লিকেশন ক্লায়েন্টদের কাছ থেকে এলোমেলোভাবে আসা একাধিক অনুরোধের সাথে মোকাবিলা করার আশা করি। প্রথাগত উপায়ে, মৌলিক ব্যাচিং থ্রুপুট বাড়ানোর জন্য এবং GPU-এর কম্পিউটিং সংস্থানগুলির ব্যবহার ব্যবহার করা যেতে পারে। ব্যাচিং কার্যকরভাবে একটি ব্যাচে একাধিক অনুরোধের সংখ্যাসূচক উপস্থাপনাকে একত্রিত করা এবং অটোরিগ্রেসিভ ফরওয়ার্ড পাসের সমান্তরাল রান সম্পাদন করা। এই বুদ্ধিমান ব্যাচিং পরিবেশন পাশ এ সম্পন্ন করা হয়. SageMaker LMI-এর DJLSserving সার্ভারকে নিম্নলিখিত প্যারামিটারগুলি সেট করে সমান্তরালভাবে প্রক্রিয়া করার জন্য একাধিক অনুরোধ একসাথে ব্যাচ করার জন্য কনফিগার করা যেতে পারে serving.properties:

  • max_batch_delay = 100 - মিলিসেকেন্ডে ব্যাচ একত্রিতকরণের জন্য সর্বাধিক বিলম্ব। ডিফল্ট মান হল 100 মিলিসেকেন্ড।
  • ব্যাচ আকার = 32 - গতিশীল ব্যাচের আকার। ডিফল্ট হল 1।

এটি মূলত দেখায় যে DJLServing একবারে 100 মিলিসেকেন্ডের জন্য অনুরোধগুলি সারিবদ্ধ করবে বা যদি সারিবদ্ধ অনুরোধের সংখ্যা নির্দিষ্ট ব্যাচ_সাইজ পর্যন্ত হয়, তাহলে ব্যাচটি অনুমানের জন্য ব্যাকএন্ডে চালানোর জন্য নির্ধারিত হবে। এই হিসাবে পরিচিত হয় dynamic batching. এটি গতিশীল কারণ সেই সময়ের মধ্যে কতগুলি অনুরোধ যোগ করা হয়েছিল তার উপর নির্ভর করে ব্যাচের আকার ব্যাচ জুড়ে পরিবর্তিত হতে পারে। যাইহোক, যেহেতু অনুরোধের বিভিন্ন বৈশিষ্ট্য থাকতে পারে, (উদাহরণস্বরূপ, কিছু অনুরোধের আকার 20 টোকেন ইনপুট এবং 500 টোকেন আউটপুট হতে পারে, যেখানে অন্যগুলি 500 টোকেন ইনপুট সহ কিন্তু আউটপুটের জন্য শুধুমাত্র 20টি বিপরীত হতে পারে), কিছু অনুরোধ হতে পারে একই ব্যাচে অন্যদের তুলনায় দ্রুত প্রক্রিয়াকরণ সম্পূর্ণ করুন। এর ফলে ব্যাচের সমস্ত ইন-ফ্লাইট অনুরোধগুলির ডিকোড পর্যায় সম্পূর্ণ করার জন্য অপেক্ষা করার সময় GPU-এর কম ব্যবহার হতে পারে, এমনকি যদি সারিতে প্রসেস করার অপেক্ষায় অতিরিক্ত অনুরোধ থাকে। নিম্নলিখিত চিত্রটি এই প্রক্রিয়াটি চিত্রিত করে।

সরল ডাইনামিক ব্যাচিং ভিজ্যুয়াল

ডায়নামিক ব্যাচিং ভিজ্যুয়াল - অনুরোধ 2 এবং 3 এর শেষে নিষ্ক্রিয় উইন্ডোগুলি লক্ষ্য করুন

ক্রমাগত ব্যাচিং ব্যবহার করে থ্রুপুট অপ্টিমাইজ করা

সঙ্গে continuous batching, এই নামেও পরিচিত iterative or rolling ব্যাচিং, আমরা প্রিফিল এবং ডিকোড পর্যায়ের মধ্যে পার্থক্যের সুবিধা গ্রহণ করি। ক্রমাগত ব্যাচিং সক্রিয় করতে, DJServing serving.properties অনুযায়ী নিম্নলিখিত অতিরিক্ত কনফিগারেশন প্রদান করে:

  • ইঞ্জিন=MPI - আমরা আপনাকে অবিচ্ছিন্ন ব্যাচিংয়ের জন্য MPI ইঞ্জিন ব্যবহার করতে উত্সাহিত করি।
  • option.rolling_batch=অটো বা lmi-dist - আমরা অটো ব্যবহার করার পরামর্শ দিই কারণ এটি ভবিষ্যতে অন্যান্য অপ্টিমাইজেশনের সাথে স্বয়ংক্রিয়ভাবে সবচেয়ে উপযুক্ত রোলিং ব্যাচ অ্যালগরিদম বেছে নেবে।
  • option.max_rolling_batch_size=32 - এটি সমসাময়িক অনুরোধের সংখ্যা সীমিত করে। ডিফল্ট হল 32।

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

এই ক্যাশের আকার নিম্নলিখিত বিকল্পের সাথে কনফিগার করা যেতে পারে:

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

ক্রমাগত বা পুনরাবৃত্তিমূলক ব্যাচিং ভিজ্যুয়াল

ক্রমাগত বা পুনরাবৃত্তিমূলক ব্যাচিং ভিজ্যুয়াল - লক্ষ্য করুন যে নিষ্ক্রিয় সময়গুলি অনুসরণের অনুরোধের সাথে প্রতিস্থাপিত হয়েছে

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

এটি সব একসাথে রাখা: GPU গুলির মেমরি ব্যবহার সম্পর্কে কীভাবে ভাববেন

আপনার ব্যবসায়িক ব্যবহারের ক্ষেত্রে কোন কনফিগারেশনটি সবচেয়ে সাশ্রয়ী তা দেখতে আপনার মডেলটি পরীক্ষা করে দেখুন। একটি বোঝাপড়া তৈরি করতে, আসুন মডেলটি লোড হওয়ার সাথে সাথে এবং ক্রমাগত অনুরোধগুলি একটি রোলিং ব্যাচে প্রক্রিয়া করা হওয়ার সাথে সাথে জিপিইউগুলির মেমরির ফুটপ্রিন্টটি কল্পনা করি। এই পোস্টের জন্য, ধরা যাক আমরা Falcon-40B মডেলটিকে G5 ইন্সট্যান্স টাইপের একটিতে লোড করছি যা NVIDIA A10G GPU-এর সাথে ইনস্টল করা আছে, প্রতিটি 24 GB মেমরি সহ। মনে রাখবেন যে একই ধরনের বোঝাপড়া p3, p4 এবং p5 উদাহরণের জন্য প্রযোজ্য, যা V100, A100 এবং H100 GPU সিরিজের সাথে আসে।

Falcon-40B পরিবেশন করার জন্য প্রয়োজনীয় মোট মেমরির আনুমানিক মান পাওয়ার জন্য নিম্নলিখিতটি হল:

  • মডেল আকার = মডেল প্যারামিটারের সংখ্যা (Falcon-40B এর জন্য 40 বিলিয়ন) প্রতি প্যারামিটার x 4 বাইট (FP32 এর জন্য) = 160 GB
  • অনুমানের জন্য Falcon-40B লোড করার জন্য আনুমানিক মোট মেমরি প্রয়োজন = মডেলের আকার (=160 জিবি) + কেভি ক্যাশে (অ্যাটেনশন ক্যাশে) (=*20 জিবি) + এমএল ফ্রেমওয়ার্কস দ্বারা অতিরিক্ত মেমরি ওভারহেড (প্রায় 2 জিবি)
মেমরি ভিজ্যুয়াল

মেমরি ভিজ্যুয়াল - একটি লোড করা Falcon-40B মডেলের মেমরি পদচিহ্ন বোঝা

Falcon-40B-এর জন্য, যদি আমরা মডেলটিকে bfloat16 (2 বাইট) ডেটা টাইপের সাথে পরিমাপ করে মডেলটিকে সংকুচিত করি, তাহলে মডেলের আকার প্রায় 80 GB হয়ে যায়। আপনি দেখতে পাচ্ছেন, এটি এখনও একটি এক্সিলারেটর ডিভাইস দ্বারা সমর্থিত মেমরির চেয়ে বড়, তাই আমাদের একটি বিশেষ সহ একটি মডেল পার্টিশনিং (শার্ডিং) কৌশল গ্রহণ করতে হবে। টেনসর সমান্তরালতা (TP) একাধিক অ্যাক্সিলারেটর ডিভাইস জুড়ে মডেলের কাছে যান এবং শার্ড করুন। ধরা যাক আমরা g5.24xlarge বেছে নিয়েছি, যার 4 A10G GPU ডিভাইস রয়েছে। আমরা যদি নিম্নলিখিতগুলির সাথে DJLServing (serving.properties) কনফিগার করি, আমরা আশা করতে পারি যে 80 GB মডেলের ওজন সমস্ত 4 GPU তে সমানভাবে ভাগ করা হবে:

সঙ্গে tensor_parallel_degree 4 এ সেট করা হয়েছে, 20 GB GPU মেমরির প্রায় 24 GB (প্রায় 84%) ইতিমধ্যেই ব্যবহার করা হয়েছে এমনকি একটি একক অনুরোধ প্রক্রিয়া হওয়ার আগেই। বাকি 16% GPU কেভি ক্যাশে আগত অনুরোধের জন্য ব্যবহার করা হবে। এটা সম্ভব যে আপনার ব্যবসার পরিস্থিতি এবং এর লেটেন্সি এবং থ্রুপুট প্রয়োজনীয়তার জন্য, অবশিষ্ট মেমরির 2-3 GB যথেষ্ট থেকে বেশি। যদি তা না হয়, তাহলে আপনি ইনস্ট্যান্সের আকার বাড়াতে পারেন g5.48xlarge, যার 8 GPU আছে এবং tensor_parallel_degree ব্যবহার করে 8 এ সেট করা হয়েছে। এই ধরনের ক্ষেত্রে, প্রতিটি GPU-এর উপলব্ধ 10 GB মেমরির মাত্র 24 GB মডেলের ওজনের জন্য ব্যবহার করা হয় এবং আমরা সক্রিয়করণ এবং কেভি ক্যাশের জন্য অবশিষ্ট GPU-এর প্রায় 60% আছে। স্বজ্ঞাতভাবে, আমরা দেখতে পারি যে এই কনফিগারেশন আমাদের একটি উচ্চ থ্রুপুট পেতে অনুমতি দিতে পারে। উপরন্তু, যেহেতু আমাদের এখন একটি বড় বাফার আছে, আমরা বাড়াতে পারি max_rolling_batch_prefill_tokens এবং max_rolling_batch_size থ্রুপুটকে আরও অপ্টিমাইজ করার পরামিতি। একসাথে, এই দুটি পরামিতি মডেলের জন্য অ্যাক্টিভেশন প্রিফিল এবং কেভি ক্যাশের পূর্বনির্ধারণ নিয়ন্ত্রণ করবে। এই দুটি প্যারামিটারের জন্য একটি বড় সংখ্যা একটি বৃহত্তর থ্রুপুটের সাথে সহ-সম্পর্কিত হবে, ধরে নিচ্ছি যে আপনার কাছে GPU মেমরিতে KV ক্যাশের জন্য যথেষ্ট বাফার রয়েছে।

PagedAttention সহ ক্রমাগত ব্যাচিং

PagedAttention হল UC Berkeley দ্বারা তৈরি একটি নতুন অপ্টিমাইজেশান অ্যালগরিদম যা স্থির-আকারের পৃষ্ঠা বা ব্লকগুলিতে মেমরি বরাদ্দ করে মনোযোগ ক্যাশে (KV ক্যাশে) অ-সংলগ্ন হওয়ার অনুমতি দিয়ে ক্রমাগত ব্যাচিং প্রক্রিয়াকে উন্নত করে। এটি অপারেটিং সিস্টেম দ্বারা ব্যবহৃত ভার্চুয়াল মেমরি এবং পেজিং ধারণা দ্বারা অনুপ্রাণিত।

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

পারফরম্যান্স তুলনা

আপনার স্থাপনার কনফিগারেশনের কার্যকরী লোড টেস্টিং নিশ্চিত করতে, ব্যবসার পরিস্থিতি বিবেচনা করে এবং LLM-ভিত্তিক অ্যাপ্লিকেশনের জন্য ইনপুট এবং আউটপুটের বৈশিষ্ট্যগুলি স্পষ্টভাবে সংজ্ঞায়িত করে শুরু করার পরামর্শ দেওয়া হচ্ছে। উদাহরণস্বরূপ, আপনি যদি একটি কল সেন্টার সংক্ষিপ্তকরণ ব্যবহারের ক্ষেত্রে কাজ করেন, তাহলে ইনপুটে বড় পাঠ্য থাকতে পারে, যেমন একটি গ্রাহক পরিষেবা এজেন্ট এবং একজন গ্রাহকের মধ্যে একটি 500-টোকেন চ্যাট ট্রান্সক্রিপ্ট, তবে আউটপুটটি অপেক্ষাকৃত ছোট হতে পারে, প্রায় 100 টোকেন, ট্রান্সক্রিপ্টের একটি সারাংশ উপস্থাপন করে। অন্যদিকে, আপনি যদি একটি কোড জেনারেশনের দৃশ্যে কাজ করেন, ইনপুটটি 15 টোকেনের মতো ছোট হতে পারে, যেমন "পেজিনেশন সহ সমস্ত EC2 সংস্থান বর্ণনা করার জন্য পাইথনে একটি দক্ষ বাস্তবায়ন লিখুন" কিন্তু আউটপুট অনেক বেশি হতে পারে। বড়, 500 টোকেনে পৌঁছেছে। কম লেটেন্সি অর্জন করা বা থ্রুপুট সর্বাধিক করা আপনার নির্দিষ্ট পরিস্থিতির জন্য শীর্ষ অগ্রাধিকার কিনা তা বিবেচনা করাও গুরুত্বপূর্ণ।

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

আমাদের বিশ্লেষণে, আমরা প্রথাগত গতিশীল ব্যাচিংয়ের উপর ক্রমাগত ব্যাচিংয়ের সুবিধাগুলি চিত্রিত করার জন্য পারফরম্যান্সকে বেঞ্চমার্ক করেছি। আমরা SageMaker-এ একটি LMI ধারক ব্যবহার করে গতিশীল ব্যাচিং এবং পুনরাবৃত্তিমূলক ব্যাচিংয়ের জন্য serving.properties-এ নিম্নলিখিত টেবিলে বিস্তারিত কনফিগারেশনগুলি ব্যবহার করেছি।

ডাইনামিক ব্যাচিং ক্রমাগত ব্যাচিং PagedAttention সহ ক্রমাগত ব্যাচিং

ইঞ্জিন = পাইথন

option.model_id=tiiuae/falcon-40b

option.tensor_parallel_degree=8

option.dtype=fp16

ব্যাচ_সাইজ=4

max_batch_delay=100

option.trust_remote_code = সত্য

ইঞ্জিন = MPI

option.model_id = {{s3_url}}

option.trust_remote_code = সত্য

option.tensor_parallel_degree = 8

option.max_rolling_batch_size = 32

option.rolling_batch = স্বয়ংক্রিয়

option.dtype = fp16

option.max_rolling_batch_prefill_tokens = 1024

option.paged_attention = মিথ্যা

ইঞ্জিন = MPI

option.model_id = {{s3_url}}

option.trust_remote_code = সত্য

option.tensor_parallel_degree = 8

option.max_rolling_batch_size = 32

option.rolling_batch = স্বয়ংক্রিয়

option.dtype = fp16

option.max_rolling_batch_prefill_tokens = 1024

option.paged_attention = সত্য

দুটি কনফিগারেশন Falcon-40B-এর জন্য বেঞ্চমার্ক করা হয়েছে FP16 ডেটা টাইপ ml.g5.48xlarge-এ মোতায়েন করা হয়েছে কয়েকটি ভিন্ন পরিস্থিতিতে যা বাস্তব-বিশ্বের অ্যাপ্লিকেশনের প্রতিনিধিত্ব করে:

  • প্রচুর সংখ্যক টোকেন সহ অল্প সংখ্যক ইনপুট টোকেন তৈরি হচ্ছে - এই পরিস্থিতিতে, ইনপুট টোকেনের সংখ্যা 32 এ স্থির করা হয়েছিল এবং 128টি নতুন টোকেন তৈরি করা হয়েছিল
ব্যাচিং কৌশল থ্রুপুট (টোকেন/সেকেন্ড) লেটেন্সি p90 (সেকেন্ড)
ডাইনামিক ব্যাচিং 5.53 58.34
ক্রমাগত ব্যাচিং 56.04 4.74
PagedAttention সহ ক্রমাগত ব্যাচিং 59.18 4.76
  • অল্প সংখ্যক টোকেন সহ একটি বড় ইনপুট তৈরি হচ্ছে৷ - এখানে, আমরা ইনপুট টোকেনের সংখ্যা 256 এ ঠিক করি এবং LLM-কে 32 টোকেনে ইনপুট সংক্ষিপ্ত করার জন্য অনুরোধ করি
ব্যাচিং কৌশল থ্রুপুট (টোকেন/সেকেন্ড) লেটেন্সি p90 (সেকেন্ড)
ডাইনামিক ব্যাচিং 19.96 59.31
ক্রমাগত ব্যাচিং 46.69 3.88
PagedAttention সহ ক্রমাগত ব্যাচিং 44.75 2.67

আমরা দেখতে পাচ্ছি যে PagedAttention-এর সাথে ক্রমাগত ব্যাচিং LMI কন্টেইনার ব্যবহার করার সময় SageMaker-এ ডায়নামিক ব্যাচিং ব্যবহার করার তুলনায় 10 গুণ বেশি এবং 1 বার দৃশ্যকল্পে 2.3 গুণ বেশি থ্রুপুট উন্নতি প্রদান করে।

উপসংহার

এই পোস্টে, আমরা কীভাবে LLMগুলি মেমরি ব্যবহার করে তা দেখেছি এবং ব্যাখ্যা করেছি যে কীভাবে ক্রমাগত ব্যাচিং সেজমেকারে একটি LMI কন্টেইনার ব্যবহার করে থ্রুপুটকে উন্নত করে। আমরা বেঞ্চমার্ক ফলাফল দেখিয়ে সেজমেকারে একটি LMI কন্টেইনার ব্যবহার করে Falcon-40B-এর জন্য ক্রমাগত ব্যাচিংয়ের সুবিধাগুলি প্রদর্শন করেছি। আপনি কোড খুঁজে পেতে পারেন গিটহুব রেপো.


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

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

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

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

অ্যামাজন সেজমেকারের সাথে ফ্যালকন মডেলগুলির কর্মক্ষমতা উন্নত করুন | আমাজন ওয়েব সার্ভিস প্লেটোব্লকচেইন ডেটা ইন্টেলিজেন্স। উল্লম্ব অনুসন্ধান. আ.অভি সন্ধানী এডব্লিউএস-এ সিনিয়র এআই/এমএল সলিউশন আর্কিটেক্টের পদে অধিষ্ঠিত, যেখানে তিনি গ্রাহকদের জেনারেটিভ এআই এবং এমএল সলিউশনের বিষয়ে প্রযুক্তিগত দক্ষতা এবং নির্দেশিকা প্রদানে বিশেষজ্ঞ। তার প্রাথমিক ফোকাস হল ডিজিটাল নেটিভ বিজনেসকে জেনারেটিভ এআই এবং এমএল প্রযুক্তির পূর্ণ সম্ভাবনা উপলব্ধি করতে সহায়তা করা, তাদের ব্যবসায়িক উদ্দেশ্যগুলি কার্যকরভাবে অর্জন করতে সক্ষম করা। তার পেশাগত প্রচেষ্টার বাইরে, অভি বুদ্ধিবৃত্তিক সাধনার জন্য একটি দৃঢ় আবেগ প্রদর্শন করে যেমন পড়া, সেইসাথে যোগব্যায়াম, ধ্যানের মতো শারীরিক এবং মানসিক সুস্থতাকে উন্নীত করে এমন ক্রিয়াকলাপে জড়িত।

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

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

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

অটো শাটডাউন লাইফসাইকেল কনফিগারেশন সহ সেজমেকার স্টুডিও সমর্থন করার জন্য শুধুমাত্র ভিপিসি মোডে Amazon SageMaker ডোমেন এবং Terraform এর সাথে SageMaker ক্যানভাস | আমাজন ওয়েব সার্ভিসেস

উত্স নোড: 1888314
সময় স্ট্যাম্প: সেপ্টেম্বর 11, 2023