JavaScript için Azure Quantum Jobs istemci kitaplığı - sürüm 1.0.0-beta.1

Bu paket, QuantumJobClient için bir isomorphic SDK içerir.

Azure Quantum, kuantum bilişim programlarını çalıştırmak veya buluttaki iyileştirme sorunlarını çözmek için kullanabileceğiniz bir Microsoft Azure hizmetidir. Azure Quantum araçlarını ve SDK'larını kullanarak kuantum programları oluşturabilir ve bunları farklı kuantum simülatörleri ve makinelerde çalıştırabilirsiniz. İstemci kitaplığını @azure/quantum-jobs kullanarak aşağıdakileri yapabilirsiniz:

Başlarken

Bu bölüm, bir geliştiricinin ilk istemci bağlantısını çok hızlı bir şekilde yüklemek ve oluşturmak için ihtiyaç duyduğu her şeyi içerir.

Paketi yükleme

ile npmJavascript için Azure Quantum Jobs istemci kitaplığını yükleyin:

npm install @azure/quantum-jobs

Önkoşullar

İstemcinin kimliğini doğrulama

Hizmetle kimlik doğrulaması yapmak için kitaplıktan @azure/identityDefaultAzureCredential kullanabilirsiniz. Bu, ortama (örneğin Ortam Değişkenleri, ManagedIdentity, CachedTokens) bağlı olarak farklı kimlik doğrulama mekanizmaları dener ve son olarak InteractiveBrowserCredential'a geri dönüş yapacaktır.

İstemci ayrıca kullanıcının kendi TokenCredential uygulamalarını geçirerek yukarıdaki davranışı geçersiz kılmasını sağlar.

TokenCredential , Azure SDK'ları tarafından kullanılan varsayılan Kimlik Doğrulama mekanizmasıdır.

Önemli kavramlar

QuantumJobClient , işlerin kimliğini doğrulamak, işleri oluşturmak, listelemek ve iptal etmek için kullanılacak kök sınıftır.

JobDetails bir işin tüm özelliklerini içerir.

ProviderStatus sağlayıcının durum bilgilerini içerir.

QuantumJobQuota kota özellikleri içerir.

Örnekler

İstemci oluşturma

Şu parametreleri geçirerek QuantumJobClient örneğini oluşturun:

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

Kapsayıcı SAS URI'si alma

Verilerinizi yerleştirmek için bir depolama kapsayıcısı oluşturun.

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

Giriş Verilerini Karşıya Yükleme

SAS URI'sini kullanarak json giriş verilerini blob istemcisine yükleyin. Bu, Quantum Inspired Optimizations ile kullanılacak parametreleri içerir

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

İşi oluşturma

Artık sorun tanımınızı Azure Depolama'ya yüklediğinize göre, bir Azure Quantum işi tanımlamak için kullanabilirsiniz jobs.create .

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

İş Al

GetJob kimliğine göre belirli bir işi alır.

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

İşleri Al

Çalışma alanında tüm işleri listelemek için yöntemini kullanın 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();
    }

Sonraki adımlar

Katkıda bulunma

Bu kitaplığı oluşturma, test etme ve bu kitaplığa katkıda bulunma hakkında ayrıntılı bilgi için CONTRIBUTING.md bakın.

Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için cla.microsoft.com adresini ziyaret edin.

Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları SSS bölümüne bakın veya ek sorular veya yorumlarla iletişime geçin opencode@microsoft.com .

Sorun giderme

Tüm Kuantum İşleri hizmeti işlemleri, yararlı ErrorCode'larla hata durumunda bir RequestFailedException oluşturur. Bu hataların çoğu kurtarılabilir.

İzlenimler