Pustaka klien Azure Quantum Jobs untuk JavaScript - versi 1.0.0-beta.1

Paket ini berisi SDK isomorfik untuk QuantumJobClient.

Azure Quantum adalah layanan Microsoft Azure yang dapat Anda gunakan untuk menjalankan program komputasi kuantum atau memecahkan masalah pengoptimalan di cloud. Dengan menggunakan alat dan SDK Azure Quantum, Anda dapat membuat program kuantum dan menjalankannya terhadap simulator dan mesin kuantum yang berbeda. Anda dapat menggunakan @azure/quantum-jobs pustaka klien untuk:

Memulai

Bagian ini mencakup semua yang dibutuhkan pengembang untuk menginstal dan membuat koneksi klien pertama mereka dengan sangat cepat.

Instal paketnya

Instal pustaka klien Azure Quantum Jobs untuk Javascript dengan npm:

npm install @azure/quantum-jobs

Prasyarat

Mengautentikasi klien

Untuk mengautentikasi dengan layanan, Anda dapat menggunakan DefaultAzureCredential dari @azure/identity pustaka. Ini akan mencoba mekanisme autentikasi yang berbeda berdasarkan lingkungan (misalnya Variabel Lingkungan, ManagedIdentity, CachedTokens) dan akhirnya, itu akan kembali ke InteractiveBrowserCredential.

Klien juga memungkinkan pengguna untuk mengambil alih perilaku di atas dengan meneruskan implementasi TokenCredential mereka sendiri.

TokenCredential adalah mekanisme Autentikasi default yang digunakan oleh Azure SDK.

Konsep utama

QuantumJobClient adalah kelas akar yang akan digunakan untuk mengautentikasi, dan membuat, menghitung, dan membatalkan pekerjaan.

JobDetails berisi semua properti pekerjaan.

ProviderStatus berisi informasi status untuk penyedia.

QuantumJobQuota berisi properti kuota.

Contoh

Membuat klien

Buat instans QuantumJobClient dengan meneruskan parameter ini:

  • Id Langganan - terlihat seperti XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX dan dapat ditemukan dalam daftar langganan Anda di azure
  • Nama Grup Sumber Daya - kontainer yang menyimpan sumber daya terkait untuk solusi Azure
  • Nama Ruang Kerja - kumpulan aset yang terkait dengan menjalankan aplikasi kuantum atau pengoptimalan
  • Lokasi - pilih pusat data terbaik menurut wilayah geografis
  • Nama Kontainer Penyimpanan - penyimpanan blob Anda
  • Kredensial - digunakan untuk mengautentikasi
    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"
      }
    );

Dapatkan URI SAS Kontainer

Buat kontainer penyimpanan untuk meletakkan data Anda.

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

Unggah Data Input

Menggunakan SAS URI, unggah data input json ke klien blob. Ini berisi parameter yang akan digunakan dengan Pengoptimalan Terinspirasi Quantum

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

Membuat pekerjaan

Setelah mengunggah definisi masalah ke Azure Storage, Anda dapat menggunakan jobs.create untuk menentukan pekerjaan 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);

Dapatkan Pekerjaan

GetJob mengambil pekerjaan tertentu dengan id-nya.

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

Mendapatkan Pekerjaan

Untuk menghitung semua pekerjaan di ruang kerja, gunakan jobs.list metode .

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

Langkah berikutnya

Berkontribusi

Lihat CONTRIBUTING.md untuk detail tentang membangun, menguji, dan berkontribusi pada pustaka ini.

Proyek ini menyambut baik kontribusi dan saran. Sebagian besar kontribusi mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda memiliki hak untuk, dan benar-benar melakukannya, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi cla.microsoft.com.

Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Tata Tertib atau hubungi opencode@microsoft.com untuk pertanyaan atau komentar lainnya.

Pemecahan Masalah

Semua operasi layanan Pekerjaan Quantum akan melempar RequestFailedException pada kegagalan dengan ErrorCodes yang bermanfaat. Banyak dari kesalahan ini dapat dipulihkan.

Tayangan