گاهی با مسئله‌ای روبه‌رو می‌شوید که دو نیاز حیاتی دارد؛ برای نمونه، هم باید خروجی تولید کند و هم تضمین دهد که این خروجی کاملاً بدون خطاست، اما هیچ مدلی نمی‌تواند هر دو نیاز را در بالاترین سطح برآورده کند. در چنین شرایطی، ساده‌ترین راه این است که بهترین مدل موجود را انتخاب کنید و به نتیجه‌ای معمولی رضایت دهید. اما راهکار بهتری هم وجود دارد: به‌جای تکیه بر یک مدل ناکارآمد، دو مدل را در یک خط‌لوله ترکیب کنید.

ایدهٔ اصلی

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

اصل کلیدی: راستی‌آزما باید واقعاً توانمند باشد

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

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

سه شیوهٔ پیاده‌سازی خط‌لوله

این الگو به سه روش متداول پیاده‌سازی می‌شود که هر یک اقتضائات اقتصادی متفاوتی دارند:

  • ترتیبی: ابتدا تولیدکننده خروجی را می‌سازد و سپس راستی‌آزما آن را تایید یا رد می‌کند. از آنجا که کل ترافیک از هر دو مدل عبور می‌کند، هزینه و تاخیر نهایی برابر با مجموع زمان و هزینه هر دو مدل خواهد بود. این شیوه ساده‌ترین و مطمئن‌ترین حالت است.
  • پلکانی با پشتیبان: راستی‌آزما تنها روی بخشی از ترافیک ورودی که نشان‌گذاری شده است (مانند موارد مشکوک) اعمال می‌شود. در این روش، هزینه‌ها به‌شدت کاهش می‌یابد؛ زیرا راستی‌آزما تنها با بخش کوچکی از داده‌ها سروکار دارد.
  • موازی با داوری: هر دو مدل به‌طور مستقل اجرا می‌شوند و یک قاعده قطعی میان خروجی آن‌ها داوری می‌کند. این روش بیشترین هزینه و بالاترین میزان تاخیر را به همراه دارد، اما برای سناریوهایی مناسب است که استقلالِ نظر دو مدل اهمیت ویژه‌ای دارد.

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

زمان اجتناب از این الگو

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

یک هشدار واقع‌بینانه

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