Business Information Learning

  1. Trang chủ
  2. Lưu
  3. Thẻ
  4. Hỏi - Đáp

 
 
Trang chủ
BIL'log, ⌚ 2019-08-31
***
☕ Nhàn đàm ICT: Quantum Computing ⚛️
Tác giả: Lê Văn Lợi
Bài đã đăng trên diễn đàn ICT_VN (ict_vn@googlegroups.com).
Ngày đăng: 31-8-2019.

Tôi xin phép được bắt đầu với câu nói của nhà vật lý Richard Feynman như sau:

I’m not happy with all the analyses that go with just the classical theory, because Nature isn’t classical, dammit, and if you want to make a simulation of nature, you’d better make it quantum mechanical, and by golly it’s a wonderful problem, because it doesn’t look so easy.

 

It’s not a Turing machine, but a machine of a different kind.

Tạm dịch:

Tôi không hài lòng với tất cả các phân tích chỉ dựa trên lý thuyết cổ điển, bởi vì Thiên nhiên không phải là cổ điển, chết tiệt thế chứ, và nếu bạn muốn tạo ra một mô phỏng của tự nhiên, tốt hơn hết là bạn nên biến nó thành cơ học lượng tử, ôi trời, đó là một vấn đề tuyệt vời, bởi vì nó không hề dễ.

 

Đó không phải là một máy Turing, mà là một loại máy theo kiểu khác.

 

#0_Quantum Mechanics. Theo lý thuyết cơ học lượng tử, một đối tượng lượng tử thường không tồn tại ở trạng thái hoàn toàn xác định. Khi người ta quan sát một vật thể lượng tử, nó trông giống như một hạt, nhưng khi không quan sát, nó tồn tại dưới dạng sóng. Để anh/chị không bị “kéo” vào một lý thuyết khó hiểu với vô số các tranh luận của các nhà vật lý, tôi đề xuất chúng ta xem các tính chất sau của lượng tử giống như các “tiên đề”:

Wave-particle duality (lưỡng tính sóng-hạt). Vật thể lượng tử thường có cả hai tính chất sóng và hạt. Vật thể lượng tử vận động tuân theo một phương trình sóng, nhưng bất kỳ phép đo nào của hệ thống lại cho kết quả là hạt.

Superposition (trạng thái chồng chập). Một hệ thống lượng tử có thể tồn tại ở hai trạng thái trở lên cùng một lúc, được gọi là trạng thái chồng chập. Hàm sóng cho trạng thái chồng chập là tổ hợp tuyến tính của các trạng thái thành phần, với các hệ số phức. Ví dụ, một hệ thống lượng tử Q tổ hợp từ 2 trạng thái A và B thì có thể viết Q = Ca*A + Cb*B, trong đó Ca và Cb là các số phức với ràng buộc: |Ca|2 + |Cb|2 = 1. Khi “đo” hệ thống Q thì ta được kết quả hoặc là A, hoặc là B, chứ không bao giờ là trạng thái lơ lửng giữa A và B cả.

Coherence (tính liên kết). Khi một hệ lượng tử được tổ hợp từ các trạng thái thành phần cơ bản khác thì trạng thái của hệ thống tổ hợp được gọi là có tính liên kết (coherent). Việc giữ trạng thái liên kết (coherent) là cần thiết cho các hiện tượng lượng tử như giao thoa lượng tử (quantum interference), trạng thái chồng chập (superposition) và liên đới lượng tử (entanglement).

Entanglement (liên đới lượng tử). Nếu nhiều vật thể lượng tử liên đới với nhau thì khi “đo” một vật thể trong số đó, vật thể được đo sẽ chuyển từ trạng thái chồng chập (superposition) thành trạng thái hạt. Điểm đặc biệt ở chỗ các vật thể lượng tử liên đới khác cũng chuyển từ trạng thái chồng chập thành trạng thái hạt. Hiện tượng này xảy ra ngay cả khi các vật thể lượng tử ở cách xa nhau.

Measurement (đo / quan sát). Đo một hệ thống lượng tử, thực chất là thay đổi trạng thái hệ thống đó. Trong trường hợp phép đo mang lại giá trị được xác định rõ, trạng thái của hệ thống sau khi đo tương ứng với giá trị đo được. Việc đo hệ thống lượng tử đã làm sập (collapse) chức năng “sóng” – chuyển sang trạng thái “hạt”.

Nếu anh/chị thấy chưa thoải mái với các “tiên đề” trên, anh chị có thể tìm hiểu thêm về cơ học lượng tử. Trong nhiều tài liệu mà tôi đọc được trên Internet, tôi thấy tài liệu này dễ hiểu: https://hackernoon.com/quantum-computing-explained-a114999299ca

 

 

#1.0_ Qubit. Các hệ thống điện toán hiện nay dựa vào nền tảng hệ nhị phân được xây dựng từ các bit. Một bit chỉ có hai giá trị là 0 và 1. Quantum computing cũng có ý tưởng tương tự: quantum bit, viết tắt là qubit. Qubit cũng có các giá trị là 0 và 1. Ngoài ra, qubit còn có thể ở trạng thái “superposition” (trạng thái chồng chập). Khi qubit ở trạng thái “superposition”, người ta nói là qubit ở 2 trạng thái đồng thời vừa bằng 0 vừa bằng 1. Nghe rất vô lý, đúng không ạ? Nhưng “đúng” là thế đấy 😊.

Khi mô tả qubit, người ta viết theo ký hiệu của Dirac. Giá trị 0 của qubit được viết là |0> (một vạch đứng, tiếp đến là giá trị và sau cùng là dấu lớn hơn). Tương tự, giá trị 1 của qubit được viết là |1>. Hai trạng thái |0> và |1> được gọi là các trạng thái cơ sở (basis state). Hàm sóng của qubit được viết là |ψ⟩ = a0 |0⟩ + a1 |1⟩ trong đó |a0|2 + |a1|2 = 1. Chú ý rằng a0 và a1 là các số phức. Khi đo qubit thì kết quả chắc chắn là 0 hoặc 1 chứ không bao giờ là giá trị khác. Nhưng lúc nào bằng 0, lúc nào bằng 1? Qubit bằng 0 với xác suất là |a0|2 và bằng 1 với xác suất là |a1|2. Sau khi “đo” thì trạng thái của qubit chính là trạng lúc đo được (bằng 0 hoặc bằng 1), còn các giá trị a0 và a1 bị hủy hoàn toàn. Đây là một điểm “đặc biệt” (và có phần kỳ lạ) của lượng tử.

Với cấu trúc trên, qubit không hẳn là số (digital) và càng không phải là nhị phân (binary). Các hệ số a0 và a1 là các giá trị tương tự (thực chất là số phức). Nhưng khi “đo” hệ thống thì kết quả bao giờ cũng là nhị phân.

 

#1.1_Multiqubit. Khi hệ thống lượng tử có nhiều hơn 1 qubit thì có 2 trường hợp xảy ra: các qubit độc lập với nhau hoặc các qubit liên đới với nhau (entangled).

Trường hợp các qubit độc lập với nhau: số trạng thái cơ sở tỷ lệ thuận với số qubit. Một qubit có 2 trạng thái cơ sở nên n qubit sẽ có 2 * n trạng thái cơ sở.

Trường hợp các qubit liên đới (entangled) thì số trạng thái cơ sở tăng theo cấp số mũ. Ví dụ, nếu hệ thống có 2 qubit thì sẽ có 4 trạng thái cơ sở (basis state) là |00>, |01>, |10>, |11>.  Để mô tả đầy đủ hàm sóng của hệ thống 2 qubit, chúng ta cần 4 hệ số phức: |ψ⟩ = a0|00> + a1|01> + a2|10> + a3|11>, trong đó |a0|2 + |a1|2  + |a2|2 + |a3|2   = 1

Một cách tổng quát, khi hệ thống có n qubit thì hệ thống này sẽ có 2n trạng thái cơ sở và cần 2n hệ số phức để thiết lập hàm sóng. Như vậy, khi tăng số qubit thì số các trạng thái cơ sở và số các hệ số phức tăng theo cấp số mũ.

 

#1.3_Qubit Operations. Điện toán lượng tử hiện nay có 2 dòng chính: là điện toán lượng tử tương tự (analog quantum computing) khi các qubit độc lập với nhau và điện toán lượng tử số (gate-based quantum computing) khi các qubit liên đới với nhau (entangled). Bài này tôi chủ yếu chỉ nhàn đàm về điện toán lượng tử số.

Đối với bit, như chúng ta đều biết, có các mạch điều khiển cơ bản nguyên thủy gồm AND, OR, XOR, NOT. Các mạch này được gọi là gate (cổng). Từ các mạch nguyên thủy này người ta có thể lập các mạch tổ hợp với mức độ phức tạp cao hơn để thực hiện các phép tính trong các máy tính mà chúng ta vẫn đang sử dụng.

Đối với qubit thì sao, liệu có các mạch tương tự như thế hay không? Câu trả lời là các qubit có tập hợp các mạch điều khiển cơ bản nguyên thủy khác hẳn. Lý do là các qubit vận hành theo nguyên lý cơ học lượng tử nên phải tuân thủ các ràng buộc như sau:

Ràng buộc 1: Các mạch khi thiết kế không được mất thông tin vì mất thông tin có nghĩa là hệ thống lượng tử bị phá vỡ tính liên kết (coherence). Điều này cũng đồng nghĩa với: các phép toán phải đảo ngược được (reversible). Trong các phép toán cổ điển, chỉ có NOT thỏa mãn điều kiện này. Chú ý rằng ràng buộc này cũng đồng nghĩa với số qubit đầu vào phải bằng số qubit đầu ra. Chú ý thêm là sau khi “đo” (measurement) qubit thì trạng thái ngay trước đó bị hủy – vì vậy phép “đo” là phép toán không đảo ngược được.

Ràng buộc 2: Tổng bình phương các giá trị tuyệt đối của các hệ số phải luôn luôn bằng 1 (∑|ai|2 = 1). Dưới góc độ toán học, người ta gọi biên độ của véc tơ luôn luôn bằng 1. Các hệ số phức của trạng thái của qubit có thể thay đổi nhưng biên độ không đổi.

Từ các ràng buộc trên người ta lập ra các phép toán (gate) để tác động lên các qubit (nghĩa là chuyển các qubit từ trạng thái này sang trạng thái khác). Ví dụ về các gate: Hadamart (1 qubit), T (1 qubit), CNOT (2 qubit), Toffoli (3 qubit), Pauli-Z (1 qubit), Z-Rotation (1 qubit), NOT (1 qubit).

Ngoài ra, người ta chứng minh được rằng mọi mạch điều khiển qubit đều có thể được tổ hợp từ 3 gate là T, HadamardCNOT. Như vậy, các gate T, HadamardCNOT được gọi là tập hợp các gate cơ bản.

Về mặt toán, các gate được viết dưới dạng các ma trận. Hơn nữa, các ma trận này đều là các ma trận đơn vị (unitary matrix). Các mạch tổ hợp từ các gate cơ bản là các phép toán trên ma trận.

 

#2_Quantum Computing. Muốn có điện toán lượng tử (quantum computing), cần có phần cứng (thiết bị) và phần mềm. Khi tìm hiểu sâu hơn, cả phần cứng và phần mềm của điện toán lượng tử khác nhiều so với điện toán hiện nay chúng ta đang sử dụng – tạm gọi là điện toán “cổ điển”. Vậy điện toán lượng tử phải có một cái gì đó hơn hẳn điện toán cổ điển thì người ta mới “lao đầu” vào chứ?

Điện toán lượng tử có tiềm năng năng giải quyết một số vấn đề tính toán mà kể cả những siêu máy tính mạnh nhất hiện nay và bất kỳ máy tính cổ điển nào trong tương lai không giải được. Ví dụ tiêu biểu nhất là khả năng phá khóa các loại mật mã trên nền RSA dùng thuật toán phân tích thành thừa số nguyên tố của Peter Shor (tham khảo https://en.wikipedia.org/wiki/Shor%27s_algorithm). Ngoài ra, cần phải kể đến các ứng dụng trong mô phỏng các hệ thống hóa học, vật liệu, sinh học, đặc biệt là các ứng dụng tiềm năng để phát triển vật liệu mới. Người ta thấy điện toán lượng tử có “tiềm năng” tính toán nhanh hơn điện toán cổ điển theo cấp số mũ. Nói theo ngôn ngữ của độ phức tạp tính toán: nếu điện toán cổ điển có độ phức tạp là O(2^n) thì điện toán lượng tử có độ phức tạp là O(n). Để cho dễ hình dung, nếu n = 100 thì điện toán cổ điển cần đến 2^100 bước trong khi điện toán lượng tử chỉ cần vài trăm bước để tính. Chú ý rằng 2^100 là một số có 30 chữ số thập phân. Nghĩa là đối với điện toán cổ điển đây là vấn đề bất khả thi còn đối với điện toán lượng tử nó chỉ diễn ra trong tích tắc.

Tôi để từ “tiềm năng” trong nháy vì đó mới chỉ là tiềm năng. Còn chuyện biến tiềm năng đó thành thực tế còn rất nhiều thách thức cả về phần cứng lẫn phần mềm.

 

#3_Quantum Computer Hardware. Phần cứng của máy tính lượng tử có cấu trúc chia thành 4 tầng (plane):

a. Quantum Data Plane (tầng dữ liệu lượng tử): Đây là phần “hạt nhân” của máy tính lượng tử, là cấu trúc vật lý của qubit.

b. Control and Measurement Plane (tầng điều khiển và đo): Chuyển tín hiệu số sang tín hiệu tương tự để điều khiển các qubit. “Đọc/đo” các tín hiệu sập (collapse) của qubit (tầng a. và chuyển đến bộ xử lý tín hiệu số.

c. Control Processor Plane (tầng xử lý điều khiển): Chuyển thuật toán thành các chuỗi điều khiển để chuyển xuống cho tầng dưới (tầng b.) và chuyển đo sang tầng d.

d. Host Processor (bộ xử lý điều phối): Là một máy tính thông thường chịu trách nhiệm kết nối mạng, kết nối với lưu trữ dữ liệu và giao diện người dùng.

Trên đây là hệ sinh thái của hệ thống lượng tử bao gồm cả các máy tính cổ điển. Tầng a. được bảo quản trong buồng lạnh gần với nhiệt độ 0 tuyệt đối (vài chục mili độ Kelvin), nhiệt độ ở tầng b. khoảng 77 độ Kelvin.

 

Để dễ hình dung: giả thiết chúng ta viết một chương trình điều khiển các qubit bằng ngôn ngữ Q# (Q Sharp). Mã nguồn của chương trình và bản biên dịch mã nguồn nằm ở tầng d. Sau đó sẽ được chuyển xuống tầng c. Tại đây các thuật toán sẽ được chuyển thành các chuỗi điều khiển. Chuỗi điều khiển về thực chất là một loạt các gate (cổng) sắp xếp theo tuần tự. Sau đó chuỗi này sẽ được chuyển xuống tầng b. và tại đây sẽ chuyển các tín hiệu số thành các tín hiệu tương tự để điều khiển các qubit (các qubit nằm ở tầng a.).

 

#4_Qubit Technologies. Nói đến máy tính lượng tử là phải nói đến công nghệ chế tạo các qubit. Không giống như các bóng bán dẫn tích hợp quy mô rất lớn (VLSI), việc xây dựng một máy tính lượng tử dựa trên các qubit đòi hỏi phải tích hợp các công nghệ từ nhiều lĩnh vực, bao gồm chân không, laser, hệ thống quang học, radio tần số (RF), công nghệ vi sóng và bộ điều khiển điện tử kết hợp. Hiện nay có 2 công nghệ triển vọng nhất là công nghệ siêu dẫn và bẫy ion.

Số lượng qubit được tạo ra là một chỉ số quan trọng. Càng nhiều qubit thì độ phức tạp về công nghệ càng cao và nhiễu lượng tử càng lớn. Người ta chia máy tính lượng tử thành 2 loại chính là Gate-based Quantum Computer (máy tính lượng tử số) và Quantum Annealer (máy ủ lượng tử).

Gate-based Quantum Computer: Đây là trường hợp các qubit liên đới với nhau (entangled). Loại máy tính lượng tử này rất khó để tạo ra được số qubit lớn. Một số công ty công nghệ hàng đầu của thế giới đang nghiên cứu phát triển loại máy tính này, xin kể ra một vài trong số đó:

Google đã chế tạo ra máy tính lượng tử 72 qubit sử dụng công nghệ siêu dẫn;

IBM đã chế tạo ra máy tính lượng tử 40 qubit sử dụng công nghệ siêu dẫn;

Intel đã chế tạo ra máy tính lượng tử 49 qubit sử dụng công nghệ spin qubit;

Các công ty dẫn đầu về loại máy tính lượng tử này gồm Google, IBM, Intel, Ion Q, Microsoft và Rigetti.

 

Quantum Annealer:

Trong khi máy tính lượng tử số (gate-based quantum computer) có thể dùng cho hầu hết các vấn đề thì máy ủ lượng tử (quantum annealer) lại chỉ thích hợp cho một số vấn đề về tối ưu hóa và lấy mẫu (sampling). Công ty D-Wave đã sản xuất được máy ủ lượng tử có số qubit đến 2000.

 

#5_Quantum Computer Software. Ngoài phần cứng, hiển nhiên là chúng ta cần có phần mềm vì nếu không có phần mềm thì máy tính lượng tử chả có tác dụng gì. Phần mềm bao gồm ngôn ngữ lập trình (ngôn ngữ lập trình này phải cho phép lập các thuật toán lượng tử), bộ biên dịch/thông dịch (dịch từ ngôn ngữ lập trình ra ngôn ngữ điều khiển các qubit), công cụ phân tích, tối ưu hóa, gỡ rối và kiểm tra.

Ngôn ngữ lập trình lượng tử bậc cao: Có thể kể ra như:

QCL (Quantum Computation Language): tương tự như ngôn ngữ C;

Q# (Q Sharp): ngôn ngữ do Microsoft phát triển: https://docs.microsoft.com/en-us/quantum/?view=qsharp-preview

Một số ngôn ngữ khác: Quipper, Quafl, LIQuI|> (Liquid).

Trong số các ngôn ngữ lập trình bậc cao, tôi thấy Q# tương đối dễ tiếp cận.

Nếu tính ngôn ngữ nhúng cũng là bậc cao thì có thể kể đến Cirq do Google phát triển. Cirq thực chất là một gói trong ngôn ngữ Python. Nếu ai đã lập trình Python rồi thì việc lập trình cho máy tính lượng tử dễ như một nốt nhạc! Đương nhiên người lập trình phải hiểu bản chất của điện toán lượng tử.

Ngôn ngữ lập trình lượng tử bậc thấp (tương tự như ngôn ngữ Assembly trong máy tính cổ điển): Có thể kể ra như: QASM, OpenQASM, QcoDeS, ARTIQ. Các ngôn ngữ này có các câu lệnh trực tiếp điều khiển các qubit.

 

Mô phỏng: Đây là dùng máy tính cổ điển để mô phỏng máy tính lượng tử. Việc này đặc biệt hữu ích trong quá trình phát triển các phần mềm lượng tử. Tuy nhiên, câu hỏi đặt ra là các máy tính cổ điển có thể mô phỏng đến mức độ nào của máy tính lượng tử? Người ta tính ra là siêu máy tính hiện nay có thể mô phỏng đến máy tính lượng tử cỡ 50 qubit.

 

Kiểm tra, gỡ rối: Đối với máy tính lượng tử, đây là các vấn đề cực kỳ khó: độ phức tạp của hệ thống lượng tử, giới hạn của khả năng mô phỏng bằng máy tính cổ điển, và bản chất của lượng tử: không đọc được giá trị của các hệ số khi hệ thống lượng tử ở trạng thái chồng chập (superposition) – vì nếu đọc thì hệ thống sẽ tự động chuyển từ trạng thái chồng chập sang trạng thái nhị phân và hủy toàn bộ các hệ số trước đó.

 

Cách tiếp cận hiện nay chủ yếu là dựa vào mô phỏng và thông qua điện toán đám mây. Nghĩa là chúng ta – những người lập trình – có thể viết code trong các ngôn ngữ như Q#, trong Python, … Sau đó gửi mã qua đám mây đến một hệ sinh thái lượng tử (Google, Microsoft, IBM, …) để hệ sinh thái đó cho “chạy” chương trình trên máy tính lượng tử.

 

#6_Quantum Algorithms. Muốn biến máy tính lượng tử hơn hẳn máy tính cổ điển bắt buộc phải có thuật toán riêng cho điện toán lượng tử. Với các đặc tính riêng của lượng tử, có cảm giác rằng với một máy tính lượng tử có n qubit thì một nhịp tính của máy này có thể thực hiện 2n phép tính. Mặt khác, khi kết thúc quá trình tính toán, kết quả quan sát thấy chỉ là một dãy n bit thông thường. Đây chính là điểm rất thách thức khi thiết kế các thuật toán lượng tử.

Đâu là những viên gạch nền tảng cho các thuật toán lượng tử với đặc điểm vừa nêu trên? Một trong số đó là biến đổi Fourier lượng tử (Quantum Fourier Transform, viết tắt là QFT – tham khảo: https://en.wikipedia.org/wiki/Quantum_Fourier_transform).

Có thể coi thuật toán phân tích thành thừa số nguyên tố của Peter Shor là một ứng dụng thông minh của biến đổi Fourier lượng tử.

Ngoài các thuật toán trên cần phải kể đến một số thuật toán khác như thuật toán Grover, các thuật toán lượng tử mô phỏng Hamilton, các thuật toán lượng tử giải phương trình đại số tuyến tính, …

Tuy nhiên, nhìn chung thuật toán lượng tử vẫn đang là mảnh đất vỡ hoang.

 

#7_Quantum R&D. Theo báo cáo của công ty McKinsey năm 2015 thì vào thời điểm đó thế giới đã chi 1,5 tỷ euro cho nghiên cứu khoa học và công nghệ lượng tử (Quantum Science and Technology) trong đó lớn nhất là Hoa Kỳ (360 triệu euro), tiếp đến là Trung Quốc (220 triệu euro), Đức (120 triệu euro), Canada (100 triệu euro), Australia (75 triệu euro). Trong khu vực Đông Nam Á, chỉ thấy có Singapore (44 triệu euro).

Ở Việt Nam, trong Quyết định 3685/QĐ-BKHCN về Danh mục các công nghệ chủ chốt của công nghiệp 4.0 ban hành ngày 3/12/2018) tôi thấy có điện toán lượng tử đứng thứ 8 trong tổng số 43 công nghệ chủ chốt. Tuy nhiên, tôi không có thông tin về nhóm nào đã nghiên cứu về vấn đề này. Theo chủ quan của tôi, thuật toán lượng tử vẫn còn là vấn đề còn nhiều cái để mày mò và có thể “chạy thử” thuật toán trên các platfform mà các công ty công nghệ hàng đầu cung cấp dưới dạng open source và/hoặc miễn phí.

 

Nhân sắp đến ngày khai giảng, xin phép anh/chị nhàn đàm về một vấn đề ICT mà tôi nghĩ là còn mới mẻ.