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:
Criar, enumerar e cancelar tarefas quânticas
Enumerar o estado e as quotas do fornecedor
Código fonte | Documentação | de referência da APIDocumentação do | produtoExemplos
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
- Node.js versão 8.x.x ou superior
- Subscrição do Azure
- Área de Trabalho do Azure Quantum
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:
- ID da Subscrição - é semelhante a XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXX E pode ser encontrado na sua lista de subscrições no azure
- Nome do Grupo de Recursos - um contentor que contém recursos relacionados para uma solução do Azure
- Nome da Área de Trabalho – uma coleção de recursos associados à execução de aplicações quânticas ou de otimização
- Localização – escolha o melhor datacenter por região geográfica
- Nome do Contentor de Armazenamento - o armazenamento de blobs
- Credencial - utilizada 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 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
- Visite a nossa documentação do Produto para saber mais sobre o Azure Quantum.
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.
Azure SDK for JavaScript