共用方式為


針對 Azure Quantum 中的問題進行疑難排解

當您使用 Azure Quantum 服務時,可能會遇到連線或作業相關問題。 了解如何解決這些問題。

連接到您的工作區

問題:無法透過 pytket-azure CI 認證 Azure Quantum

嘗試使用 CI 環境中的套件使用 pytket-azure 環境變數 「AZURE_TENANT_ID」、「AZURE_CLIENT_ID」和 「AZURE_CLIENT_SECRET」 向 Azure Quantum 進行驗證時,您可能會遇到錯誤:

Code: InsufficientPermissions
Message: There are not enough permissions to perform this operation.

若要解決此問題,請嘗試改用 連接字串和環境變數 「AZURE_QUANTUM_CONNECTION_STRING」 進行驗證。 如需詳細資訊,請參閱使用 連接字串 連線。

connection_string = "[Copy connection string]" 

import os 

os.environ["AZURE_QUANTUM_CONNECTION_STRING"] = connection_string 

提交工作

問題:遺漏 targets

如果您發現您要執行作業的 target 不在可用的 target 清單中,您可能需要更新為 Visual Studio Code Quantum Development Kit(QDK)。 如需詳細資訊,請參閱 更新 QDK

問題:作業傳回無效的狀態代碼 「未經授權」

解決此問題的步驟:

  1. 開啟您的 Azure 入口網站 (https://portal.azure.com) 並驗證您的帳戶。

  2. 在 [流覽],選取 [訂用帳戶],然後選取您的訂用帳戶。

  3. 選取 [存取控制 (IAM)]。

  4. 在 [檢查存取權] 下,搜尋您的電子郵件地址,然後選取帳戶。

  5. 您不應該看到 擁有者參與者 這些角色。

  6. 選取 [角色指派] 索引標籤。

    注意

    如果您沒有看到 [ 角色指派 ] 索引標籤,您可能需要將入口網站展開至全螢幕,或關閉 <[您的名稱> 指派] 窗格。

  7. 選取 [ 角色] 下拉式列表,選取 [ 擁有者 ] 或 [參與者],然後輸入您的電子郵件地址,然後選取您的帳戶。

  8. 選擇 [儲存]。

  9. 您現在應該會看到您的帳戶已設定為 擁有者參與者 角色。

  10. 再次建立您的 Azure Quantum 工作區,然後針對這個新的工作區提交作業。

問題:「AuthorizationFailure - 此要求未獲授權執行這項作業」

如果作業提交失敗並顯示此訊息,即使您有與 Azure Quantum 服務的有效連線,儲存體帳戶可能會設定為封鎖公用網路存取。 Azure Quantum 服務僅支援透過公用因特網存取的記憶體帳戶。

若要檢查記憶體帳戶:

  • 在 Azure 入口網站的量子工作區頁面上,選取 [ 概觀 ],然後選取記憶體帳戶。
  • 在記憶體帳戶頁面上,於 [安全性 + 網络],選取 [網络]。
  • 在 [公用網络存取] 的 [防火牆和虛擬網络] 索引標籤中,確定已選取 [啟用所有網络]。

問題:嘗試透過 CLI 提交 Q# 程式時,「無法編譯程式」

當您嘗試在命令提示字元使用 az quantum submit 命令來提交工作時,可能會遇到以下錯誤訊息:

az quantum job submit ...
Failed to compile program.
Command ran in 21.181 seconds (init: 0.457, invoke: 20.724)

當 Q# 程式出現問題導致編譯失敗時,就會發生此錯誤。

問題:編譯程序錯誤「閘道參數數目錯誤」

從本端 Jupyter Notebook 或指令行環境將工作提交至 Quantinuum ,並使用舊版 QASM (OPENQASM 2.0) 轉換器時,您可能會遇到下列錯誤:

Job ID <jobId> failed or was cancelled with the message: 1000: Compile error: [<file, line>] Wrong number of gate parameters

當逗號 “,” 或其他非句號字元作為小數分隔符使用時,就會發生此錯誤,如同許多語言的常見。 以句點 「.」 取代任何非句點小數分隔符

// replace this line:
rx(1,5707963267948966) q[0];

// with this:
rx(1.5707963267948966) q[0];

問題:編譯程序錯誤「不適用於目前的編譯組態」

當您在 VS Code 的 Jupyter Notebook 中執行 Q# 程式碼儲存格時,可能會遇到錯誤:

<function name> not found. Found a matching item `<function name>' that is not available for the current compilation configuration

此錯誤表示您將 QIR(量子中間表示) target 設定檔設定為 Basic ,且相關函數需要 Unrestrictedtarget 設定檔。 如果您未指定target設定檔類型,則編譯器會自動為您設定為 target

問題:作業傳回無效的狀態代碼 「禁止」

當您提交第一份工作時,您可能會收到「禁止」錯誤代碼。

此問題可能在建立工作區期間引起:Azure Quantum 無法完成將新工作區連結至指定儲存體帳戶的角色指派。 一般如果在工作區建立完成之前關閉索引標籤或網頁瀏覽器視窗,就會發生這種情況。

您可以遵循下列步驟,確認您是否遇到此角色指派問題:

  • 在 Azure 入口網站中流覽至新的量子工作區
  • 在 [概觀>>] 底下,選取 [記憶體帳戶] 連結
  • 在左側導覽列中,選取 [存取控制 (IAM)]
  • 選取〈角色指派〉
  • 確認您的工作區顯示為 參與者
  • 如果工作區未顯示為 Contributor,您可以:
    • 建立新的工作區,並確定在關閉網頁瀏覽器索引標籤或視窗之前,等待工作區建立完成。
    • 在記憶體帳戶下新增適當的角色指派
      • 存取控制 (IAM) >新增角色指派
      • 角色 > 貢獻者
      • 將存取權指派給 > 使用者、群組或服務主體
      • 選取 > [工作區名稱]
      • 儲存

問題:作業失敗並出現錯誤碼:QIRPreProcessingFailed

當您將作業提交至 Rigetti 提供者時,作業會失敗,並在 Azure 入口網站 的作業管理控制台中回報:

Error code: QIRPreProcessingFailed
Error message: No match found for output recording set converter from outputrecordingset.v2.labeled to outputrecordingset.v1.nonlabeled

此錯誤可能是因為與pyqirqiskit-qir的舊版之間存在依存性衝突所造成的。 在你本機上卸載所有版本的 pyqirpyqir-*qiskit-qir,然後安裝或更新包含 qdkazure 附加功能的 qiskit Python 函式庫:

pip install --upgrade "qdk[azure,qiskit]"

議題:擷取失敗作業的基本資訊

將工作提交至硬體 target之後,您的工作可能會在佇列中停留數小時,甚至一兩天,然後才會失敗。

若要擷取失敗的詳細資訊:

  • 若要檢視輸出或傳回的錯誤訊息,請使用 get_results() 方法搭配作業物件:

    job.get_results()
    
  • 在 Azure 入口網站工作區中,選取 [作業 > 作業管理],然後選取 [作業 名稱 ] 以開啟詳細數據窗格。

  • 在 Azure 入口網站工作區中,選取 >。 確認target機器的可用性。 提交至 targets 狀態為 「已降級」 的工作在佇列中停留的時間可能比平常更長。 有時候工作會被處理,但有時它們會因逾時而傳回錯誤target

問題:以程序設計方式連線到我的工作區時,我一直被要求進行驗證

如果您使用 Azure Quantum Python SDK,例如在 Jupyter Notebook 中,並使用 AzureQuantumProvider 類連線至您的工作區,則每次執行腳本時,您可能會遇到彈出視窗,以對 Azure 進行驗證。

因為每次執行腳本時,都會重設您的安全性令牌,因此會出現此提示窗口。

您可以使用 Azure CLI 執行 az login 來解決此問題。 如需詳細資訊,請參閱 az login

問題:更新 qdk[azure] 套件後,監控工作時出現錯誤「ModuleNotFoundError: No module named qiskit.tools」

從 Qiskit 1.0 起,qiskit.tools 函式所需的 job_monitor() 模組已被取代。 若要監視作業,請使用 wait_for_final_state() 或函式 result

job = MyTarget.run(circuit, shots=100)

# to wait until the job is complete
job.wait_for_final_state() 

# to return the results of the job
result = job.result()

Azure Quantum 資源估算器

下列問題可能會阻止資源預估工作完成。 瞭解如何解決這些問題。

問題:量子演算法至少必須包含一個 T 狀態或度量

為了考慮將任意量子程式對應至邏輯量子位的 2D 陣列,資源估算器假設 平行合成循序 Pauli 計算 (PSSPC) 是在輸入程式上執行。 在該方法中,所有 Clifford 運算都經過所有 T 閘道、旋轉閘和測量運算交換,留下單一的 Clifford 運算,以經典計算有效地評估。 因此,不包含 T 狀態的量子程式,例如來自 T 閘門、旋轉閘門或測量操作的程式,不需要任何實體量子運算資源。 如需平行合成循序 Pauli 計算的詳細資訊,請參閱 arXiv:2211.07629,附錄 D

Error message: Algorithm requires at least one T state or measurement to estimate resources

問題:實體 T 閘道錯誤率太高

邏輯 T 狀態錯誤率取決於錯誤預算和量子程式中的 T 狀態數目。 T Factory 可用來從實體 T 閘道建立具有所需邏輯 T 狀態誤差率的 T 狀態,其具有 實體 T 閘道錯誤率。 通常,實體 T 閘道錯誤率高於所需的邏輯 T 閘道錯誤率。 在某些情況下,實體 T 閘道的錯誤率明顯比所需的邏輯 T 狀態錯誤率高得多,因此找不到任何 T 工廠能夠產生符合質量要求的邏輯 T 狀態。

Error message: No T factory can be found, because the required logical T state error rate is too low

以下是您可以在這類案例中執行的動作:

  • 增加錯誤預算,可以是總預算或是 T 狀態的部分預算。
  • 減少量子位參數中的實體 T 閘道錯誤率。
  • 藉由減少 T 閘、旋轉閘和 Toffoli 閘,降低量子程式中的 T 狀態數目。

問題:實體 T 閘道錯誤率太低

也有相反的案例,其中實體 T 閘道錯誤率低於所需的邏輯 T 狀態錯誤率。 在這種情況下,不需要 T 工廠,因為實體 T 門的錯誤率已具備足夠的品質。 不過,此情境需要仔細考慮傳輸單元將實體 T 狀態從碼距 1 傳送到演算法碼距所帶來的影響(請參閱 arXiv:2211.07629 附錄 C)。 一般而言,在 T 工廠的存在下,轉移單位的成本是微不足道的。

Error message: No T factory can be found, because the required logical T state error rate is too high; transfer units are necessary to perform a resource estimation accurately. One possibility to circumvent this problem is to increase the physical T gate error rate of the qubit parameters.

以下是您可以在這類案例中執行的動作:

  • 將量子位參數中的實體 T 閘道錯誤率提高到所需的邏輯 T 狀態錯誤率。
  • 減少錯誤預算,或只減少 T 狀態的部分。

問題:錯誤率必須是介於 0 到 1 之間的數位

錯誤率一律應該是介於 0 到 1 之間的值。 此外,若要使錯誤更正生效,閘道和測量的實體誤差率必須低於值,該值取決於錯誤更正碼的屬性和必要的邏輯錯誤率。

以下是您可以在這類案例中執行的動作:

  • 增加錯誤預算,不論是總預算還是邏輯錯誤專屬的部分。
  • 減少量子位參數中的實體錯誤率。

問題:最大運行時間和最大實體量子位數目的限制條件是互相排斥的。

資源估算器目前只接受 maxDurationmaxPhysicalQubits 之一的條件約束,但是不能同時接受兩者。 如果您為單一作業同時提供maxDurationmaxPhysicalQubits條件約束,則會返回BothDurationAndPhysicalQubitsProvided錯誤。

問題:執行 QIR 估算計數容器:未定義的符號 __quantum__rt__result_record_output

此錯誤是由於透過 Python 套件產生 qiskit_qir Qiskit 電路的 QIR,而未將參數設定 record_outputFalse

若要避免此錯誤,請採取下列其中一個動作:

  • 使用 qdk.azure Python 模組將 Qiskit 電路提交給 Azure Quantum(建議)。
  • 使用 qiskit_qir Python 套件時,請務必在提交電路之前將參數設定record_output為 。False

建立 Azure Quantum 工作區

當您使用 Azure 入口網站建立工作區時,可能會發生下列問題。

問題:您無法在 Azure 入口網站 中存取工作區建立窗體;系統會要求您改為註冊訂用帳戶

發生此問題的原因是您沒有作用中的訂用帳戶。

例如,您可能已註冊 30 天免費試用 Azure 訂用帳戶,其中包括可在 Azure 服務上使用的 200 美元免費 Azure 點數。 這些 Azure 點數不符合在量子硬體提供者上使用的資格。 註冊 30 天後,或一旦您使用 $200 美元的免費 Azure 點數 (以先發生者為準),您必須升級至 隨用隨付訂用帳戶 ,才能繼續使用 Azure Quantum 服務。 擁有作用中的訂用帳戶之後,Azure 入口網站可讓您存取工作區建立表單。

若要查看訂用帳戶和相關聯的角色清單,請參閱 檢查您的訂用帳戶

問題:快速建立選項無法使用

您必須是 您選取的訂用帳戶擁有者 ,才能使用 [ 快速建立] 選項。 若要查看訂用帳戶和相關聯的角色清單,請參閱 檢查您的訂用帳戶。 如果您是訂用帳戶 參與者,您可以使用 [ 進階建立] 選項來建立工作區。

問題:您無法建立或選取資源群組或記憶體帳戶

發生此問題的原因是您沒有訂用帳戶、資源群組或記憶體帳戶層級所需的授權。 如需必要存取層級的詳細資訊,請參閱 建立工作區的角色需求。

問題:選取 [建立] 之後,會出現「部署驗證失敗」錯誤訊息

此錯誤訊息可能包含更多詳細資料,例如「用戶端沒有執行動作的授權」。

發生此問題的原因是您沒有訂用帳戶、資源群組或記憶體帳戶層級所需的授權。 如需必要存取層級的詳細資訊,請參閱 建立工作區的角色需求。

如果最近授與存取權,您可能需要重新整理頁面。 新角色指派有時最多可能需要一小時,才能在整個堆疊的快取權限中生效。

問題:您在 [提供者] 索引標籤上看不到特定的量子硬體提供者

發生此問題的原因是提供者不支援訂用帳戶設定的計費區域。 例如,如果您的訂用帳戶是在以色列設定,[提供者] 索引標籤就不會將 Rigetti 列為可用的提供者。 如需提供者清單及其依國家/地區的可用性,請參閱 Azure Quantum 提供者的全域可用性。

問題:工作區建立或新增/移除提供者失敗,並出現 “ResourceDeploymentFailure” 或 “ProviderDeploymentFailure”

此問題可能包含更多詳細數據,例如「ResourceDeploymentFailure - 『AzureAsyncOperationWaiting』 資源作業已完成,終端機布建狀態為 'Failed'。」或「ProviderDeploymentFailure - 無法建立提供者的計劃:<提供者>」。

發生此失敗的原因是租使用者未啟用 Azure Marketplace 購買。 請遵循啟用 Azure Marketplace 購買中的步驟以啟用 Azure Marketplace 購買。

問題:部署量級工作區或部署儲存體帳戶失敗,並出現下列其中一個錯誤

  • 工作區:「資源寫入作業無法順利完成,因為它已達到終端機布建狀態 『Failed』」。
  • 記憶體帳戶:「範本部署因違反原則而失敗」。

如果您的訂用帳戶安全性原則封鎖建立已啟用公用存取的儲存體帳戶,則可能會發生此問題。 Azure Quantum 服務僅支援透過公用因特網存取的記憶體帳戶。

若要解決此問題,請與您的訂用帳戶管理員合作,以取得您想要使用的記憶體帳戶例外狀況。