Udostępnij za pośrednictwem


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:

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

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:

    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

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ć.

Wrażenia