微軟以Rust重新編寫了Azure Quantum開發套件(QDK),將其編譯成WebAssembly以供VS Code和網頁使用,同時也能針對Python編譯為原生二進位檔案。官方提到,新的QDK速度提升超過100倍,而且安裝體積也縮小超過100倍,整體安裝和開發流程更容易,甚至在瀏覽器就可以執行。

微軟在2017年發布了QDK,這一路來量子運算技術發展快速,微軟在QDK加入了許多功能與技術,但是也因為這樣疊床架屋,部分功能已經成為QDK發展的絆腳石,幾經考量之後他們決定重寫。

原本的QDK的一部分是以.NET為基礎,Q#則是微軟針對量子運算所設計的語言,與.NET緊密整合,因此開發者使用QDK時,便會碰觸到.NET相關的工具和概念,也就是說,量子開發人員在開發量子應用程式之前,需要先學習.NET,官方提到,這增加了額外的學習曲線。

量子開發人員更熟悉Python,因此重新設計QDK消除.NET相依性,也就可以降低進入門檻,簡化安裝、學習、編寫程式、故障排除,甚至是向量子電腦提交工作的任務。

除此之外,舊QDK的平臺支援性不夠好,像是不完全支援Apple Silicon和Windows on ARM64,官方表示,雖然過去相依於特定平臺並非是個問題,但隨著技術和平臺發展,這帶來了一些挑戰。況且,原本QDK涵蓋多個儲存庫、建置工作管線、語言、執行環境和發布頻道,導致整體開發速度變慢了,開發人員需要花費大量的時間維護程式碼、更新安全性和排除建置等問題。

由於QDK執行環境的相依項目,需要安裝的全套二進位檔案相當龐大,除了.NET執行環境之外,解析器中還有一些F#函式庫相依項目,模擬器包含C++多執行緒的函式庫相依項目,再加上Q#項目SDK的NuGet相依項目,這些總共需要180 MB。除了下載和初始化需要花費一些時間,這些元件相互溝通的複雜性,也出現一些效能和可靠性問題。

為了解決QDK既存的諸多問題,在2022年底,微軟決定重新設計QDK,其中一項關鍵改變是盡可能以Rust編寫程式碼,因為Rust可以簡單地建置成各種平臺的原生二進位檔案,也可以建置成WebAssembly,讓程式在瀏覽器中運作。

同時,微軟也限制新程式碼庫使用的語言,只能是Rust、Python和JavaScript。Rust主要用於開發核心,Python則建置和發布套件,以及部分腳本任務,JavaScript則用於建置VS Code擴充套件,還有一些網頁整合程式碼。新的QDK也盡量降低技術和相依項目,降低學習、安裝、維護和產品容量所產生的額外成本。

現在量子開發人員只需要安裝Rust、Python和Node.js,再複製一個儲存庫和執行Python建置腳本,便完成所有事前工作。開發者在VS Code修改Rust或TypeScript腳本時,可以即時看到結果,而且無論是在本地或是雲端,都可以使用同一套建置腳本,這確保了流程的一致性。

微軟的QDK改進成果相當顯著,整個開發套件的體積縮小超過100倍,原本QDK會在本地產生超過180 MB的二進位檔案,現在新的VS Code擴充套件的VSIX套件只有約為 700KB,就已經包含所有Q#開發所需要的所有內容,安裝僅需要幾秒鐘。

在執行速度上也獲得非常大幅度的提升,過去QDK編譯時間需要以分鐘計,但相同程式在新的QDK則是以毫秒時間在運作。而現有QDK建置工作管線需要耗時2到3小時,許多問題需要跨多個儲存庫協調,而現在所有程式碼都在同一個儲存庫,每次提交程式碼到主分支時,都可以在10分鐘內完成建置、測試並且推送到Playground。

語言服務、編譯器和除錯工具運作也都非常快速,而且就連在瀏覽器也能獲得這樣的高效體驗。微軟的VS Code for the Web能夠在瀏覽器中執行IDE,不需要本地安裝,透過將擴充套件建置成為網頁擴充套件,VS Code在瀏覽器也能擁有桌面版的功能。因此量子開發人員也可以在瀏覽器中,用VS Code對Q#程式碼進行除錯,並同時登入Azure Quantum工作區,且不需要在本地安裝任何軟體。

熱門新聞

Advertisement