Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Qiskit Metal to cloud-ready #16

Open
marcolincs opened this issue Aug 14, 2021 · 16 comments
Open

Qiskit Metal to cloud-ready #16

marcolincs opened this issue Aug 14, 2021 · 16 comments

Comments

@marcolincs
Copy link

marcolincs commented Aug 14, 2021

Description

Empowering a new community of students, academics and professionals with the latest and greatest Quantum design tools is an exciting endeavor, yet very challenging. One of the major roadblocks can be the accessibility of those tools. Open Source distribution grants access to the code, but it hardly helps when it comes to lowering the usability gap. Indeed, downloading, installing, setting-up, using and editing the application can at times become a major undertaking.

What if we were to provide the tool as a service? Following the Qiskit example, the Qiskit Metal team is looking into how to best make this new tool easy to access. Whether it is containers, cloud functions, other server-based or server-less approaches, we are looking for help and brains to build a plan and make this a reality. This is your chance to set this tool directions!

Mentor/s

@marcolincs, Qiskit Metal core developer

Type of participant

Proficient in moving applications to the web/cloud

Number of participants

1 or 2

Deliverable

web-enabled back-end for Qiskit Metal, and ideas/prototypes for the front-end.

@HuangJunye HuangJunye transferred this issue from qiskit-advocate/qamp-spring-21 Aug 18, 2021
@tula3and
Copy link

I am interested in this project! I worked for two cloud projects using IBM Cloud: (1) Making a database for cloud and (2) Quantum Ugly Duckling.

@VedDharkar
Copy link

Interested to know more about it and to work on it!

@HuangJunye
Copy link
Collaborator

@scottwn Can you please comment in the issue so that I can assign you?

@scottwn
Copy link

scottwn commented Sep 23, 2021

@HuangJunye please assign this issue to me

@HuangJunye HuangJunye added status: matched The project is matched and will not take any more mentees and removed status: matching in progress labels Sep 29, 2021
@HuangJunye HuangJunye removed the status: matched The project is matched and will not take any more mentees label Oct 6, 2021
@HuangJunye
Copy link
Collaborator

@scottwn @tula3and Can you please upload your presentation here by the end of today? Thank you!

@tula3and
Copy link

tula3and commented Oct 7, 2021

cloud-ready.pptx

@HuangJunye
Copy link
Collaborator

@tula3and Thanks for uploading the presentation. Can you please convert it to pdf format and rename "#16 Qiskit Metal to cloud-ready.pdf"?

@tula3and
Copy link

tula3and commented Oct 7, 2021

@HuangJunye Thanks for the correction! Always appreciate your support. 😄 #16 Qiskit Metal to cloud-ready.pdf

@HuangJunye
Copy link
Collaborator

@tula3and Thank you! Can't wait learn you have done so far!

@tula3and
Copy link

tula3and commented Nov 6, 2021

The 2nd checkpoint:

For the backend of the Qiskit Metal web app, we are planning to deploy a Flask app on IBM Cloud Code Engine. The Flask app will define necessary HTTP endpoints to interact with qiskit-metal Python functions. We intend for the app to be a lightweight, single Python module that imports qiskit-metal. For example, we have a proof of concept for get_design_name.

from flask import Flask
from qiskit_metal import designs
app = Flask(__name__)

@app.route('/get_design_name')
def get_design_name():
    design = designs.DesignPlanar()
    return design.get_design_name()

In order to run the app on Code Engine it needs to run in a Docker container. We are using IBM Cloud DevOps Toolchains to automatically pull the Flask code from GitHub and build the Docker image. We have a Tekton pipeline in the toolchain which will deploy the app to Code Engine after building the container.

Our current challenge is building a Docker image that can pip install qiskit-metal. Qiskit Metal requires a number of scientific computing libraries that can be relatively difficult to configure and install. Initially we tried to use a Python base image and install dependencies from various sources. This proved quite difficult, so the next try was to use an Intel scientific computing base image that included many dependencies. That image was extremely heavy and ran up against volume size issues in the toolchain. Next we are going to attempt to use an Anaconda base image.

Once we have qiskit-metal installed in a container, it should be straightforward to define the rest of the HTTP endpoints needed to support the app frontend.

We will also get a json file of user defined circuit from the frontend and then execute it. The result will be converted into a json file. We will visualize this data in the app frontend.

We do not have a sample yet, so we made a simple json file to test the visualization tool: data.json. You can check how the sample react app works like in the gif below. It just visualizes data.json to table and bar (from nivo). Types of graphs will be changed depending on the result file.

@tula3and
Copy link

tula3and commented Nov 6, 2021

Visualization - Chrome

@tula3and
Copy link

resized1920

@obrienpja
Copy link

Hi! Is it alright if I join in on this issue?

@marcolincs
Copy link
Author

marcolincs commented Nov 18, 2021

Hi @obrienpja , please reach out to @quantum-quant . You can chat with him on the Qiskit slack workspace.

@tula3and
Copy link

tula3and commented Dec 9, 2021

For the final showcase in session 1: #16 Qiskit Metal to cloud-ready.pdf

@tula3and
Copy link

Updated version of the first comment.


Description

(no changes)

Mentor/s

@marcolincs, @quantum-quant

Participants

@scottwn, @tula3and

Deliverable

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment