JavaScript 用 Azure Quantum Jobs クライアント ライブラリ - バージョン 1.0.0-beta.1

このパッケージには、QuantumJobClient 用の同型 SDK が含まれています。

Azure Quantum は、量子コンピューティング プログラムを実行したり、クラウドでの最適化の問題を解決したりするために使用できる Microsoft Azure サービスです。 Azure Quantum のツールと SDK を使用して、量子プログラムを作成し、さまざまな量子シミュレーターとマシンに対して実行することができます。 クライアント ライブラリを使用すると、次の @azure/quantum-jobs ことができます。

作業の開始

このセクションには、開発者が最初のクライアント接続を 非常に迅速にインストールして作成するために必要なすべてのものが含まれています。

パッケージをインストールする

を使用して、Javascript 用の Azure Quantum Jobs クライアント ライブラリを npmインストールします。

npm install @azure/quantum-jobs

前提条件

クライアントを認証する

サービスで認証するには、ライブラリから DefaultAzureCredential を @azure/identity 使用できます。 これにより、環境 (環境変数、ManagedIdentity、CachedTokens など) に基づいてさまざまな認証メカニズムが試行され、最後に InteractiveBrowserCredential にフォールバックします。

また、クライアントでは、 TokenCredential の独自の実装を渡すことによって、ユーザーが上記の動作をオーバーライドすることもできます。

TokenCredential は、Azure SDK で使用される既定の認証メカニズムです。

主要な概念

QuantumJobClient は、ジョブの認証、作成、列挙、取り消しに使用するルート クラスです。

JobDetails には、ジョブのすべてのプロパティが含まれます。

ProviderStatus には、プロバイダーの状態情報が含まれています。

QuantumJobQuota にはクォータ プロパティが含まれています。

例

クライアントを作成する

次のパラメーターを渡して QuantumJobClient のインスタンスを作成します。

    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 を取得する

データを格納するストレージ コンテナーを作成します。

    // 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();

入力データのアップロード

SAS URI を使用して、JSON 入力データを BLOB クライアントにアップロードします。 これには、Quantum Inspired Optimizations で使用されるパラメーターが含まれています

    // 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));

ジョブを作成する

問題の定義を Azure Storage にアップロードしたので、 を使用 jobs.create して 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);

ジョブの取得

GetJob は、その ID で特定のジョブを取得します。

    // Get the job that we've just created based on its jobId
    const myJob = await quantumJobClient.jobs.get(jobId);

ジョブを取得する

ワークスペース内のすべてのジョブを列挙するには、 メソッドを使用します jobs.list 。

    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();
    }

次のステップ

共同作成

このライブラリのビルド、テスト、および投稿の詳細については、 CONTRIBUTING.md を参照してください。

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、「 cla.microsoft.com」を参照してください。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。

トラブルシューティング

すべての Quantum Jobs サービス操作は、エラー発生時に RequestFailedException をスローし、役に立つ ErrorCodes を使用します。 これらのエラーの多くは回復可能です。

インプレッション数