針對 Azure Quantum 進行疑難解答

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

正在提交作業

問題:遺失 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. 再次 Create 您的 Azure Quantum 工作區,然後針對這個新的工作區提交作業。

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

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

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

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

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

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

  • 在 Azure 入口網站中瀏覽至新的量子工作區
  • 在 [概觀>Essentials>儲存器帳戶] 下,選取 [儲存體帳戶] 連結
  • 在左側導覽列中,選取 [存取控制 (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 入口網站工作區中,selecd Operations > Providers。 確認機器的可用性 target 。 提交至 targets 且狀態為 [已降級 ] 的工作可能會停留在佇列中,時間可能比平常長。 有時候會處理作業,但有時它們逾時,並傳回無法使用的錯誤target

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

如果您使用 Jupyter 筆記本內的 Azure Quantum Python SDK (,例如) ,並使用 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) 是在輸入程式上執行。 在該方法中,所有 以 T 閘道、旋轉閘道和測量作業來通通,讓單一的一個作業可以有效率地評估。 因此,包含 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 Factory 可以產生足夠質量的邏輯 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 Factory,因為實體 T 閘道錯誤率已經足夠品質。 不過,這需要仔細考慮將實體 T 狀態從程式代碼距離 1 傳輸到演算法的程式代碼距離的影響, (請參閱 arXiv:2211.07629 附錄 C) 。 一般而言,在 T Factory 的存在中,轉移單位的成本是可忽略的。

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 條件約束,但不接受兩個條件約束。 如果您的單 maxDuration 一作業同時提供 和 maxPhysicalQubits條件約束,則會傳 BothDurationAndPhysicalQubitsProvided 回錯誤。

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

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

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

  • 使用 azure_quantum Python 套件,將 Qiskit 線路提交至 Azure Quantum (建議) 。
  • 使用 qiskit_qir Python 套件時,請務必在提交線路之前將 參數False設定record_output為 。

建立 Azure Quantum 工作區

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

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

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

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

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

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

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

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

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

問題:選取 [部署驗證失敗] 錯誤訊息之後會出現 Create

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

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

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

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

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

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

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

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

Azure Quantum 入口網站

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

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

這可能會因為兩個原因而發生:

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

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