다음을 통해 공유


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의 instance 만듭니다.

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

Get Job

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(기여자 라이선스 계약)에 동의해야 합니다. 자세한 내용은 cla.microsoft.com.

이 프로젝트에는 Microsoft Open Source Code of Conduct(Microsoft 오픈 소스 준수 사항)가 적용됩니다. 자세한 내용은 Code of Conduct FAQ(규정 FAQ)를 참조하세요. 또는 추가 질문이나 의견은 opencode@microsoft.com으로 문의하세요.

문제 해결

모든 Quantum Jobs 서비스 작업은 유용한 ErrorCodes를 사용하여 실패 시 RequestFailedException을 throw합니다. 이러한 오류 중 대부분은 복구할 수 있습니다.

Impressions