適用于 JavaScript 的 Azure Quantum Jobs 用戶端程式庫 - 1.0.0-Beta.1 版
此套件包含適用于 QuantumJobClient 的同型 SDK。
Azure Quantum 是可用來執行量子運算程式,或解決雲端最佳化問題的 Microsoft Azure 服務。 您可以使用 Azure Quantum 工具和 SDK 來建立量副程式,並針對不同的量子模擬器和機器執行它們。 您可以使用 @azure/quantum-jobs
用戶端程式庫來:
開始使用
本節包含開發人員 安裝並快速建立其第一個用戶端連線所需的所有專案。
安裝套件
使用 安裝適用于 JAVAscript npm
的 Azure Quantum Jobs 用戶端程式庫:
npm install @azure/quantum-jobs
必要條件
- Node.js 8.x.x 版或更高版本
- Azure 訂用帳戶
- Azure Quantum 工作區
驗證用戶端
若要向服務進行驗證,您可以從程式庫使用 DefaultAzureCredential@azure/identity
。 這會根據環境嘗試不同的驗證機制 (例如環境變數、ManagedIdentity、CachedTokens) ,最後,它會回復為 InteractiveBrowserCredential。
用戶端也允許使用者透過傳遞自己的 TokenCredential實作來覆寫上述行為。
TokenCredential
是 Azure SDK 所使用的預設驗證機制。
重要概念
QuantumJobClient
是用來驗證、建立、列舉和取消作業的根類別。
JobDetails
包含作業的所有屬性。
ProviderStatus
包含提供者的狀態資訊。
QuantumJobQuota
包含配額屬性。
範例
建立用戶端
傳入下列參數,以建立 QuantumJobClient 的實例:
- 訂 用帳戶識別碼 - 看起來像 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXX,您可以在 Azure 上的訂用帳戶清單中找到
- 資源組名 - 保留 Azure 解決方案相關資源的容器
- 工作區名稱 - 與執行量子或優化應用程式相關聯的資產集合
- 位置 - 依地理區域選擇最佳資料中心
- 儲存體容器名稱 - 您的 Blob 儲存體
- 認證 - 用來驗證
const credential = new DefaultAzureCredential();
// Create a QuantumJobClient
const subscriptionId = "your_subscription_id";
const resourceGroupName = "your_resource_group_name";
const workspaceName = "your_quantum_workspace_name";
const storageContainerName = "mycontainer";
const location = "westus"; //"your_location";
const endpoint = "https://" + location + ".quantum.azure.com";
const quantumJobClient = new QuantumJobClient(
credential,
subscriptionId,
resourceGroupName,
workspaceName,
{
endpoint: endpoint,
credentialScopes: "https://quantum.microsoft.com/.default"
}
);
取得容器 SAS URI
建立儲存體容器來放置您的資料。
// Get container Uri with SAS key
const containerUri = (
await quantumJobClient.storage.sasUri({
containerName: storageContainerName
})
).sasUri;
// Create container if not exists
const containerClient = new ContainerClient(containerUri);
await containerClient.createIfNotExists();
上傳輸入資料
使用 SAS URI,將 json 輸入資料上傳至 Blob 用戶端。 這包括要與Quantum Inspired Optimization搭配使用的參數
// Get input data blob Uri with SAS key
const blobName = "myjobinput.json";
const inputDataUri = (
await quantumJobClient.storage.sasUri({
containerName: storageContainerName,
blobName: blobName
})
).sasUri;
// Upload input data to blob
const blobClient = new BlockBlobClient(inputDataUri);
const problemFilename = "problem.json";
const fileContent = fs.readFileSync(problemFilename, "utf8");
await blobClient.upload(fileContent, Buffer.byteLength(fileContent));
建立作業
既然您已將問題定義上傳至 Azure 儲存體,您可以使用 jobs.create
來定義 Azure Quantum 作業。
const randomId = `${Math.floor(Math.random() * 10000 + 1)}`;
// Submit job
const jobId = `job-${randomId}`;
const jobName = `jobName-${randomId}`;
const inputDataFormat = "microsoft.qio.v2";
const outputDataFormat = "microsoft.qio-results.v2";
const providerId = "microsoft";
const target = "microsoft.paralleltempering-parameterfree.cpu";
const createJobDetails = {
containerUri: containerUri,
inputDataFormat: inputDataFormat,
providerId: providerId,
target: target,
id: jobId,
inputDataUri: inputDataUri,
name: jobName,
outputDataFormat: outputDataFormat
};
const createdJob = await quantumJobClient.jobs.create(jobId, createJobDetails);
取得工作
GetJob
依識別碼擷取特定作業。
// Get the job that we've just created based on its jobId
const myJob = await quantumJobClient.jobs.get(jobId);
取得作業
若要列舉工作區中的所有作業,請使用 jobs.list
方法。
let jobListResult = await quantumJobClient.jobs.list();
let listOfJobs = await jobListResult.next();
while (!listOfJobs.done) {
let job = listOfJobs.value;
console.log(` ${job.name}`);
listOfJobs = await jobListResult.next();
}
下一步
- 請流覽我們的 產品檔 以深入瞭解 Azure Quantum。
參與
如需建 置 、測試和參與此程式庫的詳細資訊,請參閱 CONTRIBUTING.md。
此專案歡迎參與和提供建議。 大部分的參與都要求您同意「參與者授權合約 (CLA)」,宣告您有權且確實授與我們使用投稿的權利。 如需詳細資訊,請造訪 cla.microsoft.com。
此專案採用 Microsoft Open Source Code of Conduct (Microsoft 開放原始碼管理辦法)。 如需詳細資訊,請參閱管理辦法常見問題集,如有任何其他問題或意見請連絡 opencode@microsoft.com。
疑難排解
所有 Quantum 作業服務作業都會在失敗時擲回 RequestFailedException,並提供實用的 ErrorCodes。 這些錯誤有許多是可復原的。