Azure Quantum Jobs-Clientbibliothek für JavaScript – Version 1.0.0-beta.1
Dieses Paket enthält ein isomorphes SDK für QuantumJobClient.
Azure Quantum ist ein Microsoft Azure-Dienst, mit dem Sie Quantencomputing-Programme ausführen oder Optimierungsprobleme in der Cloud lösen können. Mit den Azure Quantum-Tools und -SDKs können Sie Quantenprogramme erstellen und sie gegen verschiedene Quantensimulatoren und -maschinen laufen lassen. Sie können die @azure/quantum-jobs
Clientbibliothek für folgende Zwecke verwenden:
Erstellen, Auflisten und Abbrechen von Quantenaufträgen
Auflisten von Anbieter-status und Kontingenten
Quellcode | API-Referenzdokumentation | Produktdokumentation | Beispiele
Erste Schritte
Dieser Abschnitt enthält alles, was entwickler benötigen, um ihre erste Clientverbindung sehr schnell zu installieren und zu erstellen.
Installieren des Pakets
Installieren Sie die Azure Quantum Jobs-Clientbibliothek für Javascript mit npm
:
npm install @azure/quantum-jobs
Voraussetzungen
- Node.js Version 8.x.x oder höher
- Azure-Abonnement
- Azure Quantum-Arbeitsbereich
Authentifizieren des Clients
Um sich beim Dienst zu authentifizieren, können Sie DefaultAzureCredential aus der @azure/identity
Bibliothek verwenden. Dadurch werden verschiedene Authentifizierungsmechanismen basierend auf der Umgebung (z. B. Umgebungsvariablen, ManagedIdentity, CachedTokens) ausprobiert und schließlich auf InteractiveBrowserCredential zurückgesetzt.
Der Client ermöglicht es dem Benutzer auch, das oben genannte Verhalten zu überschreiben, indem er seine eigenen Implementierungen von TokenCredential übergeben.
TokenCredential
ist der standardauthentifizierungsmechanismus, der von Azure SDKs verwendet wird.
Wichtige Begriffe
QuantumJobClient
ist die Stammklasse, die zum Authentifizieren und Erstellen, Aufzählen und Abbrechen von Aufträgen verwendet werden soll.
JobDetails
enthält alle Eigenschaften eines Auftrags.
ProviderStatus
enthält status Informationen für einen Anbieter.
QuantumJobQuota
enthält Kontingenteigenschaften.
Beispiele
Erstellen des Clients
Erstellen Sie eine instance des QuantumJobClient, indem Sie die folgenden Parameter übergeben:
- Abonnement-ID : sieht wie XXXXXXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXXXXX aus und finden Sie in Ihrer Abonnementliste in Azure.
- Ressourcengruppenname : Ein Container mit zugehörigen Ressourcen für eine Azure-Lösung
- Arbeitsbereichsname : Eine Sammlung von Ressourcen, die der Ausführung von Quanten- oder Optimierungsanwendungen zugeordnet sind
- Standort : Wählen Sie das beste Rechenzentrum nach geografischer Region aus.
- Speichercontainername : Ihr Blobspeicher
- Anmeldeinformationen : Werden zur Authentifizierung verwendet
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"
}
);
Abrufen des Container-SAS-URI
Erstellen Sie einen Speichercontainer, um Ihre Daten zu speichern.
// 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();
Hochladen von Eingabedaten
Laden Sie mithilfe des SAS-URI die JSON-Eingabedaten auf den Blobclient hoch. Dies enthält die Parameter, die mit quanteninspirierten Optimierungen verwendet werden sollen.
// 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));
Erstellen des Auftrags
Nachdem Sie Ihre Problemdefinition nun in Azure Storage hochgeladen haben, können jobs.create
Sie einen Azure Quantum-Auftrag definieren.
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
ruft einen bestimmten Auftrag anhand seiner ID ab.
// Get the job that we've just created based on its jobId
const myJob = await quantumJobClient.jobs.get(jobId);
Aufträge abrufen
Verwenden Sie die jobs.list
-Methode, um alle Aufträge im Arbeitsbereich aufzulisten.
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();
}
Nächste Schritte
- Weitere Informationen zu Azure Quantum finden Sie in der Produktdokumentation .
Mitwirken
Weitere Informationen zum Erstellen, Testen und Mitwirken zu dieser Bibliothek finden Sie im CONTRIBUTING.md .
Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Weitere Informationen finden Sie unter cla.microsoft.com.
Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.
Problembehandlung
Alle Quantum Jobs-Dienstvorgänge lösen eine RequestFailedException bei Einem Fehler mit hilfreichen ErrorCodes aus. Viele dieser Fehler können wiederhergestellt werden.
Azure SDK for JavaScript