{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "508d0758", "metadata": {}, "source": [ "# How-to: Qiskit Hybrid Job" ] }, { "attachments": {}, "cell_type": "markdown", "id": "d11f022a", "metadata": {}, "source": [ "## Prepare files" ] }, { "attachments": {}, "cell_type": "markdown", "id": "f108e253", "metadata": {}, "source": [ "### Prepare Hybrid job script" ] }, { "cell_type": "code", "execution_count": 1, "id": "5f01867f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\"\"\"Example of usage of Qiskit-Braket provider.\"\"\"\n", "from qiskit import QuantumCircuit\n", "from qiskit_braket_provider import AWSBraketProvider\n", "\n", "from braket.jobs import save_job_result\n", "\n", "\n", "provider = AWSBraketProvider()\n", "backend = provider.get_backend(\"SV1\")\n", "circuit = QuantumCircuit(2)\n", "circuit.h(0)\n", "circuit.cx(0, 1)\n", "\n", "results = backend.run(circuit, shots=1)\n", "\n", "print(results.result().get_counts())\n", "save_job_result(results.result().get_counts())\n" ] } ], "source": [ "! cat ./data/3_hybrid_jobs/algorithm_script.py" ] }, { "attachments": {}, "cell_type": "markdown", "id": "547c4880", "metadata": {}, "source": [ "### Prepare docker image" ] }, { "cell_type": "code", "execution_count": 2, "id": "6b352997", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "FROM 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-base-jobs:1.0-cpu-py37-ubuntu18.04\n", "\n", "RUN python3 -m pip install --upgrade pip\n", "\n", "RUN python3 -m pip install --no-cache --upgrade git+https://github.com/qiskit-community/qiskit-braket-provider\n" ] } ], "source": [ "! cat ./data/3_hybrid_jobs/Dockerfile" ] }, { "attachments": {}, "cell_type": "markdown", "id": "ab26ae15", "metadata": {}, "source": [ "## Prepare env" ] }, { "attachments": {}, "cell_type": "markdown", "id": "825395d8", "metadata": {}, "source": [ "### Login to AWS CLI and docker\n", "\n", "Login to AWS' ERC to pull base image\n", "\n", "`aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 292282985366.dkr.ecr.us-west-2.amazonaws.com`\n", "\n", "Login to yours ERC to push your image\n", "\n", "`aws ecr get-login-password --region | docker login --username AWS --password-stdin .dkr.ecr..amazonaws.com`" ] }, { "attachments": {}, "cell_type": "markdown", "id": "f1b487b7", "metadata": {}, "source": [ "### Create ECR repo\n", "\n", "`! aws ecr create-repository --repository-name amazon-braket-qiskit-provider`\n", "\n", "### Build docker image\n", "\n", "`! docker build -t amazon-braket-qiskit-provider ./data/2_hybrid_jobs/`\n", "\n", "`! docker tag amazon-braket-qiskit-provider:latest .dkr.ecr..amazonaws.com/amazon-braket-qiskit-provider:latest`" ] }, { "attachments": {}, "cell_type": "markdown", "id": "cd52d73c", "metadata": {}, "source": [ "## Running your job" ] }, { "cell_type": "code", "execution_count": null, "id": "eb354922", "metadata": {}, "outputs": [], "source": [ "import time\n", "from pprint import pprint\n", "\n", "from braket.aws import AwsQuantumJob\n", "\n", "image_uri = \".dkr.ecr..amazonaws.com/amazon-braket-qiskit-provider:latest\"\n", "\n", "job = AwsQuantumJob.create(\n", " device=\"arn:aws:braket:::device/quantum-simulator/amazon/sv1\",\n", " source_module=\"data/3_hybrid_jobs/algorithm_script.py\",\n", " wait_until_complete=False,\n", " job_name=\"qiskit-job-0\",\n", " image_uri=image_uri,\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "b5123e3a", "metadata": {}, "outputs": [], "source": [ "pprint(job.arn)\n", "\n", "while job.state() not in AwsQuantumJob.TERMINAL_STATES:\n", " pprint(job.state())\n", " time.sleep(20)\n", "\n", "pprint(job.result())" ] }, { "cell_type": "code", "execution_count": null, "id": "14dbc580", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }