Biblioteka klienta zadań Usługi Azure Quantum dla języka JavaScript — wersja 1.0.0-beta.1
Ten pakiet zawiera izomorficzny zestaw SDK dla obiektu QuantumJobClient.
Azure Quantum to usługa platformy Microsoft Azure, której można użyć do uruchamiania programów obliczeniowych kwantowych lub rozwiązywania problemów z optymalizacją w chmurze. Za pomocą narzędzi i zestawów SDK usługi Azure Quantum można tworzyć programy kwantowe i uruchamiać je na różnych symulatorach kwantowych i maszynach. Bibliotekę @azure/quantum-jobs
klienta można używać do wykonywania następujących czynności:
Tworzenie, wyliczanie i anulowanie zadań kwantowych
Wyliczanie stanu dostawcy i przydziałów
Kod | źródłowyDokumentacja referencyjna interfejsu | APIDokumentacja | produktuPróbki
Wprowadzenie
Ta sekcja zawiera wszystkie elementy, które deweloper musi zainstalować i szybko utworzyć swoje pierwsze połączenie klienckie.
Instalowanie pakietu
Zainstaluj bibliotekę klienta zadań Usługi Azure Quantum dla języka JavaScript przy użyciu polecenia npm
:
npm install @azure/quantum-jobs
Wymagania wstępne
- Node.js w wersji 8.x.x lub nowszej
- Subskrypcja platformy Azure
- Obszar roboczy usługi Azure Quantum
Uwierzytelnianie klienta
Aby uwierzytelnić się w usłudze, możesz użyć opcji DefaultAzureCredential z biblioteki @azure/identity
. Spowoduje to wypróbowanie różnych mechanizmów uwierzytelniania w oparciu o środowisko (np. zmienne środowiskowe, managedIdentity, CachedTokens), a na koniec nastąpi powrót do elementu InteractiveBrowserCredential.
Klient umożliwia również użytkownikowi zastąpienie powyższego zachowania przez przekazanie własnych implementacji tokenuCredential.
TokenCredential
jest domyślnym mechanizmem uwierzytelniania używanym przez zestawy SDK platformy Azure.
Kluczowe pojęcia
QuantumJobClient
jest klasą główną, która ma być używana do uwierzytelniania, tworzenia, wyliczania i anulowania zadań.
JobDetails
zawiera wszystkie właściwości zadania.
ProviderStatus
zawiera informacje o stanie dostawcy.
QuantumJobQuota
zawiera właściwości limitu przydziału.
Przykłady
Tworzenie klienta
Utwórz wystąpienie obiektu QuantumJobClient, przekazując następujące parametry:
- Identyfikator subskrypcji — wygląda następująco: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX I znajduje się na liście subskrypcji na platformie Azure
- Nazwa grupy zasobów — kontener zawierający powiązane zasoby dla rozwiązania platformy Azure
- Nazwa obszaru roboczego — kolekcja zasobów skojarzonych z uruchomionymi aplikacjami kwantowymi lub optymalizacji
- Lokalizacja — wybierz najlepsze centrum danych według regionu geograficznego
- Nazwa kontenera magazynu — magazyn obiektów blob
- Poświadczenia — używane do uwierzytelniania
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"
}
);
Uzyskiwanie identyfikatora URI sygnatury dostępu współdzielonego kontenera
Utwórz kontener magazynu, aby umieścić dane.
// 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();
Przekazywanie danych wejściowych
Za pomocą identyfikatora URI sygnatury dostępu współdzielonego przekaż dane wejściowe json do klienta obiektu blob. Zawiera on parametry do użycia z optymalizacjami inspirowanymi kwantami
// 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));
Tworzenie zadania
Po przekazaniu definicji problemu do usługi Azure Storage możesz użyć jobs.create
do zdefiniowania zadania usługi 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);
Pobieranie zadania
GetJob
pobiera określone zadanie według jego identyfikatora.
// Get the job that we've just created based on its jobId
const myJob = await quantumJobClient.jobs.get(jobId);
Pobieranie zadań
Aby wyliczyć wszystkie zadania w obszarze roboczym, użyj jobs.list
metody .
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();
}
Następne kroki
- Odwiedź naszą dokumentację produktu , aby dowiedzieć się więcej o usłudze Azure Quantum.
Współtworzenie
Zobacz CONTRIBUTING.md , aby uzyskać szczegółowe informacje na temat kompilowania, testowania i współtworzenia tej biblioteki.
W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź stronę cla.microsoft.com.
W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące kodeksu postępowania lub skontaktuj się z opencode@microsoft.com dodatkowymi pytaniami lub komentarzami.
Rozwiązywanie problemów
Wszystkie operacje usługi Zadań kwantowych zgłaszają błąd RequestFailedException z pomocnymi kodami błędów. Wiele z tych błędów można odzyskać.
Azure SDK for JavaScript