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 のインスタンスを作成します。
- サブスクリプション ID - XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX のように見え、azure 上のサブスクリプションの一覧にあります
- リソース グループ名 - Azure ソリューションの関連リソースを保持するコンテナー
- ワークスペース名 - 量子または最適化アプリケーションの実行に関連付けられている資産のコレクション
- 場所 - 地理的リージョン別に最適なデータ センターを選択する
- ストレージ コンテナー名 - BLOB ストレージ
- 資格情報 - 認証に使用されます
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();
}
次のステップ
- Azure Quantum の詳細については、 製品ドキュメントを参照 してください。
共同作成
このライブラリのビルド、テスト、および投稿の詳細については、 CONTRIBUTING.md を参照してください。
このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、「 cla.microsoft.com」を参照してください。
このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。
トラブルシューティング
すべての Quantum Jobs サービス操作は、エラー発生時に RequestFailedException をスローし、役に立つ ErrorCodes を使用します。 これらのエラーの多くは回復可能です。
Azure SDK for JavaScript