بهبود عملکرد مدل‌های زبان مولد با درخواست خودسازگاری در Amazon Bedrock | خدمات وب آمازون

بهبود عملکرد مدل‌های زبان مولد با درخواست خودسازگاری در Amazon Bedrock | خدمات وب آمازون

مدل‌های زبان مولد در حل وظایف پردازش زبان طبیعی منطقی و تحلیلی (NLP) مهارت قابل‌توجهی نشان داده‌اند. علاوه بر این، استفاده از مهندسی سریع می تواند عملکرد آنها را به طور قابل توجهی افزایش دهد. مثلا، زنجیره ای از فکر (CoT) برای بهبود ظرفیت مدل برای مسائل پیچیده چند مرحله ای شناخته شده است. برای افزایش دقت در کارهایی که مستلزم استدلال هستند، الف خود سازگاری رویکرد تشویقی پیشنهاد شده است که در طول تولید زبان، حریص را با رمزگشایی تصادفی جایگزین می‌کند.

بستر آمازون یک سرویس کاملاً مدیریت شده است که انتخابی از مدل‌های پایه با کارایی بالا را از شرکت‌های پیشرو هوش مصنوعی و آمازون از طریق یک API به همراه مجموعه وسیعی از قابلیت‌ها برای ساخت ارائه می‌کند. هوش مصنوعی مولد برنامه های کاربردی با امنیت، حریم خصوصی و هوش مصنوعی مسئول. با استنتاج دسته ای API، می‌توانید از Amazon Bedrock برای استنتاج با مدل‌های پایه به صورت دسته‌ای استفاده کنید و پاسخ‌ها را کارآمدتر دریافت کنید. این پست نشان می‌دهد که چگونه می‌توان از طریق استنتاج دسته‌ای در Amazon Bedrock، دستورات خودسازگاری را پیاده‌سازی کرد تا عملکرد مدل را در وظایف محاسباتی و استدلال چند گزینه‌ای افزایش دهد.

بررسی اجمالی راه حل

انگیزه خودسازگاری مدل‌های زبان بر تولید پاسخ‌های متعددی است که در یک پاسخ نهایی جمع می‌شوند. بر خلاف رویکردهای تک نسلی مانند CoT، روش نمونه‌سازی و حاشیه‌سازی خودسازگاری طیفی از تکمیل‌های مدل را ایجاد می‌کند که منجر به راه‌حل سازگارتر می‌شود. تولید پاسخ های مختلف برای یک اعلان داده شده به دلیل استفاده از یک استراتژی رمزگشایی تصادفی و نه حریصانه امکان پذیر است.

شکل زیر نشان می دهد که چگونه خودسازگاری با CoT حریص تفاوت دارد زیرا مجموعه متنوعی از مسیرهای استدلالی را ایجاد می کند و آنها را برای ایجاد پاسخ نهایی جمع می کند.

تفاوت بین خود سازگاری و تحریک CoT.

استراتژی های رمزگشایی برای تولید متن

متن تولید شده توسط مدل‌های زبانی که فقط رمزگشا هستند، کلمه به کلمه باز می‌شود، و توکن بعدی بر اساس زمینه قبلی پیش‌بینی می‌شود. برای یک اعلان داده شده، مدل یک توزیع احتمال را محاسبه می‌کند که نشان‌دهنده احتمال ظاهر شدن هر نشانه بعدی در دنباله است. رمزگشایی شامل ترجمه این توزیع های احتمالی به متن واقعی است. تولید متن توسط مجموعه ای از پارامترهای استنتاج که اغلب فراپارامترهای خود روش رمزگشایی هستند. یک مثال این است درجه حرارت، که توزیع احتمال توکن بعدی را تعدیل می کند و بر تصادفی بودن خروجی مدل تأثیر می گذارد.

رمزگشایی حریصانه یک استراتژی رمزگشایی قطعی است که در هر مرحله نشانه ای را با بیشترین احتمال انتخاب می کند. اگرچه این رویکرد ساده و کارآمد است، اما خطر سقوط در الگوهای تکراری را دارد، زیرا فضای احتمال گسترده‌تر را نادیده می‌گیرد. تنظیم پارامتر دما روی 0 در زمان استنتاج اساساً معادل اجرای رمزگشایی حریصانه است.

نمونه برداری تصادفی بودن را با انتخاب تصادفی هر توکن بعدی بر اساس توزیع احتمال پیش بینی شده به فرآیند رمزگشایی معرفی می کند. این تصادفی بودن منجر به تنوع خروجی بیشتر می شود. رمزگشایی تصادفی در گرفتن تنوع خروجی های بالقوه ماهرتر است و اغلب پاسخ های تخیلی بیشتری را به همراه دارد. مقادیر دمای بالاتر نوسانات بیشتری را ایجاد می کند و خلاقیت پاسخ مدل را افزایش می دهد.

تکنیک های تشویقی: CoT و خود سازگاری

توانایی استدلال مدل های زبانی را می توان از طریق مهندسی سریع افزایش داد. به طور خاص، CoT نشان داده شده است استدلال کردن در وظایف پیچیده NLP یکی از راه های پیاده سازی الف ضربه صفر CoT از طریق تقویت سریع با دستورالعمل "گام به گام فکر کنید" است. دیگری این است که مدل را در معرض نمونه هایی از مراحل استدلال میانی قرار دهیم چند شات تحریک روش. هر دو سناریو معمولاً از رمزگشایی حریصانه استفاده می کنند. CoT منجر به افزایش عملکرد قابل توجهی در مقایسه با دستورات ساده در مورد وظایف محاسباتی، عقل سلیم و استدلال نمادین می شود.

تحریک خودسازگاری بر این فرض استوار است که معرفی تنوع در فرآیند استدلال می تواند برای کمک به همگرایی مدل ها در پاسخ صحیح مفید باشد. این تکنیک از رمزگشایی تصادفی برای دستیابی به این هدف در سه مرحله استفاده می کند:

  1. مدل زبان را با نمونه‌های CoT برای استخراج استدلال راهنمایی کنید.
  2. رمزگشایی حریصانه را با یک استراتژی نمونه برداری جایگزین کنید تا مجموعه متنوعی از مسیرهای استدلال ایجاد کنید.
  3. نتایج را جمع آوری کنید تا سازگارترین پاسخ را در مجموعه پاسخ پیدا کنید.

نشان داده شده است که خودسازگاری در معیارهای رایج محاسباتی و استدلال عقل سلیم از درخواست های CoT بهتر عمل می کند. محدودیت این رویکرد هزینه محاسباتی بزرگتر آن است.

این پست نشان می‌دهد که چگونه خودسازگاری باعث افزایش عملکرد مدل‌های زبان مولد در دو کار استدلالی NLP می‌شود: حل مسئله حسابی و پاسخ‌گویی به سؤالات دامنه‌ای چندگزینه‌ای. ما رویکرد را با استفاده از استنتاج دسته ای در آمازون بستر نشان می دهیم:

  • ما به Amazon Bedrock Python SDK در JupyterLab روی یک دسترسی داریم آمازون SageMaker نمونه نوت بوک
  • برای استدلال حسابی، ما درخواست می کنیم فرماندهی Cohere بر روی مجموعه داده GSM8K مسائل ریاضی مدرسه ابتدایی.
  • برای استدلال چند گزینه ای، ما را درخواست می کنیم AI21 Labs Jurassic-2 Mid در نمونه کوچکی از سؤالات از آزمون معمار راه حل های خبره AWS - Associate.

پیش نیازها

این راهنما پیش نیازهای زیر را در نظر می گیرد:

دسترسی مدل را در Amazon Bedrock مدیریت کنید

هزینه تخمینی اجرای کد نشان داده شده در این پست 100 دلار است، با فرض اینکه شما یک بار درخواست خودسازگاری را با 30 مسیر استدلالی با استفاده از یک مقدار برای نمونه برداری مبتنی بر دما اجرا کنید.

مجموعه داده برای بررسی قابلیت های استدلال حسابی

GSM8K مجموعه داده ای از مسائل ریاضی کلاسی که توسط انسان جمع آوری شده است، دارای تنوع زبانی بالا است. حل هر مسئله 2 تا 8 مرحله طول می کشد و نیاز به انجام دنباله ای از محاسبات ابتدایی با عملیات حسابی اساسی دارد. این داده‌ها معمولاً برای محک زدن قابلیت‌های استدلال حسابی چند مرحله‌ای مدل‌های زبان مولد استفاده می‌شوند. این مجموعه قطار GSM8K شامل 7,473 رکورد است. نمونه زیر است:

{"question": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May?", "answer": "Natalia sold 48/2 = <<48/2=24>>24 clips in May.nNatalia sold 48+24 = <<48+24=72>>72 clips altogether in April and May.n#### 72"}

برای اجرای استنباط دسته ای با Amazon Bedrock تنظیم کنید

استنتاج دسته‌ای به شما امکان می‌دهد تا چندین تماس استنتاج را به Amazon Bedrock به صورت ناهمزمان اجرا کنید و عملکرد استنتاج مدل را در مجموعه داده‌های بزرگ بهبود بخشید. این سرویس از زمان نوشتن این مقاله در پیش نمایش است و فقط از طریق API در دسترس است. رجوع شود به استنتاج دسته ای را اجرا کنید برای دسترسی به API های استنتاج دسته ای از طریق SDK های سفارشی.

بعد از اینکه دانلود کردید و از حالت فشرده خارج کردید پایتون SDK در یک نمونه نوت بوک SageMaker، می توانید آن را با اجرای کد زیر در یک سلول نوت بوک Jupyter نصب کنید:

# Install preview SDK packages
!pip install -q $(ls ./bedrock-python-sdk-reinvent/botocore-*.whl | head -1)
!pip install -q $(ls ./bedrock-python-sdk-reinvent/boto3-*.whl | head -1)

فرمت و آپلود داده های ورودی در آمازون S3

داده‌های ورودی برای استنتاج دسته‌ای باید در قالب JSONL آماده شود recordId و modelInput کلیدها دومی باید با میدان بدنه مدلی که در Amazon Bedrock فراخوانی می شود مطابقت داشته باشد. به طور خاص، برخی از پشتیبانی از پارامترهای استنتاج برای Cohere Command هستند temperature برای تصادفی بودن، max_tokens برای طول خروجی، و num_generations برای ایجاد پاسخ های متعدد، که همه آنها همراه با ارسال می شوند prompt as modelInput:

data = [
    {
        "recordId": "1",
        "modelInput": {
            "prompt": prompt,
            "temperature": temperature,
            "max_tokens": max_tokens,
            "num_generations": n,
        },
    },
    ...,
]

دیدن پارامترهای استنتاج برای مدل های پی برای جزئیات بیشتر، از جمله ارائه دهندگان مدل دیگر.

آزمایش‌های ما روی استدلال حسابی در تنظیمات چند شات بدون سفارشی‌سازی یا تنظیم دقیق فرمان Cohere انجام می‌شود. ما از همان مجموعه هشت نمونه چند عکس از زنجیره فکر استفاده می کنیم (جدول 20) و خود سازگاری (جدول 17) اوراق. درخواست‌ها با الحاق نمونه‌ها به هر سؤال از مجموعه قطار GSM8K ایجاد می‌شوند.

تنظیم کردیم max_tokens به 512 و num_generations به 5، حداکثر مجاز توسط Cohere Command. برای رمزگشایی حریصانه، تنظیم کردیم temperature به 0 و برای ثبات خود، ما سه آزمایش را در دماهای 0.5، 0.7، و 1 اجرا می کنیم. هر تنظیم داده های ورودی متفاوتی را با توجه به مقادیر دمای مربوطه به دست می دهد. داده ها به صورت JSONL فرمت شده و در آمازون S3 ذخیره می شوند.

# Set up S3 client
session = boto3.Session()
s3 = session.client("s3")

# Create S3 bucket with unique name to store input/output data
suffix = str(uuid.uuid4())[:8]
bucket = f"bedrock-self-consistency-{suffix}"
s3.create_bucket(
    Bucket=bucket, CreateBucketConfiguration={"LocationConstraint": session.region_name}
)

# Process data and output to new lines as JSONL
input_key = f"gsm8k/T{temperature}/input.jsonl"
s3_data = ""
for row in data:
    s3_data += json.dumps(row) + "n"
s3.put_object(Body=s3_data, Bucket=bucket, Key=input_key)

کارهای استنتاج دسته ای را در Amazon Bedrock ایجاد و اجرا کنید

ایجاد شغل استنتاج دسته ای به مشتری بستر آمازون نیاز دارد. ما مسیرهای ورودی و خروجی S3 را مشخص می کنیم و به هر کار فراخوانی یک نام منحصر به فرد می دهیم:

# Create Bedrock client							    
bedrock = boto3.client("bedrock")

# Input and output config						     
input_config = {"s3InputDataConfig": {"s3Uri": f"s3://{bucket}/{input_key}"}}
output_config = {"s3OutputDataConfig": {"s3Uri": f"s3://{bucket}/{output_key}"}}

# Create a unique job name
suffix = str(uuid.uuid4())[:8] 
job_name = f"command-batch-T{temperature}-{suffix}"

مشاغل هستند ایجاد شده با ارسال نقش IAM، شناسه مدل، نام شغل، و پیکربندی ورودی/خروجی به عنوان پارامترها به Amazon Bedrock API:

response = bedrock.create_model_invocation_job(
    roleArn=f"arn:aws:iam::{account_id}:role/BedrockBatchInferenceRole",
    modelId="cohere.command-text-v14",
    jobName=job_name,
    inputDataConfig=input_config,
    outputDataConfig=output_config,
)
job_arn = response["jobArn"]

لیست, نظارت برو متوقف کردن کارهای استنتاج دسته‌ای توسط فراخوان‌های API مربوطه پشتیبانی می‌شوند. در ایجاد، مشاغل ابتدا به عنوان ظاهر می شوند Submitted، سپس به عنوان InProgress، و در نهایت به عنوان Stopped, Failed، یا Completed.

# Get job details
job_details = bedrock.get_model_invocation_job(jobIdentifier=job_arn)

اگر کارها با موفقیت کامل شوند، محتوای تولید شده را می توان از آمازون S3 با استفاده از مکان خروجی منحصر به فرد آن بازیابی کرد.

# Get the output file key
s3_prefix = f"s3://{bucket}/"
output_path = job_details["outputDataConfig"]["s3OutputDataConfig"]["s3Uri"].replace(
    s3_prefix, ""
)
output_folder = job_details["jobArn"].split("/")[1]
output_file = (
    f'{job_details["inputDataConfig"]["s3InputDataConfig"]["s3Uri"].split("/")[-1]}.out'
)
result_key = f"{output_path}{output_folder}/{output_file}"

# Get output data
obj = s3.get_object(Bucket=bucket, Key=result_key)
content = obj["Body"].read().decode("utf-8").strip().split("n")

# Show answer to the first question
print(json.loads(content[0])["modelOutput"]["generations"][0]["text"])

[Out]: 'Natalia sold 48 * 1/2 = 24 clips less in May. This means she sold 48 + 24 = 72 clips in April and May. The answer is 72.'

خود سازگاری دقت مدل را در کارهای حسابی افزایش می دهد

درخواست خودسازگاری Cohere Command از نظر دقت در مجموعه داده GSM8K از خط پایه CoT حریصانه بهتر عمل می کند. برای ثبات خود، ما 30 مسیر استدلال مستقل را در سه دمای مختلف نمونه‌برداری می‌کنیم topP و topK تنظیم به آنها مقادیر پیش فرض. راه‌حل‌های نهایی با انتخاب سازگارترین رخداد از طریق رأی اکثریت جمع‌آوری می‌شوند. در صورت تساوی، به طور تصادفی یکی از پاسخ های اکثریت را انتخاب می کنیم. ما دقت و مقادیر انحراف استاندارد را با میانگین بیش از 100 اجرا محاسبه می‌کنیم.

شکل زیر دقت مجموعه داده‌های GSM8K از Cohere Command را نشان می‌دهد که با CoT حریص (آبی) و خودسازگاری در مقادیر دمایی 0.5 (زرد)، 0.7 (سبز) و 1.0 (نارنجی) به عنوان تابعی از تعداد نمونه‌برداری شده است. مسیرهای استدلال

دقت فرمان Cohere با استفاده از خودسازگاری در مقابل درخواست CoT.

شکل قبل نشان می‌دهد که وقتی تعداد مسیرهای نمونه‌برداری شده کمتر از سه باشد، خودسازگاری دقت حسابی را نسبت به CoT حریص افزایش می‌دهد. عملکرد به طور مداوم با مسیرهای استدلال بیشتر افزایش می یابد و اهمیت معرفی تنوع در نسل فکر را تأیید می کند. Cohere Command مجموعه سوالات GSM8K را با دقت 51.7% در صورت درخواست CoT در مقابل 68% با 30 مسیر استدلال خودسازگار در T=1.0 حل می کند. هر سه مقدار دمای بررسی شده نتایج مشابهی دارند، با دمای پایین تر در مسیرهای نمونه برداری کمتر عملکرد نسبتاً بیشتری دارند.

ملاحظات عملی در مورد بهره وری و هزینه

خود سازگاری با افزایش زمان پاسخ و هزینه متحمل شده هنگام تولید خروجی های متعدد در هر درخواست محدود می شود. به عنوان یک مثال عملی، استنتاج دسته ای برای تولید حریص با فرمان Cohere روی 7,473 رکورد GSM8K در کمتر از 20 دقیقه به پایان رسید. این کار 5.5 میلیون توکن به عنوان ورودی گرفت و 630,000 توکن خروجی تولید کرد. در حال حاضر قیمت استنتاج Amazon Bedrock، کل هزینه انجام شده حدود 9.50 دلار بود.

برای سازگاری با فرمان Cohere، از پارامتر استنتاج استفاده می کنیم num_generations برای ایجاد چندین تکمیل در هر اعلان. از زمان نگارش این مقاله، Amazon Bedrock حداکثر پنج نسل و سه نسل همزمان را مجاز می‌کند Submitted کارهای استنتاج دسته ای مشاغل به InProgress وضعیت به صورت متوالی، بنابراین نمونه برداری بیش از پنج مسیر به فراخوانی های متعدد نیاز دارد.

شکل زیر زمان اجرا برای Command Cohere در مجموعه داده GSM8K را نشان می دهد. کل زمان اجرا در محور x و زمان اجرا در هر مسیر استدلال نمونه برداری شده در محور y نشان داده می شود. تولید حریص در کوتاه ترین زمان اجرا می شود، اما هزینه زمانی بالاتری را در هر مسیر نمونه گیری متحمل می شود.

زمان اجرا برای فرماندهی Cohere

نسل حریص در کمتر از 20 دقیقه برای مجموعه کامل GSM8K تکمیل می شود و یک مسیر استدلال منحصر به فرد را نمونه برداری می کند. خودسازگاری با پنج نمونه به حدود 50 درصد بیشتر برای تکمیل نیاز دارد و حدود 14.50 دلار هزینه دارد، اما در این مدت پنج مسیر (بیش از 500 درصد) ایجاد می کند. کل زمان اجرا و هزینه با هر پنج مسیر نمونه برداری اضافی، به تدریج افزایش می یابد. تجزیه و تحلیل هزینه-فایده نشان می دهد که 1-2 کار استنتاج دسته ای با 5-10 مسیر نمونه برداری شده، تنظیم توصیه شده برای اجرای عملی خودسازگاری است. این عملکرد مدل را بهبود می بخشد در حالی که هزینه و تأخیر را کاهش می دهد.

خود سازگاری عملکرد مدل را فراتر از استدلال حسابی افزایش می دهد

یک سوال مهم برای اثبات مناسب بودن انگیزه خودسازگاری این است که آیا این روش در کارهای بیشتر NLP و مدل‌های زبانی موفق است یا خیر. به عنوان یک فرمت برای یک مورد استفاده مرتبط با آمازون، ما یک تجزیه و تحلیل در اندازه کوچک روی نمونه سوالات از سایت انجام می دهیم AWS Solutions Architect Associate گواهینامه. این یک آزمون چند گزینه ای در زمینه فناوری و خدمات AWS است که به دانش دامنه و توانایی استدلال و تصمیم گیری از بین چندین گزینه نیاز دارد.

ما یک مجموعه داده از SAA-C01 و SAA-C03 نمونه سوالات امتحانی از 20 سؤال موجود، ما از 4 سؤال اول به عنوان نمونه های چند سؤالی استفاده می کنیم و از مدل می خواهیم به 16 سؤال باقی مانده پاسخ دهد. این بار، استنتاج را با مدل Mid AI21 Labs Jurassic-2 اجرا می کنیم و حداکثر 10 مسیر استدلال را در دما 0.7 نتایج نشان می‌دهد که خودسازگاری عملکرد را افزایش می‌دهد: اگرچه CoT حریص 11 پاسخ صحیح ایجاد می‌کند، خود سازگاری در 2 پاسخ دیگر موفق است.

جدول زیر نتایج دقت را برای 5 و 10 مسیر نمونه برداری شده با میانگین بیش از 100 اجرا نشان می دهد.

. رمزگشایی حریصانه T = 0.7
# مسیرهای نمونه برداری شده: 5 68.6 74.1 0.7 ±
# مسیرهای نمونه برداری شده: 10 68.6 78.9 ± 0.3

در جدول زیر، دو سؤال امتحانی را ارائه می‌دهیم که توسط CoT حریص به اشتباه پاسخ داده می‌شوند، در حالی که سازگاری با خود موفقیت‌آمیز است، و در هر مورد ردپای استدلال صحیح (سبز) یا نادرست (قرمز) که مدل را به تولید پاسخ‌های صحیح یا نادرست سوق داده است، برجسته می‌کنیم. اگرچه همه مسیرهای نمونه‌برداری شده توسط خودسازگاری درست نیستند، اما با افزایش تعداد مسیرهای نمونه‌برداری شده، اکثریت آنها روی پاسخ واقعی همگرا می‌شوند. ما مشاهده می‌کنیم که 5 تا 10 مسیر معمولاً برای بهبود نتایج طمع‌آمیز کافی است، با کاهش بازده از نظر کارایی گذشته از این مقادیر.

سوال

یک برنامه وب به مشتریان اجازه می دهد تا سفارشات را در یک سطل S3 آپلود کنند. رویدادهای آمازون S3 حاصل یک تابع Lambda را راه اندازی می کند که پیامی را در صف SQS درج می کند. یک نمونه EC2 پیام‌ها را از صف می‌خواند، آنها را پردازش می‌کند و در یک جدول DynamoDB که با شناسه سفارش منحصربه‌فرد تقسیم شده است، ذخیره می‌کند. انتظار می رود ترافیک ماه آینده تا 10 برابر افزایش یابد و یک معمار Solutions در حال بررسی معماری برای مشکلات مقیاس بندی احتمالی است.

کدام مؤلفه به احتمال زیاد به معماری مجدد نیاز دارد تا بتواند ترافیک جدید را در مقیاس قرار دهد؟

الف. تابع لامبدا
ب. صف SQS
ج. نمونه EC2
D. جدول DynamoDB

برنامه ای که روی AWS اجرا می شود از استقرار خوشه Amazon Aurora Multi-AZ DB برای پایگاه داده خود استفاده می کند. هنگام ارزیابی معیارهای عملکرد، یک معمار راه حل متوجه شد که خواندن پایگاه داده باعث I/O بالا می شود و به درخواست های نوشتن در برابر پایگاه داده تاخیر می افزاید.

معمار راه حل ها برای جدا کردن درخواست های خواندن از درخواست های نوشتن چه باید بکند؟

الف. ذخیره خواندنی را در پایگاه داده Aurora فعال کنید.
ب. برنامه را برای خواندن از حالت آماده به کار Multi-AZ به روز کنید.
ج. یک ماکت Aurora ایجاد کنید و برنامه را برای استفاده از نقاط پایانی مناسب تغییر دهید.
D. یک پایگاه داده Aurora دوم ایجاد کنید و آن را به عنوان یک نسخه خوانده شده به پایگاه داده اصلی پیوند دهید.

پاسخ صحیح C - یک نمونه EC2 مقیاس نمی شود و یک نقطه شکست در معماری است. راه حل بسیار بهتر این است که نمونه های EC2 را در یک گروه مقیاس خودکار در 2 منطقه در دسترس داشته باشیم که پیام ها را از صف بخواند. پاسخ‌های دیگر همگی سرویس‌های مدیریت‌شده‌ای هستند که می‌توان آن‌ها را برای مقیاس‌بندی یا مقیاس‌بندی خودکار پیکربندی کرد. C - Aurora Replicas راهی برای تخلیه ترافیک خوانده شده ارائه می دهد. Aurora Replicas همان فضای ذخیره‌سازی زیرین پایگاه داده اصلی را به اشتراک می‌گذارد، بنابراین زمان تاخیر معمولاً بسیار کم است. Aurora Replicas نقاط پایانی خود را دارد، بنابراین برنامه باید برای هدایت ترافیک خواندن به نقاط پایانی جدید پیکربندی شود.
رمزگشایی حریصانه مقیاس گذاری مستقیم نمونه EC2 ممکن است امکان پذیر نباشد، زیرا ممکن است امکان تغییر اندازه نمونه وجود نداشته باشد. ممکن است مقیاس کردن تابع لامبدا کافی نباشد، زیرا توابع لامبدا دارای محدودیت 6 گیگابایتی برای تخصیص حافظه هستند. مقیاس بندی صف SQS ممکن است کافی نباشد، زیرا SQS دارای محدودیت 10,000 پیام است. جداول DynamoDB را می توان با تهیه واحدهای ظرفیت بیشتر مقیاس پذیر کرد. پاسخ صحیح D است. تغییر برنامه برای خواندن از حالت آماده به کار Multi-AZ (گزینه B) بهترین رویکرد است. نمونه آماده به کار به طور ناهمزمان از نمونه اولیه تکرار می شود، بنابراین عملیات خواندن با عملیات نوشتن تداخلی نخواهد داشت. فعال کردن حافظه پنهان خواندن از طریق (گزینه A) یا ایجاد یک ماکت Aurora (گزینه C) مشکل مناقشه I/O را حل نخواهد کرد. ایجاد یک پایگاه داده دوم Aurora و پیوند دادن آن به عنوان یک نسخه خواندنی (گزینه D) مشکل مناقشه I/O را نیز حل نخواهد کرد. پاسخ صحیح ب است.
نمونه مسیر شماره 1 مقیاس بندی نمونه EC2 تا 10 برابر اندازه فعلی آن ممکن است امکان پذیر نباشد، چه از نظر هزینه و چه از منظر عملکرد. این به یک نمونه بزرگتر نیاز دارد که می تواند گران باشد. یک رویکرد مقرون‌به‌صرفه‌تر ممکن است استفاده از مجموعه‌ای از نمونه‌های کوچک‌تر (به عنوان مثال، Auto Scaling Group) برای به اشتراک گذاشتن بار باشد. در این مورد، نمونه EC2 احتمالاً نیاز به بازسازی مجدد دارد. پاسخ صحیح c است. تغییر برنامه برای استفاده از نقاط پایانی مناسب یک راه حل عملی نیست زیرا نیاز به تغییر در کد برنامه دارد. پاسخ صحیح C است: یک Replica Aurora ایجاد کنید و برنامه را برای استفاده از نقاط پایانی مناسب تغییر دهید.
نمونه مسیر شماره 2 مقیاس بندی یک نمونه EC2 دشوارتر و مشکل سازتر از مقیاس بندی سایر اجزای سرویس است. Amazon SQS، Lambda، و DynamoDB همگی می توانند به صورت خودکار مقیاس شوند برای مقابله با افزایش بار پاسخ صحیح c است.

(C) یک ماکت Aurora ایجاد کنید و برنامه را برای استفاده از نقاط پایانی مناسب تغییر دهید.

با پیکربندی یک Aurora Replica، می توانید ترافیک خواندن را از ترافیک نوشتن جدا کنید. Aurora Replicas از URL های نقطه پایانی مختلفی استفاده می کند، به شما این امکان را می دهد تا ترافیک خواندنی را به جای پایگاه داده اصلی به ماکت هدایت کنید. Replica می تواند درخواست های خواندن را به موازات درخواست های نوشتن در پایگاه داده اولیه پردازش کند، I/O و تاخیر را کاهش می دهد.

پاک کردن

استنتاج دسته‌ای در حال اجرا در بستر آمازون مشمول هزینه‌هایی بر اساس قیمت‌گذاری پایه آمازون است. پس از تکمیل مراحل، نمونه نوت بوک SageMaker خود را حذف کنید و تمام داده ها را از سطل های S3 خود حذف کنید تا از پرداخت هزینه های بعدی جلوگیری کنید.

ملاحظات

اگرچه راه‌حل نشان‌داده‌شده عملکرد بهتری از مدل‌های زبانی را هنگامی که با خود سازگاری درخواست می‌شود، نشان می‌دهد، مهم است که توجه داشته باشید که راه‌حل برای تولید آماده نیست. قبل از اینکه به تولید بپردازید، باید این اثبات مفهوم را با اجرای خود تطبیق دهید و الزامات زیر را در نظر داشته باشید:

  • محدودیت دسترسی به API ها و پایگاه های داده برای جلوگیری از استفاده غیرمجاز.
  • پایبندی به بهترین شیوه های امنیتی AWS در مورد دسترسی نقش IAM و گروه های امنیتی.
  • اعتبارسنجی و پاکسازی ورودی کاربر برای جلوگیری از حملات تزریق سریع.
  • نظارت و ثبت فرآیندهای آغاز شده برای فعال کردن آزمایش و ممیزی.

نتیجه

این پست نشان می‌دهد که انگیزه‌های خودسازگاری عملکرد مدل‌های زبان مولد را در کارهای پیچیده NLP که به مهارت‌های حسابی و منطقی چندگزینه‌ای نیاز دارند، افزایش می‌دهد. خود سازگاری از رمزگشایی تصادفی مبتنی بر دما برای ایجاد مسیرهای استدلال مختلف استفاده می کند. این توانایی مدل را برای برانگیختن افکار متنوع و مفید برای رسیدن به پاسخ های صحیح افزایش می دهد.

با استنتاج دسته‌ای Amazon Bedrock، از مدل زبانی Cohere Command خواسته می‌شود تا پاسخ‌های خودسازگاری برای مجموعه‌ای از مسائل حسابی ایجاد کند. دقت از 51.7٪ با رمزگشایی حریصانه به 68٪ با نمونه برداری از 30 مسیر استدلال در T = 1.0 به 7.5٪ بهبود می یابد. نمونه برداری از پنج مسیر قبلاً دقت را 21 درصد افزایش می دهد. این رویکرد به سایر مدل‌های زبان و وظایف استدلالی قابل انتقال است، همانطور که نتایج مدل AI2 Labs Jurassic-5 Mid در آزمون گواهینامه AWS نشان داده است. در یک مجموعه سؤال با اندازه کوچک، خودسازگاری با پنج مسیر نمونه‌برداری شده، دقت را XNUMX درصد نسبت به CoT حریص افزایش می‌دهد.

ما شما را تشویق می‌کنیم تا با استفاده از مدل‌های زبانی مولد، درخواست‌های خودسازگاری را برای عملکرد بهتر در برنامه‌های کاربردی خود پیاده‌سازی کنید. بیشتر بدانید فرماندهی Cohere و AI21 Labs Jurassic مدل های موجود در Amazon Bedrock. برای اطلاعات بیشتر در مورد استنباط دسته ای، مراجعه کنید استنتاج دسته ای را اجرا کنید.

سپاسگزاریها

نویسنده از داوران فنی امین تاجگردون و پاتریک مک سوینی برای بازخورد مفید تشکر می کند.


درباره نویسنده

Enhance performance of generative language models with self-consistency prompting on Amazon Bedrock | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

لوسیا سانتاماریا Sr. یک دانشمند کاربردی در دانشگاه ام ال آمازون است، جایی که او بر افزایش سطح شایستگی ML در سراسر شرکت از طریق آموزش عملی تمرکز کرده است. لوسیا دارای مدرک دکترا در اخترفیزیک است و علاقه زیادی به دموکراتیک کردن دسترسی به دانش و ابزارهای فناوری دارد.

تمبر زمان:

بیشتر از آموزش ماشین AWS