共用方式為


針對 Azure Quantum 中的常見問題進行疑難解答

使用 Azure Quantum 服務時,您可能會遇到這些常見問題。 瞭解您可以如何解決它們。

線上到您的工作區

問題:無法透過 pytket-azure CI 向 Azure Quantum 進行驗證

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

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清單中遺漏執行作業的位置,您可能需要更新為最新版本的 Quantum Development Kit for Visual Studio Code。 如需詳細資訊,請參閱 更新 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];

注意

此問題不會在 Azure Quantum 入口網站的託管筆記本中發生,只會發生在本機開發環境中。

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

當您在 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 設定檔已設定為 [基本],且有問題的函式需要不受限制target的配置檔。 若要將 target 設定檔設定為 [不受限制]:

  1. 在 VS Code 的 Q# 程式中,選取 [Q#: QIR] 以底部狀態列為基礎
  2. 從頂端狀態列中顯示的選項中,選取 [Q#:不受限制]。

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

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

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

您可以遵循下列步驟,確認您正在執行此角色指派問題:

  • 在 Azure 入口網站中流覽至新的量子工作區
  • 在 [概觀>基本資訊>記憶體帳戶] 底下,選取 [記憶體帳戶] 連結
  • 在左側導覽列中,選取 [存取控制 (IAM)]
  • 選取 [角色指派]
  • 確認工作區顯示為 參與者
  • 如果工作區未顯示為 參與者 ,您可以:
    • 建立新的工作區,並確定在關閉網頁瀏覽器索引標籤或視窗之前,等待工作區建立完成。
    • 在記憶體帳戶下新增適當的角色指派
      • 存取控制(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 的所有版本,然後使用 [qiskit] 參數安裝或更新 azure-quantum Python 套件:

pip install --upgrade azure-quantum[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

問題:更新 azure-quantum 套件之後,我在監視作業時收到「ModuleNotFoundError:沒有名為 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) (請參閱 arXiv:2211.07629,附錄 D) 是在輸入程式上執行。 在該方法中,所有 Clifford 作業都會透過所有 T 閘道、旋轉門和測量作業通勤,留下單一的 Clifford 作業,以傳統方式有效率地評估。 因此,包含 T 狀態的量子程式,例如 T 閘道或旋轉閘道,或測量作業不需要任何實體量子運算資源。

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 狀態的邏輯 T 狀態。

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

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

  • 增加錯誤預算,包括 T 狀態的總或部分。
  • 減少量子位參數中的實體 T 閘道錯誤率。
  • 藉由減少 T 閘和 Toffoli 閘和 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 之間的值。 此外,若要使錯誤更正生效,閘道和測量的實體誤差率必須低於值,該值取決於錯誤更正碼的屬性和必要的邏輯錯誤率。

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

  • 增加錯誤預算,包括邏輯錯誤的總計或部分。
  • 減少量子位參數中的實體錯誤率。

問題:條件約束最大運行時間和實體量子位數目上限互斥

資源估算器目前只接受其中一個 或 maxPhysicalQubits 條件約束,maxDuration但不接受兩個條件約束。 如果您的單一作業同時 maxDuration 提供 和 maxPhysicalQubits條件約束,則會傳 BothDurationAndPhysicalQubitsProvided 回錯誤。

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

此錯誤會導致透過 qiskit_qir Python 套件產生 Qir for Qiskit 線路,而不將 參數設定 record_outputFalse

若要避免此錯誤,請執行下列其中一項:

  • 使用 azure_quantum Python 套件,將 Qiskit 線路提交至 Azure Quantum(建議)。
  • 使用 qiskit_qir Python 套件時,請務必先將 參數設定 record_outputFalse ,再提交線路。

建立 Azure Quantum 工作區

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

這是因為租使用者尚未啟用 Azure Marketplace 購買。 請遵循啟用 Azure Marketplace 購買以啟用 Azure Marketplace 購買中的步驟。

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

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

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

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

Azure Quantum 入口網站

問題:已儲存的筆記本不會載入

在工作區中選取 [筆記本 ] 之後,已儲存的筆記本清單會顯示進度列,但永遠不會載入。

這可能會因為下列三個原因而發生:

  1. 如果記憶體帳戶已不存在,則為 。 如果連結至工作區的記憶體帳戶已刪除,就會發生這種情況。 若要確認,請選取工作區的 [ 概觀 ] 頁面,然後選取記憶體帳戶的連結。 如果儲存體帳戶已刪除,您會看到 404 - 找不到 錯誤。

  2. 如果未啟用記憶體帳戶進行公用因特網存取。 如需詳細資訊,請參閱 授權失敗

  3. 如果工作區的受控識別不是 記憶體帳戶的參與者 。 檢查工作區身分識別(使用與工作區同名)仍具有 記憶體帳戶的參與者 角色指派。 若要確認,請選取工作區的 [ 概觀 ] 頁面,然後選取記憶體帳戶的連結。 在記憶體帳戶的 [概觀] 頁面上,選取 [存取控制][IAM],並確認工作區列在 [參與者] 底下