Клиентская библиотека заданий Azure Quantum для JavaScript версии 1.0.0-beta.1
Этот пакет содержит изоморфный пакет SDK для QuantumJobClient.
Azure Quantum — это служба Microsoft Azure, с помощью которой можно выполнять программы для квантовых вычислений или решать задачи оптимизации в облаке. С помощью средств и пакетов SDK для Azure Quantum можно создавать программы для квантовых вычислений и запускать их в различных квантовых симуляторах и машинах. Клиентская @azure/quantum-jobs
библиотека может использоваться для выполнения следующих следующих способов:
Создание, перечисление и отмена квантовых заданий
Перечисление состояния и квот поставщика
Исходный код | Справочная документация по API | Документация по продукту | Примеры
Начало работы
Этот раздел содержит все, что необходимо разработчику для быстрой установки и создания первого клиентского подключения.
Установка пакета
Установите клиентскую библиотеку заданий Azure Quantum для JavaScript с помощью npm
:
npm install @azure/quantum-jobs
Предварительные требования
- Node.js версии 8.x.x или более поздней версии
- Подписка Azure.
- Рабочая область Azure Quantum
Аутентификация клиента
Для проверки подлинности в службе можно использовать DefaultAzureCredential из библиотеки @azure/identity
. При этом будут опробованы различные механизмы проверки подлинности в зависимости от среды (например, переменные среды, ManagedIdentity, CachedTokens) и, наконец, откат к InteractiveBrowserCredential.
Клиент также позволяет пользователю переопределить приведенное выше поведение путем передачи собственных реализаций TokenCredential.
TokenCredential
— это механизм проверки подлинности по умолчанию, используемый пакетами SDK для Azure.
Основные понятия
QuantumJobClient
— это корневой класс, используемый для проверки подлинности, создания, перечисления и отмены заданий.
JobDetails
содержит все свойства задания.
ProviderStatus
содержит сведения о состоянии поставщика.
QuantumJobQuota
содержит свойства квоты.
Примеры
Создание клиента
Создайте экземпляр QuantumJobClient, передав следующие параметры:
- Идентификатор подписки — выглядит как XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXX, и его можно найти в списке подписок в 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"
}
);
Получение URI SAS контейнера
Создайте контейнер хранилища для хранения данных.
// 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();
Отправка входных данных
С помощью URI SAS отправьте входные данные JSON в клиент BLOB-объекта. Содержит параметры, которые будут использоваться с квантовыми оптимизациями.
// 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.
В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.
Устранение неполадок
Все операции службы квантовых заданий будут вызывать исключение RequestFailedException при сбое с полезными кодами ошибок. Многие из этих ошибок можно исправить.
Azure SDK for JavaScript