Libreria client di Processi di Azure Quantum per JavaScript - versione 1.0.0-beta.1
Questo pacchetto contiene un SDK isomorfico per QuantumJobClient.
Azure Quantum è un servizio di Microsoft Azure che può essere usato per eseguire programmi per il calcolo quantistico o risolvere problemi di ottimizzazione sul cloud. Usando gli strumenti e gli SDK di Azure Quantum, è possibile creare programmi quantistici ed eseguirli in diversi simulatori quantistici e computer. È possibile usare la @azure/quantum-jobs
libreria client per:
Creare, enumerare e annullare processi quantistici
Enumerare lo stato e le quote del provider
Codice sorgente | Informazioni di riferimento per l'API | Documentazione del prodotto | Esempi
Guida introduttiva
Questa sezione include tutto ciò che uno sviluppatore deve installare e creare la prima connessione client molto rapidamente.
Installare il pacchetto
Installare la libreria client di Processi di Azure Quantum per Javascript con npm
:
npm install @azure/quantum-jobs
Prerequisiti
- Node.js versione 8.x.x o successiva
- Sottoscrizione di Azure
- Area di lavoro di Azure Quantum
Autenticare il client
Per eseguire l'autenticazione con il servizio, è possibile usare DefaultAzureCredential dalla @azure/identity
libreria. In questo modo si proveranno meccanismi di autenticazione diversi in base all'ambiente (ad esempio, variabili di ambiente, ManagedIdentity, CachedTokens) e infine eseguirà il fallback a InteractiveBrowserCredential.
Il client consente inoltre all'utente di eseguire l'override del comportamento precedente passando le proprie implementazioni di TokenCredential.
TokenCredential
è il meccanismo di autenticazione predefinito usato dagli SDK di Azure.
Concetti chiave
QuantumJobClient
è la classe radice da usare per autenticare e creare, enumerare e annullare i processi.
JobDetails
contiene tutte le proprietà di un processo.
ProviderStatus
contiene informazioni sullo stato per un provider.
QuantumJobQuota
contiene le proprietà della quota.
Esempio
Creare il client
Creare un'istanza di QuantumJobClient passando questi parametri:
- ID sottoscrizione : è simile a XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX e si trova nell'elenco di sottoscrizioni in Azure
- Nome gruppo di risorse: un contenitore che contiene risorse correlate per una soluzione di Azure
- Nome dell'area di lavoro : raccolta di asset associati all'esecuzione di applicazioni quantistico o di ottimizzazione
- Località : scegliere il data center migliore in base all'area geografica
- Nome contenitore di archiviazione - Archiviazione BLOB
- Credenziali : usate per l'autenticazione
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"
}
);
Ottenere l'URI di firma di accesso condiviso del contenitore
Creare un contenitore di archiviazione per inserire i dati.
// 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();
Caricare i dati di input
Usando l'URI di firma di accesso condiviso, caricare i dati di input JSON nel client BLOB. Contiene i parametri da usare con le ottimizzazioni di ispirazione quantistica
// 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));
Creare il processo
Dopo aver caricato la definizione del problema in Archiviazione di Azure, è possibile usare jobs.create
per definire un processo di 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);
Get Job
GetJob
recupera un processo specifico in base al relativo ID.
// Get the job that we've just created based on its jobId
const myJob = await quantumJobClient.jobs.get(jobId);
Ottenere processi
Per enumerare tutti i processi nell'area di lavoro, usare il jobs.list
metodo .
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();
}
Passaggi successivi
- Per altre informazioni su Azure Quantum, vedere la documentazione del prodotto .
Contributo
Per informazioni dettagliate sulla compilazione, il test e il contributo a questa libreria, vedere la CONTRIBUTING.md .
In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, visitare cla.microsoft.com.
Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento Open Source di Microsoft) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.
Risoluzione dei problemi
Tutte le operazioni del servizio Processi quantistici genereranno un'eccezione RequestFailedException in caso di errore con codici di errore utili. Molti di questi errori sono ripristinabili.
Azure SDK for JavaScript