Azure Quantum Jobs-clientbibliotheek voor JavaScript - versie 1.0.0-beta.1
Dit pakket bevat een isomorf-SDK voor QuantumJobClient.
Azure Quantum is een Microsoft Azure-service die u kunt gebruiken om kwantumcomputingprogramma's uit te voeren of optimalisatieproblemen in de cloud op te lossen. Met behulp van de Azure Quantum-hulpprogramma's en SDK's kunt u kwantumprogramma's maken en deze uitvoeren op verschillende kwantumsimulators en -machines. U kunt de clientbibliotheek gebruiken voor het @azure/quantum-jobs
volgende:
Kwantumtaken maken, opsommen en annuleren
Providerstatus en quota opsommen
Broncode | API-referentiedocumentatie | Productdocumentatie | Voorbeelden
Aan de slag
Deze sectie bevat alles wat een ontwikkelaar nodig heeft om de eerste clientverbinding zeer snel te installeren en tot stand te brengen.
Het pakket installeren
Installeer de Azure Quantum Jobs-clientbibliotheek voor Javascript met npm
:
npm install @azure/quantum-jobs
Vereisten
- Node.js versie 8.x.x of hoger
- Azure-abonnement
- Azure Quantum-werkruimte
De client verifiëren
Als u zich wilt verifiëren bij de service, kunt u DefaultAzureCredential gebruiken vanuit de @azure/identity
bibliotheek. Dit zal verschillende verificatiemechanismen proberen op basis van de omgeving (bijvoorbeeld Omgevingsvariabelen, ManagedIdentity, CachedTokens) en ten slotte zal het terugvallen op InteractiveBrowserCredential.
De client staat de gebruiker ook toe om het bovenstaande gedrag te overschrijven door hun eigen implementaties van de TokenCredential door te geven.
TokenCredential
is het standaardverificatiemechanisme dat wordt gebruikt door Azure SDK's.
Belangrijkste concepten
QuantumJobClient
is de hoofdklasse die moet worden gebruikt om taken te verifiëren en te maken, op te sommen en te annuleren.
JobDetails
bevat alle eigenschappen van een taak.
ProviderStatus
bevat statusinformatie voor een provider.
QuantumJobQuota
bevat quotumeigenschappen.
Voorbeelden
De client maken
Maak een exemplaar van de QuantumJobClient door deze parameters door te geven:
- Abonnements-id : ziet eruit als XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX en is te vinden in uw lijst met abonnementen op Azure
- Naam van resourcegroep : een container met gerelateerde resources voor een Azure-oplossing
- Werkruimtenaam : een verzameling assets die zijn gekoppeld aan het uitvoeren van kwantum- of optimalisatietoepassingen
- Locatie : kies het beste datacenter per geografische regio
- Naam van opslagcontainer - uw blobopslag
- Referentie - gebruikt voor verificatie
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"
}
);
Sas-URI voor containers ophalen
Maak een opslagcontainer om uw gegevens op te slaan.
// 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();
Invoergegevens uploaden
Upload de json-invoergegevens met behulp van de SAS-URI naar de blob-client. Dit bevat de parameters die moeten worden gebruikt met door Quantum geïnspireerde optimalisaties
// 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));
De taak maken
Nu u de probleemdefinitie hebt geüpload naar Azure Storage, kunt u gebruiken jobs.create
om een Azure Quantum-taak te definiëren.
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);
Taak ophalen
GetJob
haalt een specifieke taak op met de bijbehorende id.
// Get the job that we've just created based on its jobId
const myJob = await quantumJobClient.jobs.get(jobId);
Taken ophalen
Gebruik de methode om alle taken in de werkruimte op te jobs.list
sommen.
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();
}
Volgende stappen
- Ga naar onze productdocumentatie voor meer informatie over Azure Quantum.
Bijdragen
Zie de CONTRIBUTING.md voor meer informatie over het bouwen, testen en bijdragen aan deze bibliotheek.
Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar cla.microsoft.com voor meer informatie.
Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.
Problemen oplossen
Alle bewerkingen van de Quantum-takenservice genereren een RequestFailedException bij een fout met nuttige Foutcodes. Veel van deze fouten kunnen worden hersteld.
Azure SDK for JavaScript