Biblioteca de clientes de Trabalhos do Azure Quantum para JavaScript – versão 1.0.0-beta.1
Esse pacote contém um SDK isomórfico para QuantumJobClient.
O Azure Quantum é um serviço Microsoft Azure que você pode usar para executar programas de computação quântica ou resolver problemas de otimização na nuvem. Usando as ferramentas e os SDKs do Azure Quantum, você pode criar programas quânticos e executá-los em diferentes simuladores e computadores quânticos. Você pode usar a @azure/quantum-jobs
biblioteca de clientes para:
Criar, enumerar e cancelar trabalhos quânticos
Enumerar cotas e status de provedor
Código-fonte | Documentação de referência da API | Documentação do produto | Exemplos
Introdução
Esta seção inclui tudo o que um desenvolvedor precisa para instalar e criar sua primeira conexão de cliente muito rapidamente.
Instalar o pacote
Instale a biblioteca de clientes de Trabalhos do Azure Quantum para Javascript com npm
:
npm install @azure/quantum-jobs
Pré-requisitos
- Node.js versão 8.x.x ou superior
- Assinatura do Azure
- Azure Quantum Workspace
Autenticar o cliente
Para autenticar com o serviço, você pode usar DefaultAzureCredential da @azure/identity
biblioteca. Isso tentará mecanismos de autenticação diferentes com base no ambiente (por exemplo, Variáveis de Ambiente, ManagedIdentity, CachedTokens) e, por fim, ele fará fallback para InteractiveBrowserCredential.
O cliente também permite que o usuário substitua o comportamento acima passando suas próprias implementações do TokenCredential.
TokenCredential
é o mecanismo de autenticação padrão usado pelos SDKs do Azure.
Principais conceitos
QuantumJobClient
é a classe raiz a ser usada para autenticar e criar, enumerar e cancelar trabalhos.
JobDetails
contém todas as propriedades de um trabalho.
ProviderStatus
contém status informações para um provedor.
QuantumJobQuota
contém propriedades de cota.
Exemplos
Crie o cliente
Crie uma instância do QuantumJobClient passando estes parâmetros:
- ID da assinatura – se parece com XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXX E pode ser encontrada na sua lista de assinaturas no azure
- Nome do Grupo de Recursos – um contêiner que contém recursos relacionados para uma solução do Azure
- Nome do workspace – uma coleção de ativos associados à execução de aplicativos quânticos ou de otimização
- Localização – escolha o melhor data center por região geográfica
- Nome do Contêiner de Armazenamento – seu armazenamento de blobs
- Credencial – usada para autenticar
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 URI sas do contêiner
Crie um contêiner de armazenamento para colocar 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
Usando o URI sas, carregue os dados de entrada json no cliente blob. Isso contém os parâmetros a serem usados com otimizações inspiradas no Quantum
// 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 o trabalho
Agora que você carregou sua definição de problema no Armazenamento do Azure, você pode usar jobs.create
para definir um trabalho 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 trabalho
GetJob
recupera um trabalho específico por sua ID.
// Get the job that we've just created based on its jobId
const myJob = await quantumJobClient.jobs.get(jobId);
Obter Trabalhos
Para enumerar todos os trabalhos no workspace, use 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();
}
Próximas etapas
- Visite nossa documentação do Produto para saber mais sobre o Azure Quantum.
Participante
Consulte a CONTRIBUTING.md para obter detalhes sobre como criar, testar e contribuir para essa biblioteca.
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite cla.microsoft.com.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas frequentes sobre o Código de Conduta ou contate opencode@microsoft.com para enviar outras perguntas ou comentários.
Solução de problemas
Todas as operações de serviço trabalhos quânticos lançarão uma RequestFailedException em caso de falha com ErrorCodes úteis. Muitos desses erros são recuperáveis.
Azure SDK for JavaScript