JavaScript용 Azure Quantum Jobs 클라이언트 라이브러리 - 버전 1.0.0-beta.1
이 패키지에는 QuantumJobClient용 동형 SDK가 포함되어 있습니다.
Azure Quantum은 양자 컴퓨팅 프로그램을 실행하거나 클라우드에서 최적화 문제를 해결하는 데 사용할 수 있는 Microsoft Azure 서비스입니다. Azure Quantum 도구 및 SDK를 사용하여 양자 프로그램을 만들고 여러 양자 시뮬레이터와 컴퓨터에 대해 실행할 수 있습니다. 클라이언트 라이브러리를 사용하여 다음을 @azure/quantum-jobs
수행할 수 있습니다.
양자 작업 만들기, 열거 및 취소
공급자 상태 및 할당량 열거
소스 코드 | API 참조 설명서 | 제품 설명서 | 샘플
시작
이 섹션에는 개발자가 첫 번째 클라이언트 연결을 매우 빠르게 설치하고 만드는 데 필요한 모든 것이 포함되어 있습니다.
패키지 설치
을 사용하여 Javascript용 Azure Quantum Jobs 클라이언트 라이브러리를 npm
설치합니다.
npm install @azure/quantum-jobs
사전 요구 사항
- Node.js 버전 8.x.x 이상
- Azure 구독
- Azure Quantum 작업 영역
클라이언트 인증
서비스를 사용하여 인증하려면 라이브러리에서 DefaultAzureCredential 을 @azure/identity
사용할 수 있습니다. 이렇게 하면 환경(예: 환경 변수, ManagedIdentity, CachedTokens)에 따라 다양한 인증 메커니즘이 시도되고 마지막으로 InteractiveBrowserCredential로 대체됩니다.
또한 클라이언트를 사용하면 사용자가 TokenCredential의 자체 구현을 전달하여 위의 동작을 재정의할 수 있습니다.
TokenCredential
는 Azure SDK에서 사용하는 기본 인증 메커니즘입니다.
주요 개념
QuantumJobClient
는 작업을 인증하고, 만들고, 열거하고, 취소하는 데 사용할 루트 클래스입니다.
JobDetails
에는 작업의 모든 속성이 포함됩니다.
ProviderStatus
에는 공급자에 대한 상태 정보가 포함되어 있습니다.
QuantumJobQuota
에는 할당량 속성이 포함되어 있습니다.
예
클라이언트 만들기
다음 매개 변수를 전달하여 QuantumJobClient의 instance 만듭니다.
- 구독 ID - XXXXXXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXXXXX와 같으며 Azure의 구독 목록에서 찾을 수 있습니다.
- 리소스 그룹 이름 - Azure 솔루션에 대한 관련 리소스를 보유하는 컨테이너입니다.
- 작업 영역 이름 - 양자 또는 최적화 애플리케이션 실행과 연결된 자산 컬렉션
- 위치 - 지리적 지역별로 최상의 데이터 센터 선택
- 스토리지 컨테이너 이름 - Blob Storage
- 자격 증명 - 인증에 사용
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();
}
다음 단계
- Azure Quantum에 대한 자세한 내용은 제품 설명서를 참조하세요.
참여
이 라이브러리의 빌드, 테스트 및 기여에 대한 자세한 내용은 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합니다. 이러한 오류 중 대부분은 복구할 수 있습니다.
Azure SDK for JavaScript