Partilhar via


Biblioteca de cliente do Azure Quantum Jobs para JavaScript – versão 1.0.0-beta.1

Este pacote contém um SDK isomórfico para QuantumJobClient.

O Azure Quantum é um serviço do Microsoft Azure que pode utilizar para executar programas de computação quântica ou resolver problemas de otimização na cloud. Com as ferramentas e os SDKs do Azure Quantum, pode criar programas quânticos e executá-los em diferentes simuladores e computadores quânticos. Pode utilizar a biblioteca de @azure/quantum-jobs cliente para:

Introdução

Esta secção inclui tudo o que um programador precisa para instalar e criar a sua primeira ligação de cliente muito rapidamente.

Instalar o pacote

Instale a biblioteca de cliente do Azure Quantum Jobs para Javascript com npm:

npm install @azure/quantum-jobs

Pré-requisitos

Autenticar o cliente

Para autenticar com o serviço, pode utilizar DefaultAzureCredential a @azure/identity partir da biblioteca. Isto irá experimentar diferentes mecanismos de autenticação com base no ambiente (por exemplo, Variáveis de Ambiente, ManagedIdentity, CachedTokens) e, por fim, reverterá para InteractiveBrowserCredential.

O cliente também permite que o utilizador substitua o comportamento acima ao transmitir as suas próprias implementações do TokenCredential.

TokenCredential é o mecanismo de Autenticação predefinido utilizado pelos SDKs do Azure.

Conceitos-chave

QuantumJobClient é a classe raiz a ser utilizada para autenticar e criar, enumerar e cancelar tarefas.

JobDetails contém todas as propriedades de uma tarefa.

ProviderStatus contém informações de estado para um fornecedor.

QuantumJobQuota contém propriedades de quota.

Exemplos

Criar o cliente

Crie uma instância do QuantumJobClient ao transmitir estes parâmetros:

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

Obter o URI de SAS de Contentor

Crie um contentor de armazenamento para colocar os seus dados.

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

Carregar Dados de Entrada

Com o URI de SAS, carregue os dados de entrada json para o cliente de blobs. Isto contém os parâmetros a utilizar com Otimizações Inspiradas no Quântico

    // 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));

Criar a tarefa

Agora que carregou a definição do problema para o Armazenamento do Azure, pode utilizar jobs.create para definir uma tarefa do 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);

Obter Tarefa

GetJob obtém uma tarefa específica pelo respetivo ID.

    // Get the job that we've just created based on its jobId
    const myJob = await quantumJobClient.jobs.get(jobId);

Obter Tarefas

Para enumerar todas as tarefas na área de trabalho, utilize o jobs.list método .

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

Passos seguintes

Contribuir

Veja o CONTRIBUTING.md para obter detalhes sobre como criar, testar e contribuir para esta biblioteca.

Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para obter detalhes, visite cla.microsoft.com.

Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para obter mais informações, consulte as FAQ do Código de Conduta ou o contacto opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.

Resolução de problemas

Todas as operações do serviço Quantum Jobs irão gerar um RequestFailedException sobre a falha com Códigos de Erro úteis. Muitos destes erros são recuperáveis.

Impressões