blob: 00142c87d97ebcca475d6ba6b97881b9750e07d8 [file] [log] [blame]
"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5774],{3905:function(e,n,t){t.d(n,{Zo:function(){return l},kt:function(){return d}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?s(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):s(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function p(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},s=Object.keys(e);for(r=0;r<s.length;r++)t=s[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)t=s[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var o=r.createContext({}),m=function(e){var n=r.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},l=function(e){var n=m(e.components);return r.createElement(o.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,s=e.originalType,o=e.parentName,l=p(e,["components","mdxType","originalType","parentName"]),u=m(t),d=a,g=u["".concat(o,".").concat(d)]||u[d]||c[d]||s;return t?r.createElement(g,i(i({ref:n},l),{},{components:t})):r.createElement(g,i({ref:n},l))}));function d(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var s=t.length,i=new Array(s);i[0]=u;var p={};for(var o in n)hasOwnProperty.call(n,o)&&(p[o]=n[o]);p.originalType=e,p.mdxType="string"==typeof e?e:a,i[1]=p;for(var m=2;m<s;m++)i[m]=t[m];return r.createElement.apply(null,i)}return r.createElement.apply(null,t)}u.displayName="MDXCreateElement"},2589:function(e,n,t){t.r(n),t.d(n,{assets:function(){return l},contentTitle:function(){return o},default:function(){return d},frontMatter:function(){return p},metadata:function(){return m},toc:function(){return c}});var r=t(7462),a=t(3366),s=(t(7294),t(3905)),i=["components"],p={title:"Experiment REST API"},o=void 0,m={unversionedId:"api/experiment",id:"version-0.6.0/api/experiment",title:"Experiment REST API",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/api/experiment.md",sourceDirName:"api",slug:"/api/experiment",permalink:"/docs/0.6.0/api/experiment",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/api/experiment.md",tags:[],version:"0.6.0",frontMatter:{title:"Experiment REST API"},sidebar:"api",previous:{title:"Environment REST API",permalink:"/docs/0.6.0/api/environment"},next:{title:"Experiment Template REST API",permalink:"/docs/0.6.0/api/experiment-template"}},l={},c=[{value:"Create Experiment (Using Anonymous/Embedded Environment)",id:"create-experiment-using-anonymousembedded-environment",level:2},{value:"Create Experiment (Using Pre-defined/Stored Environment)",id:"create-experiment-using-pre-definedstored-environment",level:2},{value:"List experiment",id:"list-experiment",level:3},{value:"Get experiment",id:"get-experiment",level:3},{value:"Patch experiment",id:"patch-experiment",level:3},{value:"Delete experiment",id:"delete-experiment",level:3},{value:"List experiment Log",id:"list-experiment-log",level:3},{value:"Get experiment Log",id:"get-experiment-log",level:3}],u={toc:c};function d(e){var n=e.components,t=(0,a.Z)(e,i);return(0,s.kt)("wrapper",(0,r.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("blockquote",null,(0,s.kt)("p",{parentName:"blockquote"},"Note: The Experiment API is in the alpha stage which is subjected to incompatible changes in\nfuture releases.")),(0,s.kt)("h2",{id:"create-experiment-using-anonymousembedded-environment"},"Create Experiment (Using Anonymous/Embedded Environment)"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"POST /api/v1/experiment")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Request")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n "meta": {\n "name": "tf-mnist-json",\n "namespace": "default",\n "framework": "TensorFlow",\n "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150",\n "envVars": {\n "ENV_1": "ENV1"\n }\n },\n "environment": {\n "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n },\n "spec": {\n "Ps": {\n "replicas": 1,\n "resources": "cpu=1,memory=1024M"\n },\n "Worker": {\n "replicas": 1,\n "resources": "cpu=1,memory=2048M"\n }\n }\n}\n\' http://127.0.0.1:32080/api/v1/experiment\n')),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Response:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "OK",\n "code": 200,\n "result": {\n "experimentId": "experiment_1586156073228_0001",\n "name": "tf-mnist-json",\n "uid": "28e39dcd-77d4-11ea-8dbb-0242ac110003",\n "status": "Accepted",\n "acceptedTime": "2020-06-13T22:59:29.000+08:00",\n "spec": {\n "meta": {\n "name": "tf-mnist-json",\n "namespace": "default",\n "framework": "TensorFlow",\n "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150",\n "envVars": {\n "ENV_1": "ENV1"\n }\n },\n "environment": {\n "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n },\n "spec": {\n "Ps": {\n "replicas": 1,\n "resources": "cpu=1,memory=1024M"\n },\n "Worker": {\n "replicas": 1,\n "resources": "cpu=1,memory=2048M"\n }\n }\n }\n }\n}\n')),(0,s.kt)("h2",{id:"create-experiment-using-pre-definedstored-environment"},"Create Experiment (Using Pre-defined/Stored Environment)"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"POST /api/v1/experiment")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Request")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},'curl -X POST -H "Content-Type: application/json" -d \'\n{\n "meta": {\n "name": "tf-mnist-json",\n "namespace": "default",\n "framework": "TensorFlow",\n "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150",\n "envVars": {\n "ENV_1": "ENV1"\n }\n },\n "environment": {\n "name": "my-submarine-env"\n },\n "spec": {\n "Ps": {\n "replicas": 1,\n "resources": "cpu=1,memory=1024M"\n },\n "Worker": {\n "replicas": 1,\n "resources": "cpu=1,memory=2048M"\n }\n }\n}\n\' http://127.0.0.1:32080/api/v1/experiment\n')),(0,s.kt)("p",null,'Above example assume environment "my-submarine-env" already exists in Submarine. Please refer Environment API Reference doc to Create/Update/Delete/List Environment REST API\'s'),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Response:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "OK",\n "code": 200,\n "result": {\n "experimentId": "experiment_1586156073228_0001",\n "name": "tf-mnist-json",\n "uid": "28e39dcd-77d4-11ea-8dbb-0242ac110003",\n "status": "Accepted",\n "acceptedTime": "2020-06-13T22:59:29.000+08:00",\n "spec": {\n "meta": {\n "name": "tf-mnist-json",\n "namespace": "default",\n "framework": "TensorFlow",\n "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150",\n "envVars": {\n "ENV_1": "ENV1"\n }\n },\n "environment": {\n "name": "my-submarine-env"\n },\n "spec": {\n "Ps": {\n "replicas": 1,\n "resources": "cpu=1,memory=1024M"\n },\n "Worker": {\n "replicas": 1,\n "resources": "cpu=1,memory=2048M"\n }\n }\n }\n }\n}\n')),(0,s.kt)("h3",{id:"list-experiment"},"List experiment"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"GET /api/v1/experiment")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Request:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment\n")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Response:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "OK",\n "code": 200,\n "result": [\n {\n "experimentId": "experiment_1592057447228_0001",\n "name": "tf-mnist-json",\n "uid": "28e39dcd-77d4-11ea-8dbb-0242ac110003",\n "status": "Accepted",\n "acceptedTime": "2020-06-13T22:59:29.000+08:00",\n "spec": {\n "meta": {\n "name": "tf-mnist-json",\n "namespace": "default",\n "framework": "TensorFlow",\n "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150",\n "envVars": {\n "ENV_1": "ENV1"\n }\n },\n "environment": {\n "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n },\n "spec": {\n "Ps": {\n "replicas": 1,\n "resources": "cpu=1,memory=1024M"\n },\n "Worker": {\n "replicas": 1,\n "resources": "cpu=1,memory=2048M"\n }\n }\n }\n },\n {\n "experimentId": "experiment_1592057447228_0002",\n "name": "mnist",\n "uid": "38e39dcd-77d4-11ea-8dbb-0242ac110003",\n "status": "Accepted",\n "acceptedTime": "2020-06-13T22:19:29.000+08:00",\n "spec": {\n "meta": {\n "name": "pytorch-mnist-json",\n "namespace": "default",\n "framework": "PyTorch",\n "cmd": "python /var/mnist.py --backend gloo",\n "envVars": {\n "ENV_1": "ENV1"\n }\n },\n "environment": {\n "image": "apache/submarine:pytorch-dist-mnist-1.0"\n },\n "spec": {\n "Master": {\n "replicas": 1,\n "resources": "cpu=1,memory=1024M"\n },\n "Worker": {\n "replicas": 1,\n "resources": "cpu=1,memory=1024M"\n }\n }\n }\n }\n ]\n}\n')),(0,s.kt)("h3",{id:"get-experiment"},"Get experiment"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/{id}")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Request:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001\n")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Response:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "OK",\n "code": 200,\n "result": {\n "experimentId": "experiment_1592057447228_0001",\n "name": "tf-mnist-json",\n "uid": "28e39dcd-77d4-11ea-8dbb-0242ac110003",\n "status": "Accepted",\n "acceptedTime": "2020-06-13T22:59:29.000+08:00",\n "spec": {\n "meta": {\n "name": "tf-mnist-json",\n "namespace": "default",\n "framework": "TensorFlow",\n "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150",\n "envVars": {\n "ENV_1": "ENV1"\n }\n },\n "environment": {\n "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n },\n "spec": {\n "Ps": {\n "replicas": 1,\n "resources": "cpu=1,memory=1024M"\n },\n "Worker": {\n "replicas": 1,\n "resources": "cpu=1,memory=2048M"\n }\n }\n }\n }\n}\n')),(0,s.kt)("h3",{id:"patch-experiment"},"Patch experiment"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"PATCH /api/v1/experiment/{id}")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Request:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},'curl -X PATCH -H "Content-Type: application/json" -d \'\n{\n "meta": {\n "name": "tf-mnist-json",\n "namespace": "default",\n "framework": "TensorFlow",\n "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150",\n "envVars": {\n "ENV_1": "ENV1"\n }\n },\n "environment": {\n "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n },\n "spec": {\n "Ps": {\n "replicas": 1,\n "resources": "cpu=1,memory=1024M"\n },\n "Worker": {\n "replicas": 2,\n "resources": "cpu=1,memory=2048M"\n }\n }\n}\n\' http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001\n')),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Response:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "OK",\n "code": 200,\n "success": true,\n "result": {\n "meta": {\n "name": "tf-mnist-json",\n "namespace": "default",\n "framework": "TensorFlow",\n "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150",\n "envVars": {\n "ENV_1": "ENV1"\n }\n },\n "environment": {\n "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n },\n "spec": {\n "Ps": {\n "replicas": 1,\n "resources": "cpu=1,memory=1024M"\n },\n "Worker": {\n "replicas": 2,\n "resources": "cpu=1,memory=2048M"\n }\n }\n }\n}\n')),(0,s.kt)("h3",{id:"delete-experiment"},"Delete experiment"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/{id}")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Request:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"curl -X DELETE http://127.0.0.1:32080/api/v1/experiment/experiment_1592057447228_0001\n")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Response:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "OK",\n "code": 200,\n "result": {\n "experimentId": "experiment_1586156073228_0001",\n "name": "tf-mnist-json",\n "uid": "28e39dcd-77d4-11ea-8dbb-0242ac110003",\n "status": "Accepted",\n "acceptedTime": "2020-06-13T22:59:29.000+08:00",\n "spec": {\n "meta": {\n "name": "tf-mnist-json",\n "namespace": "default",\n "framework": "TensorFlow",\n "cmd": "python /var/tf_mnist/mnist_with_summaries.py --log_dir=/train/log --learning_rate=0.01 --batch_size=150",\n "envVars": {\n "ENV_1": "ENV1"\n }\n },\n "environment": {\n "image": "apache/submarine:tf-mnist-with-summaries-1.0"\n },\n "spec": {\n "Ps": {\n "replicas": 1,\n "resources": "cpu=1,memory=1024M"\n },\n "Worker": {\n "replicas": 2,\n "resources": "cpu=1,memory=2048M"\n }\n }\n }\n }\n}\n')),(0,s.kt)("h3",{id:"list-experiment-log"},"List experiment Log"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/logs")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Request:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs\n")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Response:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "OK",\n "code": 200,\n "success": null,\n "message": null,\n "result": [\n {\n "experimentId": "experiment_1589199154923_0001",\n "logContent": [\n {\n "podName": "mnist-worker-0",\n "podLog": null\n }\n ]\n },\n {\n "experimentId": "experiment_1589199154923_0002",\n "logContent": [\n {\n "podName": "pytorch-dist-mnist-gloo-master-0",\n "podLog": null\n },\n {\n "podName": "pytorch-dist-mnist-gloo-worker-0",\n "podLog": null\n }\n ]\n }\n ],\n "attributes": {}\n}\n')),(0,s.kt)("h3",{id:"get-experiment-log"},"Get experiment Log"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"GET /api/v1/experiment/logs/{id}")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Request:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sh"},"curl -X GET http://127.0.0.1:32080/api/v1/experiment/logs/experiment_1589199154923_0002\n")),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Example Response:")),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n "status": "OK",\n "code": 200,\n "success": null,\n "message": null,\n "result": {\n "experimentId": "experiment_1589199154923_0002",\n "logContent": [\n {\n "podName": "pytorch-dist-mnist-gloo-master-0",\n "podLog": "Using distributed PyTorch with gloo backend\\nDownloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\\nDownloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz\\nDownloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz\\nDownloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz\\nProcessing...\\nDone!\\nTrain Epoch: 1 [0/60000 (0%)]\\tloss=2.3000\\nTrain Epoch: 1 [640/60000 (1%)]\\tloss=2.2135\\nTrain Epoch: 1 [1280/60000 (2%)]\\tloss=2.1704\\nTrain Epoch: 1 [1920/60000 (3%)]\\tloss=2.0766\\nTrain Epoch: 1 [2560/60000 (4%)]\\tloss=1.8679\\nTrain Epoch: 1 [3200/60000 (5%)]\\tloss=1.4135\\nTrain Epoch: 1 [3840/60000 (6%)]\\tloss=1.0003\\nTrain Epoch: 1 [4480/60000 (7%)]\\tloss=0.7762\\nTrain Epoch: 1 [5120/60000 (9%)]\\tloss=0.4598\\nTrain Epoch: 1 [5760/60000 (10%)]\\tloss=0.4860\\nTrain Epoch: 1 [6400/60000 (11%)]\\tloss=0.4389\\nTrain Epoch: 1 [7040/60000 (12%)]\\tloss=0.4084\\nTrain Epoch: 1 [7680/60000 (13%)]\\tloss=0.4602\\nTrain Epoch: 1 [8320/60000 (14%)]\\tloss=0.4289\\nTrain Epoch: 1 [8960/60000 (15%)]\\tloss=0.3990\\nTrain Epoch: 1 [9600/60000 (16%)]\\tloss=0.3852\\n"\n },\n {\n "podName": "pytorch-dist-mnist-gloo-worker-0",\n "podLog": "Using distributed PyTorch with gloo backend\\nDownloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\\nDownloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz\\nDownloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz\\nDownloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz\\nProcessing...\\nDone!\\nTrain Epoch: 1 [0/60000 (0%)]\\tloss=2.3000\\nTrain Epoch: 1 [640/60000 (1%)]\\tloss=2.2135\\nTrain Epoch: 1 [1280/60000 (2%)]\\tloss=2.1704\\nTrain Epoch: 1 [1920/60000 (3%)]\\tloss=2.0766\\nTrain Epoch: 1 [2560/60000 (4%)]\\tloss=1.8679\\nTrain Epoch: 1 [3200/60000 (5%)]\\tloss=1.4135\\nTrain Epoch: 1 [3840/60000 (6%)]\\tloss=1.0003\\nTrain Epoch: 1 [4480/60000 (7%)]\\tloss=0.7762\\nTrain Epoch: 1 [5120/60000 (9%)]\\tloss=0.4598\\nTrain Epoch: 1 [5760/60000 (10%)]\\tloss=0.4860\\nTrain Epoch: 1 [6400/60000 (11%)]\\tloss=0.4389\\nTrain Epoch: 1 [7040/60000 (12%)]\\tloss=0.4084\\nTrain Epoch: 1 [7680/60000 (13%)]\\tloss=0.4602\\nTrain Epoch: 1 [8320/60000 (14%)]\\tloss=0.4289\\nTrain Epoch: 1 [8960/60000 (15%)]\\tloss=0.3990\\nTrain Epoch: 1 [9600/60000 (16%)]\\tloss=0.3852\\n"\n }\n ]\n },\n "attributes": {}\n}\n')))}d.isMDXComponent=!0}}]);