Поделиться через


Клиентская библиотека заданий Azure Quantum для JavaScript версии 1.0.0-beta.1

Этот пакет содержит изоморфный пакет SDK для QuantumJobClient.

Azure Quantum — это служба Microsoft Azure, с помощью которой можно выполнять программы для квантовых вычислений или решать задачи оптимизации в облаке. С помощью средств и пакетов SDK для Azure Quantum можно создавать программы для квантовых вычислений и запускать их в различных квантовых симуляторах и машинах. Клиентская @azure/quantum-jobs библиотека может использоваться для выполнения следующих следующих способов:

Начало работы

Этот раздел содержит все, что необходимо разработчику для быстрой установки и создания первого клиентского подключения.

Установка пакета

Установите клиентскую библиотеку заданий Azure Quantum для JavaScript с помощью npm:

npm install @azure/quantum-jobs

Предварительные требования

Аутентификация клиента

Для проверки подлинности в службе можно использовать DefaultAzureCredential из библиотеки @azure/identity . При этом будут опробованы различные механизмы проверки подлинности в зависимости от среды (например, переменные среды, ManagedIdentity, CachedTokens) и, наконец, откат к InteractiveBrowserCredential.

Клиент также позволяет пользователю переопределить приведенное выше поведение путем передачи собственных реализаций TokenCredential.

TokenCredential — это механизм проверки подлинности по умолчанию, используемый пакетами SDK для Azure.

Основные понятия

QuantumJobClient — это корневой класс, используемый для проверки подлинности, создания, перечисления и отмены заданий.

JobDetails содержит все свойства задания.

ProviderStatus содержит сведения о состоянии поставщика.

QuantumJobQuota содержит свойства квоты.

Примеры

Создание клиента

Создайте экземпляр QuantumJobClient, передав следующие параметры:

    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();
    }

Дальнейшие действия

Участие

Дополнительные сведения о создании, тестировании и участии в этой библиотеке см. в CONTRIBUTING.md .

На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Дополнительные сведения см. на странице cla.microsoft.com.

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.

Устранение неполадок

Все операции службы квантовых заданий будут вызывать исключение RequestFailedException при сбое с полезными кодами ошибок. Многие из этих ошибок можно исправить.

Просмотры