add docker container

1123
Feng 4 years ago
parent dc5ec4b18d
commit f92e5253a4

@ -1,3 +1,6 @@
#!/usr/bin/env python3.8
from flask import Flask, render_template, request
from onnx_modifier import onnxModifier
app = Flask(__name__)
@ -10,10 +13,10 @@ def index():
def open_model():
# https://blog.miguelgrinberg.com/post/handling-file-uploads-with-flask
onnx_file = request.files['file']
global onnx_modifier
onnx_modifier = onnxModifier.from_name_stream(onnx_file.filename, onnx_file.stream)
return 'OK', 200
@ -21,13 +24,14 @@ def open_model():
def modify_and_download_model():
modify_info = request.get_json()
# print(modify_info)
onnx_modifier.reload() # allow downloading for multiple times
onnx_modifier.modify(modify_info)
onnx_modifier.check_and_save_model()
return 'OK', 200
if __name__ == '__main__':
app.run()
app.debug = True
app.run(host="0.0.0.0")

@ -37,8 +37,7 @@ Clone the repo and install the required Python packages by
git clone git@github.com:ZhangGe6/onnx-modifier.git
cd onnx-modifier
pip install onnx
pip install flask
pip install onnx onnxruntime flask
```
Then run
@ -58,16 +57,34 @@ Click the url in the output info generated by flask (`http://127.0.0.1:5000/` fo
Click `Open Model...` to upload the ONNX model to edit. The model will be parsed and shown on the page.
## launch from a docker container
We create a docker container like this:
```bash
docker build --file Dockerfile . -t onnx-modifier
```
After building the container, we run onnx-modifier from it by mapping docker port 5000 to host port 5000
```bash
docker run -d -t --name onnx-modifier -p 5000:5000 onnx-modifier
```
Then we have access to onnx-modifer from URL <http://127.0.0.1:5000>.
# Usage
Graph-level-operation elements are placed on the left-top of the page. Currently, there are four buttons: `Refresh`, `Reset`, `Download` and `Add node`. They can do:
- `Refresh`: Refresh the model graph to preview editing effects.
> In this version, the model graph is refreshed automatically as soon as an editing operation is invoked. So this button can be used much fewer than earlier versions.
- `Reset`: Reset the whole model graph to its initial state;
- `Download`: Save the modified model into disk.
- `Add node`: Add a new node into the model.
Node-level-operation elements are all in the sidebar, which can be invoked by clicking a specific node.
Node-level-operation elements are all in the sidebar, which can be invoked by clicking a specific node.
Let's take a closer look.
@ -109,7 +126,7 @@ Change the original attribute to a new value, then we are done.
<img src="./docs/change_attr.gif" style="zoom:75%;" />
## Add new node
Sometimes we want to add new nodes into the existed model. `onnx-modifier` supports this feature experimentally now.
Sometimes we want to add new nodes into the existed model. `onnx-modifier` supports this feature experimentally now.
Note there is an `Add node` button, following with a selector elements on the top-left of the index page. To do this, what we need to do is as easy as 3 steps:

Loading…
Cancel
Save