Azure Quantum Jobs-klientbibliotek för JavaScript – version 1.0.0-beta.1
Det här paketet innehåller en isomorf SDK för QuantumJobClient.
Azure Quantum är en Microsoft Azure-tjänst som du kan använda för att köra kvantberäkningsprogram eller lösa optimeringsproblem i molnet. Med hjälp av Azure Quantum-verktyg och SDK:er kan du skapa kvantprogram och köra dem mot olika kvantsimulatorer och datorer. Du kan använda @azure/quantum-jobs
klientbiblioteket för att:
Skapa, räkna upp och avbryta kvantjobb
Räkna upp providerstatus och kvoter
Källkod | API-referensdokumentation | Produktdokumentation | Prover
Komma igång
Det här avsnittet innehåller allt som en utvecklare behöver för att installera och skapa sin första klientanslutning mycket snabbt.
Installera paketet
Installera Azure Quantum Jobs-klientbiblioteket för Javascript med npm
:
npm install @azure/quantum-jobs
Förutsättningar
- Node.js version 8.x.x eller senare
- Azure-prenumeration
- Azure Quantum-arbetsyta
Autentisera klienten
Om du vill autentisera med tjänsten kan du använda DefaultAzureCredential från @azure/identity
biblioteket. Då provas olika autentiseringsmekanismer baserat på miljön (t.ex. miljövariabler, ManagedIdentity, CachedTokens) och slutligen återgår det till InteractiveBrowserCredential.
Klienten tillåter också att användaren åsidosätter ovanstående beteende genom att skicka sina egna implementeringar av TokenCredential.
TokenCredential
är standardmetoden för autentisering som används av Azure SDK:er.
Viktiga begrepp
QuantumJobClient
är den rotklass som ska användas för att autentisera, skapa, räkna upp och avbryta jobb.
JobDetails
innehåller alla egenskaper för ett jobb.
ProviderStatus
innehåller statusinformation för en provider.
QuantumJobQuota
innehåller kvotegenskaper.
Exempel
Skapa klienten
Skapa en instans av QuantumJobClient genom att skicka in följande parametrar:
- Prenumerations-ID – ser ut som XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX och finns i din lista över prenumerationer på Azure
- Resursgruppnamn – en container som innehåller relaterade resurser för en Azure-lösning
- Namn på arbetsyta – en samling tillgångar som är associerade med att köra kvant- eller optimeringsprogram
- Plats – välj det bästa datacentret efter geografisk region
- Lagringscontainerns namn – din bloblagring
- Autentiseringsuppgifter – används för att autentisera
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"
}
);
Hämta CONTAINER SAS-URI
Skapa en lagringscontainer för att placera dina data.
// 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();
Ladda upp indata
Använd SAS-URI:n och ladda upp json-indata till blobklienten. Detta innehåller de parametrar som ska användas med kvantinspirerade optimeringar
// 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));
Skapa jobbet
Nu när du har laddat upp din problemdefinition till Azure Storage kan du använda jobs.create
för att definiera ett Azure Quantum-jobb.
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);
Hämta jobb
GetJob
hämtar ett visst jobb med sitt ID.
// Get the job that we've just created based on its jobId
const myJob = await quantumJobClient.jobs.get(jobId);
Hämta jobb
Om du vill räkna upp alla jobb på arbetsytan använder du jobs.list
metoden .
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ästa steg
- Gå till vår produktdokumentation för att lära dig mer om Azure Quantum.
Bidra
Mer information om hur du skapar, testar och bidrar till det här biblioteket finns i CONTRIBUTING.md .
Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns i cla.microsoft.com.
Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Mer information finns i Vanliga frågor och svar om uppförandekod eller kontakt opencode@microsoft.com med ytterligare frågor eller kommentarer.
Felsökning
Alla Quantum Jobs-tjänståtgärder genererar en RequestFailedException om fel med användbara ErrorCodes. Många av dessa fel kan återställas.
Azure SDK for JavaScript