مهندس کوانتومی

37. مهندسی تصحیح خطای کوانتومی

37.1مدارهای استخراج سندروم

یک دور سندروم، در کد: برای هر بررسی، کمکی را ریست کن، چهار CNOTاش را در ترتیب تحمل‌پذیر اعمال کن، کمکی را بسنج. یک آزمایش حافظهٔ کامل، دورها را در آماده‌سازی و اندازه‌گیری نهایی داده می‌پیچد: |0_L⟩ یا |+_L⟩ را آماده کن، d دور یا بیشتر اجرا کن، همهٔ کیوبیت‌های داده را بسنج. مدل نویزِ مهم، مداری است: هر ریست، گیت و اندازه‌گیری با احتمال کوچک شکست می‌خورد. رحمت خطاهای اندازه‌گیری این است که تکرار می‌شوند: اندازه‌گیری بد به‌صورت همان نقص در دو دور متوالی ظاهر می‌شود که مثل زنجیرهٔ خطای داده در زمان رمزگشایی می‌شود (۳۵.۹). نشتی (leakage) — فرار جمعیت از زیرفضای دوسطحی — دشمن عملی است و با واحدهای کاهش نشتی که دوره‌ای درج می‌شوند مدیریت می‌شود.

37.2الگوریتم‌های رمزگشایی

چشم‌انداز رمزگشاها با یک معاملهٔ سه‌طرفه مرتب می‌شود: دقت، توان‌دهی، تأخیر. تطبیق کامل کمینه‌وزن (۳۷.۳) پیش‌فرض دقیق و بالغ کدهای سطحی است. union-find (دلفوس–نیکرسون) در زمان نزدیک-خطی اجرا می‌شود با دقتی اندکی بدتر — محبوبِ بلادرنگ. انتشار باور به‌علاوهٔ پس‌پردازش آمار مرتب (۳۷.۴) کدهای بررسی-توازنِ عمومی را پوشش می‌دهد که تطبیق در آن‌ها کار نمی‌کند. رمزگشاهای عصبی (۳۷.۵) رکورد دقت را دارند اما از بودجهٔ بلادرنگ جا می‌مانند. هر انتخاب، تصمیمی سطح-به-پلتفرم است: ماشین یون تله با دورهای میلی‌ثانیه‌ای می‌تواند چیزی را خرج کند که دور ۱ میکروثانیه‌ای ابررسانا نمی‌تواند. نوشتن و بنچمارک‌کردن این رمزگشاها سراپا مهندسی نرم‌افزار است — الگوریتم‌های گراف، دادهٔ جریانی، قیود بلادرنگ سخت.

37.3تطبیق کامل کمینه‌وزن

MWPM سندروم را به مسئلهٔ گراف مدل می‌کند. گره‌ها رویدادهای نقص‌اند (نتیجه‌های اندازه‌گیریِ تغییرکرده)؛ یال‌ها زنجیره‌های نامزد خطا با وزن −log(احتمال) زنجیرهٔ اتصال‌دهنده؛ رمزگشا تطبیق کامل کمینه‌وزن را می‌یابد — جفت‌کردن هر نقص دقیقاً یک بار — و اجتماع زنجیره‌های جفت‌شده را به‌عنوان تصحیح تحویل می‌دهد. الگوریتم گلبرگ ادموندز (Edmonds) این را چندجمله‌ای می‌کند (بدترین حالت O(v³)) و پیاده‌سازی‌های مدرن (blossom تنکِ pymatching) به میلیون‌ها رمزگشایی در ثانیه به‌ازای هر هسته می‌رسند. تطبیق برای نویز گراف‌وار دقیقاً بهینه است — کد تکراری، نویز پدیدارشناختی — و برای نویز کامل مداریِ کد سطحی صرفاً نزدیک-بهینه، جایی که سازوکارهایی مثل قلاب‌های ۳۶.۴ همبستگی‌هایی می‌سازند که مدل گراف تقریب می‌زند. در عمل کم می‌بازد؛ از این‌رو سلطه‌اش.

37.4انتشار باور

انتشار باور (belief propagation؛ BP) الگوریتم استنتاج همه‌منظوره برای کدهای توصیف‌شده با گراف بررسی-توازن (Tanner) است: گره‌های متغیر احتمال خطا حمل می‌کنند، گره‌های بررسی قیدها را، و پیام‌ها هر تکرار میانشان رد و بدل می‌شود تا باورها همگرا شوند. فضیلتش عمومیت است — هر ماتریس بررسی توازن، از جمله ساختارهای متراکم و نرخ-بالای کدهای qLDPC که تطبیق در آن‌ها بی‌فایده است. رذایلش شناخته‌اند: نوسان و ناهمگرایی روی کدهای کوانتومی (حلقه‌ها در گراف Tanner) و کوری نسبت به تباهی (degeneracy). وصلهٔ استاندارد BP + OSD (پس‌پردازش آمار مرتب) است: وقتی BP قطعی همگرا نمی‌شود، OSD یک دستگاه خطی کوچک را دور جواب BP دوباره حل می‌کند. دقت قوی است؛ توان‌دهی مسئلهٔ باز است، چون شمار تکرارها وابسته به داده است — خطری بلادرنگ.

37.5رمزگشاهای عصبی

رمزگشاهای عصبی نگاشت سندروم-به-تصحیح را از دادهٔ شبیه‌سازی‌شده یا واقعی می‌آموزند. نتیجهٔ مرجع: AlphaQubit گوگل دیپ‌مایند (Nature، ۲۰۲۴)، رمزگشایی مبتنی بر ترنسفورمر، روی دادهٔ واقعی کد سطحی Sycamore از بهترین رمزگشای تطبیقی بهتر عمل کرد — تقریباً ۶٪ خطای منطقی کمتر — با بهره‌گیری از همبستگی‌ها و نویز خاص-دستگاه که رمزگشاهای گرافی بد مدل می‌کنند. اما سرعت: در زمان انتشار مرتبه‌های بزرگی برای رمزگشایی بلادرنگ کند بود و دقتش روی توزیع‌های نویزی که برایشان آموزش ندیده بود افت می‌کرد. پژوهش کنونی بین فشرده‌سازی مدل‌های دقیق روی سخت‌افزار FPGA و آموزش رمزگشاهای بازگشتی کوچکِ جریانی تقسیم می‌شود. برای مهندس نرم‌افزار، این تمیزترین تقاطع سیستم‌های یادگیری ماشین و سخت‌افزار کوانتومی است.

37.6رمزگشایی بلادرنگ

یک دور کد سطحی ابررسانا ~۱ میکروثانیه طول می‌کشد؛ رمزگشا باید این نرخ را تا بی‌نهایت حفظ کند وگرنه عقب‌ماندگی تا جایی رشد می‌کند که آزمایش در سندروم‌های رمزگشایی‌نشده غرق می‌شود. این یک مسئلهٔ سیستم‌های بلادرنگ سخت است: تأخیر بدترین-حال مهم است نه میانگین. معماری استاندارد رمزگشایی پنجرهٔ لغزان است — رمزگشایی دورها در پنجره‌های هم‌پوشان با تأخیری چند-دوری، و پالایش تصمیم‌ها با رسیدن بافت بیشتر. دشواری وابسته به پلتفرم است: دورهای یون‌های تله‌شده (~میلی‌ثانیه) جا برای رمزگشاهای سنگین‌تر می‌گذارند، و به همین دلیل کیوبیت‌های منطقی با رمزگشایی بلادرنگ نخست روی یون تله نمایش داده شدند (Quantinuum، ۲۰۲۴) پیش از آن‌که تراشه‌های ابررسانا شکاف را ببندند. هر ادعای «کیوبیت منطقی» که آفلاین رمزگشایی شده باشد را با این چشم بخوانید.

37.7سخت‌افزار رمزگشایی

رمزگشا رایانه‌ای کلاسیک است که با یکی کوانتومی هم‌طراحی می‌شود و سخت‌افزارش یک رشتهٔ سیستم‌های نهفته است: تابع ثابت، تأخیر قطعی، I/O جریانی (بیت‌های خام نقص داخل، فریم‌های تصحیح بیرون، هر دور، همیشه). خط لوله‌های FPGA اسب بارکش‌اند — رمزگشاهای union-find طبیعتاً به سخت‌افزار موازی نگاشت می‌شوند؛ ASICها برای ماشین‌های تولیدی پیشنهاد شده‌اند. خوشه‌های GPU کار آفلاین پرتوان را در دست دارند (بنچمارک، آموزش رمزگشاهای عصبی). قرارداد واسط به‌اندازهٔ هسته مهم است: رمزگشایی که نتواند پس از برخورد پرتو کیهانی، انفجار نقص‌ها را بلعیده کند ماشین را متوقف خواهد کرد. اگر نقش مهندسی کلاسیک درون محاسبات کوانتومی را می‌خواهید که مدرک فیزیک نخواهد، مستقیم‌ترین همین است.

37.8بنچمارک‌کردن کدها

بنچمارک استاندارد، آزمایش حافظه است: حالت منطقی را آماده کن، n دور سندروم اجرا کن، رمزگشایی کن، و خطای منطقی هر دور ε_c(d) را استخراج کن. گزارش بده Λ = ε_c(d)/ε_c(d+2)، ضریب سرکوب به‌ازای هر گام فاصله: Λ > ۱ یعنی زیر آستانه، و Λ ≈ 2.1 عدد تیتر Willow بود. مقایسهٔ صادقانه سه چیز را ثابت می‌کند: مدل نویز (وابستگی مداری با نرخ‌های اعلام‌شده)، رمزگشا (نامش و تنظیماتش) و شمار منابع (کیوبیت فیزیکی به‌ازای هر کیوبیت منطقی). بنچمارکی که هر یک از سه را حذف کند بازاریابی است. همین انضباط به بنچمارک گیت‌های منطقی (spot check، بنچمارک تصادفی روی کیوبیت‌های منطقی) و به مقایسهٔ خانواده‌های کد تعمیم می‌یابد — دقیقاً همان که پروژهٔ شما تمرین خواهد کرد.

37.9شبیه‌سازی با stim

stim (جیدنی، ۲۰۲۱) شبیه‌ساز استاندارد مدارهای پایدارساز در حوزه است: مدارهای کد سطحی را در هر فاصله‌ای می‌سازد، رویدادهای detector را با میلیون‌ها نمونه در ثانیه نمونه‌برداری می‌کند و «مدل خطای detector» را تحویل می‌دهد که رمزگشاها مصرفش می‌کنند. با pymatching (رمزگشا) و sinter (رانندهٔ مونت‌کارلو) جفت می‌شود و هر منحنی این بخش را روی لپ‌تاپ بازتولید می‌کند:

import stim

circuit = stim.Circuit.generated(   # d=3 rotated surface-code memory experiment
    "surface_code:rotated_memory_z",
    distance=3, rounds=3,
    after_clifford_depolarization=0.001,
    after_reset_flip_probability=0.001,
    before_measure_flip_probability=0.001,
    before_round_data_depolarization=0.001,
)
sampler = circuit.compile_detector_sampler()
dets, obs = sampler.sample(shots=1000, separate_observables=True)
print(dets.shape, obs.shape)   # detector events and logical observables per shot

از stim به‌عنوان مرجع استفاده کنید: اول با آن بسازید، بعد مؤلفه‌ها را با پیاده‌سازی خودتان جایگزین کنید و سازگاری را نمونه به نمونه بررسی کنید.

37.10آزمایش‌های خطای منطقی

آزمایش پشت هر شکل این بخش: نرخ خطای فیزیکی p و فاصلهٔ کد d ∈ {3, 5, 7} را جاروب کنید؛ برای هر نقطه آزمایش حافظه را با حلقهٔ مونت‌کارلوی ۱۰⁴ تا ۱۰⁶ نمونه اجرا کنید؛ خطای منطقی هر دور را استخراج کنید؛ Λ را برازش کنید و مقیاس‌بندی را با A * (p/p_th)^((d+1)/2) بسنجید. سه چیز در داده دنبالش باشید: نقطهٔ تقاطع که منحنی‌های dهای مختلف همدیگر را قطع می‌کنند (تخمین آستانه)، فاصلهٔ عمودی میان منحنی‌ها (Λ)، و انحراف‌ها در pهای پایین (کف تعیین‌شده با پرتو کیهانی و بایاس — آزمایش‌های واقعی می‌بینند، شبیه‌سازی‌ها معمولاً نه). بازتولید نمودار سرکوب Λ ≈ 2 به سبک Willow از دادهٔ شبیه‌سازی‌شده، پروژه‌ای یک-تا-دو-هفته‌ای لپ‌تاپی و قطعه‌ای مشروع برای نمونه‌کار است — دقیقاً تکلیف زیر.