你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 JavaScript 的 Azure Quantum 作业客户端库 - 版本 1.0.0-beta.1
此包包含 QuantumJobClient 的同构 SDK。
Azure Quantum 是一项 Microsoft Azure 服务,可用于在云中运行量子计算程序或解决优化问题。 使用 Azure Quantum 工具和 SDK,你可以创建量子程序,并针对不同的量子模拟器和计算机运行它们。 可以使用 @azure/quantum-jobs
客户端库来:
入门
本部分包括开发人员 非常快速地安装和创建其第一个客户端连接所需的所有内容。
安装包
使用 npm
安装适用于 Javascript 的 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 的实例:
- 订阅 ID - 类似于 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,可在 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 Optimizations 配合使用的参数
// 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
按 ID 检索特定作业。
// 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 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。
故障排除
所有 Quantum 作业服务操作都会在失败时引发 RequestFailedException,并显示有用的 ErrorCode。 其中许多错误是可恢复的。