Một trong những trở ngại lớn nhất của máy tính lượng tử không nằm ở việc tạo ra một phép tính đủ kỳ lạ, mà ở khả năng giữ cho phép tính ấy không bị phá hỏng trước khi hoàn tất. Qubit có thể tồn tại trong trạng thái chồng chập và liên kết với nhau thông qua vướng víu, nhưng chính sự nhạy cảm đó cũng khiến chúng dễ bị ảnh hưởng bởi nhiệt, dao động điện từ, sai lệch điều khiển và tương tác ngoài ý muốn với môi trường. Một lỗi nhỏ trong quá trình vận hành có thể làm thay đổi kết quả cuối cùng.
Trong máy tính cổ điển, việc bảo vệ dữ liệu thường dựa trên các bit dư thừa. Một bit có thể được sao chép, kiểm tra và khôi phục khi phát hiện sai lệch. Với qubit, cách làm trực tiếp như vậy không thể áp dụng một cách đơn giản vì trạng thái lượng tử không thể bị sao chép tùy ý. Vì thế, ngành máy tính lượng tử phải xây dựng một cách tiếp cận khác: mã hóa thông tin lượng tử vào nhiều qubit vật lý, theo dõi những dấu hiệu của lỗi mà không đo trực tiếp nội dung cần bảo vệ, rồi dùng các thao tác hiệu chỉnh để ngăn lỗi lan rộng.
Lỗi lượng tử khác gì lỗi trong máy tính thông thường?
Trong hệ thống cổ điển, bit chỉ có hai trạng thái cơ bản là không và có. Một mạch logic có thể bị lật bit, nhưng các cơ chế kiểm tra chẵn lẻ hoặc sao lưu thường giúp phát hiện và sửa loại lỗi này. Qubit phức tạp hơn vì trạng thái của nó được mô tả bằng biên độ xác suất. Nhiễu có thể làm thay đổi xác suất đo, tạo ra sai lệch pha hoặc khiến qubit mất đi những quan hệ lượng tử cần thiết với các qubit khác.
Hai dạng lỗi thường được nhắc đến là lỗi lật trạng thái và lỗi lật pha. Lỗi lật trạng thái làm thay đổi tương ứng giữa hai trạng thái cơ sở của qubit. Lỗi lật pha không nhất thiết làm thay đổi kết quả đo ngay lập tức, nhưng có thể phá hỏng giao thoa lượng tử, vốn là thành phần quan trọng trong nhiều thuật toán. Trong thực tế, một qubit có thể chịu đồng thời nhiều dạng nhiễu, còn phép đo và cổng lượng tử cũng tự tạo ra xác suất sai lệch nhất định.
Điều khó là không thể liên tục đo qubit dữ liệu để hỏi nó có đang ở đúng trạng thái hay không. Một phép đo trực tiếp thường làm thay đổi trạng thái chồng chập mà phép tính đang sử dụng. Nếu kiểm tra theo cách cổ điển, hệ thống có thể vô tình xóa chính thông tin lượng tử cần bảo vệ. Sửa lỗi lượng tử vì vậy phải đo những thông tin phụ trợ về lỗi, thay vì đo thẳng giá trị lượng tử được mã hóa.
Ý tưởng mã hóa thông tin vào một nhóm qubit
Thay vì đặt một đơn vị thông tin lượng tử lên một qubit duy nhất, các nhà nghiên cứu mã hóa nó vào một trạng thái trải trên nhiều qubit vật lý. Nhóm qubit này thường được gọi là một qubit logic. Những qubit trực tiếp tạo nên nhóm đó là qubit vật lý. Qubit logic không phải là một linh kiện mới tách rời khỏi phần cứng, mà là cách tổ chức và điều khiển nhiều qubit vật lý để tạo ra một đơn vị thông tin bền vững hơn.
Trong cấu trúc mã hóa, một số phép đo được dùng để kiểm tra tính nhất quán giữa các qubit. Những phép đo này không trả lời trực tiếp qubit logic đang mang trạng thái nào. Chúng chỉ cho biết có dấu hiệu bất thường ở đâu trong mối liên hệ giữa các qubit vật lý. Chuỗi kết quả kiểm tra như vậy được gọi là hội chứng lỗi. Từ hội chứng, bộ điều khiển có thể suy luận loại lỗi có khả năng đã xảy ra và lựa chọn thao tác hiệu chỉnh phù hợp.
Cách suy luận này giống như việc phát hiện một lỗi trong mạng lưới mà không cần mở toàn bộ gói dữ liệu đang được truyền. Nếu chỉ một qubit vật lý bị ảnh hưởng, mô hình mã hóa có thể giúp cô lập tác động của nó. Tuy nhiên, hiệu quả phụ thuộc vào tỷ lệ lỗi của phần cứng, cách các qubit kết nối với nhau, độ chính xác của phép đo hội chứng và tốc độ xử lý của hệ thống điều khiển.
Ngưỡng lỗi và mục tiêu chịu lỗi
Sửa lỗi không có nghĩa là mọi lỗi đều biến mất. Mục tiêu thực tế là làm cho xác suất lỗi của qubit logic thấp hơn xác suất lỗi của các qubit vật lý riêng lẻ. Nếu thêm qubit vật lý và tăng kích thước mã hóa khiến qubit logic ngày càng đáng tin cậy, hệ thống có thể tiến tới trạng thái chịu lỗi. Ngược lại, nếu việc thêm phần cứng làm phát sinh quá nhiều phép đo và cổng lượng tử không chính xác, toàn bộ cơ chế bảo vệ có thể tạo ra nhiều lỗi hơn số lỗi nó sửa được.
Khái niệm ngưỡng lỗi mô tả một ranh giới quan trọng. Khi tỷ lệ lỗi cơ bản của các thao tác nằm dưới ngưỡng phù hợp với một mã sửa lỗi, việc mở rộng mã có thể cải thiện độ tin cậy của thông tin logic. Khi tỷ lệ lỗi vượt ngưỡng, việc bổ sung qubit chưa chắc giúp ích. Ngưỡng này không phải một con số cố định cho mọi hệ thống, bởi nó phụ thuộc vào mô hình nhiễu, cấu trúc kết nối, loại mã, phương pháp giải mã và cách thực hiện từng phép đo.
Đây là lý do số lượng qubit vật lý không thể được dùng như thước đo duy nhất để đánh giá tiến bộ. Một bộ xử lý có nhiều qubit nhưng tỷ lệ lỗi cao, kết nối hạn chế hoặc khả năng đọc kết quả chưa ổn định có thể chưa tạo ra được nhiều qubit logic hữu dụng. Điều quan trọng hơn là toàn bộ chuỗi từ qubit vật lý, mạch kiểm tra, bộ điều khiển đến phần mềm giải mã phải phối hợp nhất quán.
Vì sao phần cứng phải mở rộng đáng kể?
Để bảo vệ một qubit logic, hệ thống cần dành một phần qubit vật lý cho dữ liệu và một phần khác cho các phép kiểm tra. Các qubit này phải được điều khiển theo lịch trình chính xác, đồng thời bộ điều khiển phải thu thập kết quả đo và xử lý chúng đủ nhanh để lỗi không tích tụ trong thời gian chờ đợi. Khi muốn thực hiện một phép tính dài hơn, hệ thống thường phải tăng mức bảo vệ, dẫn tới nhu cầu về nhiều qubit vật lý hơn.
Gánh nặng không chỉ nằm ở số lượng qubit. Mỗi qubit cần cơ chế tạo, điều khiển và đọc trạng thái phù hợp. Các đường kết nối phải hạn chế nhiễu chéo, trong khi hệ thống làm lạnh hoặc cô lập môi trường phải duy trì điều kiện vận hành ổn định. Càng nhiều qubit được đặt vào cùng một kiến trúc, việc phân phối tín hiệu, quản lý nhiệt, đồng bộ thời gian và phát hiện lỗi phần cứng càng trở nên phức tạp.
Phần mềm cũng phải đảm nhiệm một nhiệm vụ khó. Bộ giải mã nhận chuỗi hội chứng lỗi theo thời gian và tìm ra cách giải thích hợp lý nhất cho các dấu hiệu bất thường. Nếu bộ giải mã chậm hơn tốc độ hệ thống tạo ra dữ liệu, thông tin sửa lỗi có thể bị tồn đọng. Vì vậy, máy tính lượng tử chịu lỗi không chỉ là bài toán chế tạo qubit, mà còn là bài toán của điện tử điều khiển, kiến trúc máy tính và thuật toán xử lý dữ liệu.
Phân biệt giảm lỗi và sửa lỗi
Trong giai đoạn phần cứng chưa đạt đến mức chịu lỗi đầy đủ, các nhóm nghiên cứu thường sử dụng những kỹ thuật giảm lỗi. Giảm lỗi tìm cách ước lượng tác động của nhiễu từ các lần chạy chương trình và điều chỉnh kết quả ở bước hậu xử lý. Cách tiếp cận này có thể hữu ích cho các thử nghiệm ngắn, nhưng không giống với sửa lỗi theo nghĩa chặt chẽ.
Sửa lỗi lượng tử chủ động phát hiện dấu hiệu lỗi trong khi tính toán và bảo vệ thông tin logic bằng mã hóa. Nó đòi hỏi thêm qubit, phép đo, cổng điều khiển và bộ giải mã. Giảm lỗi có thể giúp khai thác phần cứng hiện có với chi phí thấp hơn, còn sửa lỗi hướng tới khả năng chạy các phép tính dài và phức tạp hơn. Hai hướng này không loại trừ nhau, nhưng chúng giải quyết những giới hạn khác nhau.
Sự phân biệt này quan trọng khi đánh giá một kết quả thử nghiệm. Việc một hệ thống cho ra kết quả được cải thiện sau hậu xử lý không tự động chứng minh rằng nó đã có qubit logic chịu lỗi. Để đi xa hơn, cần xem xét khả năng duy trì thông tin qua nhiều chu kỳ, mức độ giảm lỗi khi tăng kích thước mã, cũng như việc các phép kiểm tra có thật sự hoạt động ổn định trong những điều kiện khác nhau hay không.
Từ kết quả phòng thí nghiệm đến máy tính có thể sử dụng
Một hệ thống sửa lỗi đáng tin cậy phải vượt qua nhiều lớp kiểm chứng. Trước hết, từng qubit vật lý cần có đặc tính đủ ổn định và đồng đều. Tiếp theo, các phép đo hội chứng phải ít gây nhiễu hơn mức lỗi mà chúng giúp phát hiện. Sau đó, bộ giải mã cần phân biệt lỗi đo với lỗi xảy ra trên qubit dữ liệu, vì hai loại dấu hiệu này có thể xuất hiện đồng thời.
Kiến trúc điều khiển cũng phải được thiết kế để khi một qubit hoặc một kênh tín hiệu gặp vấn đề, toàn bộ chương trình không lập tức thất bại. Điều này đòi hỏi khả năng hiệu chuẩn, giám sát và thay thế linh hoạt. Một hệ thống có thể chạy thử nghiệm ngắn chưa chắc đã sẵn sàng cho các thuật toán cần thời gian hoạt động dài. Độ tin cậy phải được đánh giá qua nhiều chu kỳ và nhiều loại mạch, thay vì chỉ dựa trên một kết quả riêng lẻ.
Về phía người dùng, máy tính lượng tử chịu lỗi trong tương lai có thể được tiếp cận thông qua các lớp phần mềm giống như những nền tảng tính toán chuyên dụng khác. Người lập trình sẽ không cần theo dõi từng lỗi vật lý, nhưng vẫn phải hiểu chi phí của việc mã hóa, thời gian thực thi và tài nguyên cần thiết cho từng thuật toán. Một chương trình được mô tả ngắn gọn ở cấp logic có thể yêu cầu một lượng phần cứng đáng kể ở cấp vật lý.
Điều cần quan sát trong chặng đường tiếp theo
Tiến bộ trong sửa lỗi lượng tử nên được nhìn qua những câu hỏi cụ thể: tỷ lệ lỗi của qubit logic có giảm khi tăng mức mã hóa hay không, hệ thống có duy trì được trạng thái qua nhiều chu kỳ hay không, và chi phí điều khiển có tăng theo cách còn khả thi hay không. Những câu hỏi này thực tế hơn việc chỉ đếm số qubit hoặc xem một phép tính trình diễn đơn lẻ.
Thách thức còn lại rất lớn, nhưng hướng đi đã làm rõ bản chất của bài toán. Máy tính lượng tử hữu ích không chỉ cần qubit có thể tạo chồng chập. Nó cần một lớp bảo vệ có khả năng nhận biết nhiễu mà không phá hủy thông tin, một kiến trúc phần cứng đủ ổn định và phần mềm đủ nhanh để phản ứng với lỗi. Khi các lớp này được phát triển đồng thời, qubit logic mới có cơ hội trở thành đơn vị tính toán đáng tin cậy thay vì chỉ là một khái niệm lý thuyết.
Cuối cùng, sửa lỗi lượng tử cho thấy ngành này đang chuyển từ câu hỏi liệu có thể tạo ra hiệu ứng lượng tử hay không sang câu hỏi khó hơn: làm thế nào để kiểm soát hiệu ứng ấy ở quy mô lớn và trong thời gian đủ dài. Khoảng cách giữa hai câu hỏi chính là nơi phần lớn công việc kỹ thuật của máy tính lượng tử đang diễn ra.

