建立您的第一個混合 Job - Amazon Braket

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立您的第一個混合 Job

本節說明如何使用 Python 指令碼建立混合 Job。或者,若要使用本機 Python 程式碼建立混合作業,例如您偏好的整合式開發環境 (IDE) 或 Braket 筆記本,請參閱以混合工作的形式執行您的本機程式碼

設定權限

執行第一個混合式工作之前,您必須確定您有足夠的權限可以繼續執行此工作。要確定您擁有正確的權限,請從 Braket 控制台左側的菜單中選擇「限」。Amazon Braket 的許可管理頁面可協助您確認其中一個現有角色是否具有足以執行混合任務的許可,或引導您建立可用於執行混合任務的預設角色 (如果您尚未擁有此類角色)。

Amazon Braket 服務的許可和設定頁面顯示服務連結角色和選項,以驗證混合式任務執行角色的現有角色。

若要確認您的角色具有足夠權限來執行混合式工作,請選取驗證現有角色按鈕。如果這樣做,您會收到找到角色的訊息。要查看角色的名稱及其角色 ARN,請選擇「顯示角色」按鈕。

Amazon Braket 許可和設定畫面顯示找到的服務連結角色,以及具有足夠許可執行混合任務的現有角色。

如果您沒有足夠權限執行混合工作的角色,您會收到一則訊息,指出找不到此類角色。選取 [建立預設角色] 按鈕以取得具有足夠權限的角色。

Amazon Braket 許可和設定頁面顯示找到的服務連結角色,且找不到混合任務執行角色。

如果角色已成功建立,您會收到一則確認訊息。

Amazon Braket 許可和設定頁面顯示找到的服務連結角色,以及已成功建立混合任務執行角色。

如果您沒有進行此查詢的權限,您將被拒絕訪問。在此情況下,請連絡您的內部 AWS 管理員。

AccessDenied 錯誤消息,指示用戶未被授權執行 iam: ListAttachedRolePolicies 上顯式拒絕。AmazonBraketJobsExecutionRole

建立並執行

一旦您擁有具有執行混合式工作權限的角色,就可以繼續進行了。您的第一個 Braket 混合作業的關鍵部分是算法腳本。它定義了您想要運行的算法,並包含經典邏輯和量子任務,這些任務是算法的一部分。除了演算法指令碼之外,您還可以提供其他相依性檔案。算法腳本及其依賴關係被稱為源模塊進入點定義了混合式工作啟動時要在來源模組中執行的第一個檔案或函數。

顯示使用控制台或筆記本創建量子任務,在量子設備上運行算法腳本以及分析結果的工作流程的圖表。

首先,請考慮下列演算法指令碼的基本範例,該範例會建立五個鈴鐺狀態並列印對應的量測結果。

import os from braket.aws import AwsDevice from braket.circuits import Circuit def start_here(): print("Test job started!") # Use the device declared in the job script device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"]) bell = Circuit().h(0).cnot(0, 1) for count in range(5): task = device.run(bell, shots=100) print(task.result().measurement_counts) print("Test job completed!")

將此檔案名稱為 algorithm_script.py 儲存在 Braket 筆記本或本機環境的目前工作目錄中。該 algorithm_script.py 文件具有start_here()作為計劃的入口點。

接下來,在與 algorithm_script.py 文件相同的目錄中創建一個 Python 文件或 Python 筆記本。這個指令碼會啟動混合作業,並處理任何非同步處理,例如列印我們感興趣的狀態或關鍵結果。此指令碼至少需要指定混合式工作指令碼和主要裝置。

注意

如需有關如何在筆記本的相同目錄中建立 Braket 筆記本或上傳檔案 (例如 algorithm_script.py 檔案) 的詳細資訊,請參閱使用 Amazon Braket Python SDK 執行您的第一個電路

對於這個基本的第一種情況,你定位一個模擬器。無論您鎖定哪種類型的量子裝置、模擬器或實際的量子處理單元 (QPU),您在下列指令碼device中指定的裝置都可用來排程混合作業,並且可供演算法指令碼做為環境變數AMZN_BRAKET_DEVICE_ARN使用。

注意

您只能使用混合式工作中可用 AWS 區域 的裝置。Amazon Braket SDK 會 auto 選擇這個 AWS 區域。例如,us-east-1 中的混合式工作可以使用IonQ、、和TN1裝置 SV1DM1,但不能使用裝置。Rigetti

如果您選擇量子計算機而不是模擬器,Braket 會安排您的混合任務以優先訪問運行所有量子任務。

from braket.aws import AwsQuantumJob from braket.devices import Devices job = AwsQuantumJob.create( Devices.Amazon.SV1, source_module="algorithm_script.py", entry_point="algorithm_script:start_here", wait_until_complete=True )

此參數會wait_until_complete=True設定詳細模式,以便您的工作在執行時列印實際工作的輸出。您應該會看到類似下列範例的輸出。

job = AwsQuantumJob.create( Devices.Amazon.SV1, source_module="algorithm_script.py", entry_point="algorithm_script:start_here", wait_until_complete=True, ) Initializing Braket Job: arn:aws:braket:us-west-2:<accountid>:job/<UUID> ......................................... . . . Completed 36.1 KiB/36.1 KiB (692.1 KiB/s) with 1 file(s) remaining#015download: s3://braket-external-assets-preview-us-west-2/HybridJobsAccess/models/braket-2019-09-01.normal.json to ../../braket/additional_lib/original/braket-2019-09-01.normal.json Running Code As Process Test job started!!!!! Counter({'00': 55, '11': 45}) Counter({'11': 59, '00': 41}) Counter({'00': 55, '11': 45}) Counter({'00': 58, '11': 42}) Counter({'00': 55, '11': 45}) Test job completed!!!!! Code Run Finished 2021-09-17 21:48:05,544 sagemaker-training-toolkit INFO Reporting training SUCCESS
注意

您也可以透過傳遞位置 (本機目錄或檔案的路徑,或 tar.gz 檔案的 S3 URI),將自訂模組與 AwsQuantumjob.create 方法搭配使用。有關工作示例,請參閱 Amazon Braket 示例 Github 存儲庫中混合任務文件夾中的平行集訓練 _For_QML.IPynb 文件。

監控結果

或者,您可以從 Amazon 訪問日誌輸出 CloudWatch。若要這麼做,請移至工作詳細資料頁面左側功能表的 [記錄群組] 索引標籤,選取記錄群組aws/braket/jobs,然後選擇包含工作名稱的記錄資料流。在上述範例中,即為 braket-job-default-1631915042705/algo-1-1631915190

CloudWatch 日誌組顯示日誌事件的列表,其中包含文件路徑和 Amazon Braket SDK Python 測試的時間戳。

您也可以選取 [混合式工作] 頁面,然後選擇 [設定],在主控台中檢視混合工作的狀態。

Amazon Braket 混合任務詳細資訊顯示摘要、事件時間、原始程式碼和執行個體組態以及停止狀況。

您的混合任務在 Amazon S3 執行時會產生一些成品。預設的 S3 儲存貯體名稱為,amazon-braket-<region>-<accountid>且內容位於目jobs/<jobname>/<timestamp>錄中。您可以在使用 Braket Python SDK 建立混合任務code_location時指定不同的位置,來設定儲存這些成品的 S3 位置。

注意

此 S3 儲存貯體必須與您的工作指令碼位於相同 AWS 區域 的位置。

jobs/<jobname>/<timestamp>錄包含一個子資料夾,其中包含來自檔案中入口點腳本model.tar.gz檔的輸出。還有一個名為的目錄script,在文件中包含您的算法腳本工source.tar.gz件。實際量子任務的結果位於名為的目錄中jobs/<jobname>/tasks