
بعد از دکمه توقف: معنای لغو در عاملهای هوش مصنوعی
راهنمایی عملی برای انتشار لغو، اثبات توقف کار و سازگارکردن اثرهایی که پس از تغییر نیت کاربر همچنان در سامانه باقی میمانند.
ادامه مطلبتیم ژرف ایآی

دو عامل عملیات، درباره یک سرویس تولیدی دو هشدار متفاوت دریافت میکنند. عامل اول تصمیم میگیرد سرویس را به آخرین انتشار سالم برگرداند. عامل دوم اصلاحیهای فوری را اعتبارسنجی میکند و میخواهد آن را به تولید ببرد. هر دو عامل توانمندند، هر دو مجوز معتبر ابزار دارند و هر دو نسخهای ظاهراً درست از وضعیت استقرار را خواندهاند. اگر تقریباً همزمان عمل کنند، ممکن است بستهای که دیرتر میرسد—نه تصمیمی که بهتر است—نسخه نهایی سرویس را تعیین کند.
این یک خرابی استدلالی نیست؛ خرابی همزمانی است. مدل میتواند برنامه خود را بینقص توضیح دهد، اما روی وضعیتی بنویسد که پس از آغاز برنامه تغییر کرده است. ممکن است اجاره یک کارگر کند منقضی شود، اما خود کارگر همچنان ادامه دهد. شاید رهبر تازهای جایگزین شود، در حالی که فرمان دیررس رهبر قبلی هنوز در شبکه است. در نتیجه پایگاه داده، شیء، تیکت، شاخه گیت، صورتحساب، رزرو یا کنترلگر فیزیکی میتواند دو اقدام جداگانه معتبر اما در کنار هم ناسازگار دریافت کند.
تصمیم عملیاتی این است: برای هر منبع مشترک باید مالکیت را بخشبندی کرد، نوشتن را به یک نویسنده سپرد، نسخه را با compare-and-swap سنجید، تغییر را در تراکنش ثبت کرد، از اجاره همراه توکن حصارکشی استفاده کرد، یا بهجای نوشتن مستقیم پیشنهادهای قابلادغام ساخت؟ پاسخ باید در معماری برنامه ثبت شود؛ نه اینکه مدل زبانی پس از آغاز رقابت آن را بداهه بسازد.
تلاش دوباره یک قصد منطقی را تکرار میکند چون نتیجه آن نامعلوم است. همزمانی یعنی دو یا چند قصد زنده روی یک قاعده مشترک با هم تداخل دارند. راهنمای تلاش دوباره و تکرارپذیری امن نمیگذارد یک قصد به چند اثر تبدیل شود، اما تعیین نمیکند از میان دو قصد متفاوت کدام باید برنده شود.
لغو نیز مسئله دیگری است. درخواست توقف، قصد آینده را تغییر میدهد؛ بااینحال ممکن است کارگر قدیمی آنقدر ادامه دهد که یک نوشتن دیررس بفرستد. راهنمای معنای لغو توضیح میدهد چرا از دست رفتن علاقه کاربر یا پایان اجاره، اثبات توقف کامل نیست. کنترل همزمانی باعث میشود مقصد، عملی را که اختیار یا وضعیت مورد انتظارش دیگر تازه نیست رد کند.
سه ادعا باید جدا بماند:
تنها ادعای سوم مسیر نویسنده منقضی را میبندد. قفل توزیعشدهای که مقصد هرگز آن را بررسی نمیکند، یک توافق مشورتی است نه مرز اجرایی.
HTTP از قبل یک ابزار مفید برای کنترل خوشبینانه همزمانی دارد. RFC 9110 سرآیند If-Match را برای درخواستهای تغییردهنده وضعیت تعریف میکند: سرور مبدأ پیش از اجرای روش، برچسب موجودیت قوی را میسنجد و معمولاً اگر نمایش منبع عوض شده باشد پاسخ 412 Precondition Failed میدهد. استاندارد این رفتار را راهی برای جلوگیری از «بهروزرسانی گمشده» میداند. استاندارد نمیگوید گردش کار هوش مصنوعی تعارض را چگونه حل کند؛ اما بهجای بازنویسی خاموش، یک امتناع صادقانه تحویل میدهد.
راهنمای همزمانی Amazon DynamoDB میان کنترل نسخه خوشبینانه برای رقابت کم، تراکنش برای تغییر اتمی چند قلم و قفل مبتنی بر اجاره و ضربان قلب برای هماهنگی طولانی تمایز میگذارد. همین راهنما هشدار میدهد که جدولهای سراسری از سازوکار «آخرین نویسنده برنده است» استفاده میکنند؛ بنابراین الگوی نسخه در چند ناحیه همان حفاظت را ایجاد نمیکند. قرارداد تکثیر مخزن داده بهاندازه کدی که پیرامون آن نوشتهایم اهمیت دارد.
در سطح پایگاه داده، مستندات جداسازی تراکنش PostgreSQL 18 میگوید اثر تراکنشهای Serializable که با موفقیت ثبت شدهاند با اجرای یکییکی آنها سازگار است. وقتی PostgreSQL ناهنجاری ترتیبپذیری را تشخیص میدهد، برنامه باید کل تراکنش را دوباره اجرا کند. خواندن داده، یک دقیقه گفتوگو با مدل و سپس باز کردن تراکنشی تازه، نمای اولیه را حفظ نمیکند؛ خواندن و نوشتن حیاتی باید در همان مرز تراکنش باشد.
سامانههای هماهنگی، مالکیت طولانیتر را پوشش میدهند. اجارههای Kubernetes برای ضربان قلب گره و انتخاب رهبر به کار میروند تا یک نمونه فعال کار کنترلی را انجام دهد و همتایان آماده جانشینی باشند. دستور پخت قفل در Apache ZooKeeper از گرههای موقت ترتیبی استفاده میکند، فقط گره قبلی را زیر نظر میگیرد تا ازدحام بیدارباش رخ ندهد و یک GUID میافزاید تا اگر پاسخ ساخت گم شد، مشتری بتواند بفهمد عملیات واقعاً موفق شده است یا نه.
این سازوکارها در انتخاب مالک کمک میکنند، اما بهتنهایی مانع رسیدن دیرهنگام مالک قبلی به یک مقصد بیرونی نمیشوند. مقاله اصلی گوگل درباره سرویس قفل Chubby حلقه مفقود را روشن میکند: دارنده قفل میتواند sequencer حاوی نسل قفل را به سرور مقصد بفرستد و سرور sequencer نامعتبر یا قدیمیتر را رد کند. این همان الگوی حصارکشی است. مالکیت به مقداری تبدیل میشود که مقصد اثر میتواند مقایسه کند، نه صرفاً باوری در ذهن کارگر.
ذخیرهسازی شیء نیز همین اصل را بدون استفاده از واژه قفل ارائه میکند. پیششرطهای درخواست Google Cloud Storage اجازه میدهند نوشتن یا حذف، به نسل دقیق شیء مشروط شود. در این صورت حذف دیررسی که برای نسل قدیمی صادر شده، شکست میخورد و شیء تازهای را که همان نام را دارد پاک نمیکند. پیششرط، عمل را به همان نمونهای از شیء میبندد که فراخواننده واقعاً دیده است.
اینها رفتارهای تأییدشده پروتکلها هستند. مدل عملیاتی ادامه مقاله، تحلیل ژرف بر پایه ترکیب آنها برای سامانههای هوش مصنوعی ابزارمحور است.
قرار نیست همهچیز را داخل یک قفل توزیعشده بگذاریم. ابتدا منبع، قاعده، الگوی رقابت و پیامد را نامگذاری کنید.
| قرارداد | چه زمانی مناسب است | قاعده ثبت | بدهبستان اصلی |
|---|---|---|---|
| بخشبندی مالکیت | کار با مستأجر، حساب، سند، ناحیه یا مصنوع تغییرناپذیر جدا میشود | فقط مالک بخش حق نوشتن دارد | توازن دوباره و کار چندبخشی دشوارتر است |
| یک نویسنده یا صف | ترتیب مهم و ظرفیت محدود است | یک ترتیبدهنده قصدها را به ترتیب اعلامشده ثبت میکند | تأخیر صف و دسترسپذیری نویسنده |
| مقایسه و تعویض | تعارض کم و نسخه یک منبع نماینده قاعده است | فقط اگر expected_version == current_version باشد ثبت کن | تعارض به بازخوانی و برنامهریزی تازه نیاز دارد |
| تراکنش Serializable | چند خواندن و نوشتن پایگاه داده باید اتمی دیده شوند | همه تغییرات حیاتی ثبت یا همگی لغو میشوند | تلاش دوباره، رقابت و دامنه تراکنش |
| اجاره همراه حصارکشی | کار طولانی است یا به سامانه بیرونی میرسد | مقصد فقط توکنی تازهتر از همه توکنهای پذیرفتهشده را قبول میکند | همه مسیرهای اثر باید توکن را اجرا کنند |
| پیشنهاد و ادغام | خروجی میتواند تا زمان بازبینی شاخه، پیشنویس، وصله یا مجموعه بماند | یک دروازه قطعی یا انسانی ادغام را انجام میدهد | خودکارسازی مستقیم دیرتر میشود |
بخشبندی معمولاً کمهزینهترین پاسخ امن است؛ کارگر حساب الف نباید با کارگر حساب ب رقابت کند. یک نویسنده وقتی مناسب است که استقرار، دفتر کل، برنامه زمانی یا موجودی محدود فقط یک ترتیب معنادار دارد. مقایسه و تعویض برای عملیات کوتاه خواندن-تغییر-نوشتن مناسب است. تراکنش برای قواعدی مناسب است که در یک مرز تراکنشی جا میشوند. اجاره همراه حصارکشی برای کاری است که نمیتواند در تراکنش پایگاه داده باقی بماند. پیشنهاد و ادغام نیز زمانی پاسخ امن است که حل خودکار تعارض، معنای تغییرها را پاک میکند.
راهنمای کنترل پذیرش اینجا نیز مهم است: ترتیبدهی، رقابت را به صف منتقل میکند؛ پس صف همچنان به سقف، انقضا، انصاف و وضعیت رد شفاف نیاز دارد. ایمنی همزمانی نباید انباری بینهایت از کارهای منقضی بسازد.
هر نوشتن پیامددار باید در کنار آرگومانهای کسبوکار، فیلدهای همزمانی تولیدشده توسط برنامه قابلاعتماد را حمل کند:
| فیلد | دلیل وجود |
|---|---|
| شناسه قصد منطقی | برنامهریزی، تلاش دوباره، تأیید و مدرک نهایی را به هم وصل میکند |
| شناسه معیار منبع | دقیقاً مشخص میکند چه چیزی میتواند تغییر کند |
| نسخه مورد انتظار منبع | خواندن منقضی را به شکست تبدیل میکند، نه بازنویسی |
| شناسه مالک یا کارگر | عامل را برای عیبیابی مشخص میکند؛ بهتنهایی اختیار نیست |
| شناسه و زمان پایان اجاره | هماهنگی را محدود و جانشینی را ممکن میکند |
| توکن حصارکشی | مالکان را در مقصد اثر بهشکل یکنواخت مرتب میکند |
| چکیده عملیات | تأیید و ثبت را به آرگومانهای معیار میبندد |
| نسخه سیاست و انتشار | قواعد و مونتاژ نرمافزاری زمان تصمیم را حفظ میکند |
| شناسه نتیجه و نسخه تازه | نشان میدهد مقصد کدام وضعیت را پذیرفته است |
این فیلدها را کد قابلاعتماد بسازد. مدل میتواند از زبان طبیعی رکوردی محتمل پیشنهاد کند، اما محصول باید آن پیشنهاد را در دامنه احراز هویتشده به یک منبع معیار تبدیل کند. مدل نباید نسخه بسازد، کلید قفل را گسترش دهد، اجاره خودش را تمدید کند یا تصمیم بگیرد دو منبع «بهاندازه کافی شبیه» هستند که یک توکن داشته باشند.
پاکت همزمانی را به انتشار ثبتشده در گذرنامه انتشار هوش مصنوعی پیوند دهید. کارگری با آداپتور قدیمی ممکن است قالب توکن حصارکشی را اشتباه بسازد یا پیششرط نسخه را جا بیندازد. در نتیجه هویت انتشار باید کنار هویت منبع در زنجیره مدرک ثبت شود.
نگهبان باید همانجایی باشد که تغییر برگشتناپذیر یا مرجع رخ میدهد. اگر هماهنگکننده توکن را بسنجد و سپس API بدون محافظ فروشنده را صدا بزند، کارگر دیررس میتواند از مسیری دیگر تضمین را دور بزند.
برای ردیف پایگاه داده، شرط نسخه را در همان دستور بهروزرسانی اجرا کنید یا تراکنش بسازید. برای شیء، پیششرط نسل یا ETag بخواهید. برای کنترلگر استقرار، بالاترین توکن پذیرفتهشده هر سرویس را نگه دارید و توکن پایینتر را رد کنید. اگر API بیرونی کنترل همزمانی ندارد، یک آداپتور کنترلشده و تکنویسنده جلوی آن بگذارید؛ تماسها را همانجا مرتب، وضعیت مرجع را بازبینی و دسترسی مستقیم کارگران به اعتبارنامه فروشنده را قطع کنید.
فراخوانی مدل را بیرون تراکنش پایگاه داده و معمولاً بیرون کوتاهترین قفل نگه دارید. یک نما بگیرید، برنامه بسازید و اعتبارسنجی کنید؛ سپس درست پیش از ثبت، دوباره مالکیت بگیرید یا وضعیت جاری را بسنجید. اگر وضعیت عوض شده، برنامه منقضی است حتی اگر متن آن هنوز منطقی به نظر برسد. دوباره بخوانید، سیاست را بازبینی کنید و یا برنامه تازه بسازید یا تعارض را نمایش دهید.
پاسخ 409 یا 412، شکست شرط یا خطای ترتیبپذیری را با همان آرگومان قدیمی خودکار تکرار نکنید. رد همزمانی، اطلاعات تازه است. پاسخ درست شاید محاسبه دوباره، ادغام، امتناع، ارجاع به انسان یا اعلام منسوخ شدن قصد باشد.
فرض کنید کنترلگر استقرار مقادیر release=R12، version=41 و highest_fence=781 را نگه میدارد.
782 میگیرد، نسخه 41 را میخواند و بازگشت به R11 را آماده میکند.783 میگیرد، سرویس جاری را میخواند، اصلاحیه R13 را اعتبارسنجی میکند و با expected_version=41 و fence=783 ثبت میکند.release=R13، version=42 و highest_fence=783 را ذخیره میکند.expected_version=41 و fence=782 میرسد.کنترلگر A را به دو دلیل مستقل رد میکند: نسخه منبع تغییر کرده و توکن حصارکشی از بالاترین توکن پذیرفتهشده قدیمیتر است. A وضعیت STALE_OWNER ثبت میکند، نسخه 42 را میخواند و قصد اولیه رخداد را برای ارزیابی دوباره میفرستد. او بازگشت را «برای کمک» روی R13 دوباره اجرا نمیکند.
اگر کنترلگر فقط میسنجید که A زمانی اجاره داشته، بازگشت منقضی میتوانست برنده شود. اگر فقط نسخه مورد انتظار را میسنجید، عملی متفاوت که آن نسخه را تغییر نمیدهد شاید شکاف دیگری بسازد. مقصد باید قویترین قواعدی را که مالک آنهاست، همزمان و اتمی با اثر اجرا کند.
بسیاری از اقدامات عامل از پایگاه داده، سامانه تیکت، ذخیرهسازی شیء و API فروشنده عبور میکنند. یک قفل نمیتواند این سامانهها را به یک تراکنش تبدیل کند. ترتیب معیار و ماشین حالت روشنی تعریف کنید:
PROPOSED: برنامه وجود دارد اما هنوز مالک چیزی نیست؛CLAIMED: مالک محدود و توکن حصارکشی صادر شده است؛PREPARED: نسخه جاری و کنترل سیاست تأیید شده است؛COMMITTING: اقدام محافظتشده در حال اجراست؛COMMITTED: نتیجه مرجع و نسخه تازه ثبت شده است؛CONFLICTED: پیششرط یا کنترل ترتیبپذیری عمل را رد کرده است؛STALE_OWNER: توکن حصارکشی تازهتری وجود دارد؛RECONCILIATION_REQUIRED: نتیجه یا وضعیت میان سامانهها نامعلوم است.برای هر ثبت بیرونی دفتر اثر نگه دارید. اگر مرحله دوم پس از موفقیت مرحله اول شکست خورد، با یک قفل سراسری خیالی گردش کار را اتمی ننامید. وضعیت جزئی را ثبت کنید، جانشین ناسازگار را متوقف کنید و با همان انضباط راهنمای لغو، جبران یا بازبینی انجام دهید.
درمان این خطاها زنجیره فکر طولانیتر نیست؛ دامنه مالکیت کوچکتر، ثبت محافظتشده و حالت تعارض صریح است.
آزمون قطعی بسازید که کارگر را در همه مرزها متوقف کند: پس از خواندن، بعد از گرفتن اجاره، پس از برنامهریزی، پیش از ثبت، بعد از پذیرش مقصد و پیش از رسید. سپس تحویل تکراری، گم شدن پاسخ، خرابی کارگر، پایان اجاره، جانشینی هماهنگکننده، بسته دیررس، جابهجایی ترتیب پیام، اختلاف ساعت و دو نام مستعار برای یک منبع را تزریق کنید.
قواعد زیر را بسنجید:
نرخ تعارض، تعداد تلاش دوباره ترتیبپذیری، گردش اجاره، رد نویسنده منقضی، انتظار قفل، سن صف، پوشش اجرای حصارکشی، نرخ ادغام دستی، سن بازبینی و ثبتهای بدون پیششرط را پایش کنید. نتایج را بر اساس نوع منبع و گردش کار بشکنید. نرخ پایین تعارض در کل سامانه میتواند یک منبع پرپیامد با کلید قفل نادرست را پنهان کند.
مدرک لازم برای اثبات ادعا را نگه دارید. راهنمای شواهد ممیزی الگوی کاملتر را توضیح میدهد: ادعایی را ثبت کنید که بازرس باید اثبات کند، نه تمام توکنهایی را که مدل تولید کرده است.
پیش از آنکه چند عامل هوش مصنوعی وضعیت مشترکی را تغییر دهند، به این پرسشها پاسخ مثبت بدهید:
عاملهای موازی مفیدند چون زمان انجام کار را کم میکنند و تخصصهای مختلف را وارد گردش کار میکنند. خطر زمانی آغاز میشود که همزمانی فقط جزئی از زمانبندی تلقی شود. طراحی قابلاعتماد برای هر قاعده مشترک یک ترتیب ثبت اجرایی میسازد و اختیار منقضی را همانجایی رد میکند که رد شدن هنوز میتواند جلوی آسیب را بگیرد.
If-Match، If-None-Match، جلوگیری از بهروزرسانی گمشده و رفتار 412 Precondition Failed.
راهنمایی عملی برای انتشار لغو، اثبات توقف کار و سازگارکردن اثرهایی که پس از تغییر نیت کاربر همچنان در سامانه باقی میمانند.
ادامه مطلب
راهنمای عملی هویت بار کاری، تبادل توکن، اعتبارنامه محدود، میانجی ابزار و شواهد لازم برای دسترسی موقت عامل هوش مصنوعی به سامانههای سازمانی.
ادامه مطلب
راهنمایی عملی برای تصمیم درباره اجزای اشتراکی و اختصاصی و حفظ مرز مشتری در بازیابی، حافظه، کش، ابزار، لاگ و ارزیابی سامانه هوش مصنوعی.
ادامه مطلباگر این مطلب به یک سامانه واقعی در سازمان شما مربوط است، از خدمات و مطالعه موردی شروع کنید.